rom: build.rs: error handling
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
This commit is contained in:
parent
339679b826
commit
e70a19ec0e
1 changed files with 46 additions and 2 deletions
48
rom/build.rs
48
rom/build.rs
|
@ -13,15 +13,58 @@
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
use std::fs::File;
|
use std::env;
|
||||||
|
use std::fmt;
|
||||||
|
use std::fs::{self, File};
|
||||||
use std::io::{BufWriter, Write};
|
use std::io::{BufWriter, Write};
|
||||||
|
use std::error::Error as StdError;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
use quote::{format_ident, quote};
|
use quote::{format_ident, quote};
|
||||||
|
|
||||||
fn main() {
|
#[derive(Debug, Eq, PartialEq)]
|
||||||
|
pub enum Error {
|
||||||
|
EnvVariableError(env::VarError),
|
||||||
|
ROMDoesntExist,
|
||||||
|
UnableToOpenROM,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl StdError for Error {}
|
||||||
|
|
||||||
|
impl fmt::Display for Error {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
|
||||||
|
match self {
|
||||||
|
Error::EnvVariableError(e) => write!(f, "POKEMON_ROM env var error: {}", e),
|
||||||
|
Error::ROMDoesntExist => write!(f, "ROM doesn't exist"),
|
||||||
|
Error::UnableToOpenROM => write!(f, "Unable to open ROM"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<env::VarError> for Error {
|
||||||
|
fn from(err: env::VarError) -> Error {
|
||||||
|
Error::EnvVariableError(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_rom() -> Result<Vec<u8>, Error> {
|
||||||
|
let env_romp = env::var("POKEMON_ROM")?;
|
||||||
|
let romp = Path::new(&env_romp);
|
||||||
|
|
||||||
|
if ! romp.exists() {
|
||||||
|
return Err(Error::ROMDoesntExist);
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(match fs::read(romp) {
|
||||||
|
Ok(v) => v,
|
||||||
|
Err(_) => return Err(Error::UnableToOpenROM),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() -> Result<(), Error> {
|
||||||
let output = Path::new(&env::var("OUT_DIR").unwrap()).join("output.rs");
|
let output = Path::new(&env::var("OUT_DIR").unwrap()).join("output.rs");
|
||||||
let mut output = BufWriter::new(File::create(&output).unwrap());
|
let mut output = BufWriter::new(File::create(&output).unwrap());
|
||||||
|
let _rom: Vec<u8> = get_rom()?;
|
||||||
|
|
||||||
let pkmn_names: Vec<_> = [
|
let pkmn_names: Vec<_> = [
|
||||||
"Rhydon",
|
"Rhydon",
|
||||||
|
@ -40,4 +83,5 @@ fn main() {
|
||||||
};
|
};
|
||||||
|
|
||||||
write!(output, "{}", tokens).unwrap();
|
write!(output, "{}", tokens).unwrap();
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue