rom: build.rs script to generate Pokemon structs
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
This commit is contained in:
parent
0dcff8ed80
commit
339679b826
2 changed files with 52 additions and 0 deletions
9
rom/Cargo.toml
Normal file
9
rom/Cargo.toml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
[package]
|
||||||
|
name = "rom"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["Maxime “pep” Buquet <pep@bouah.net>"]
|
||||||
|
edition = "2021"
|
||||||
|
license = "AGPL-3.0-or-later"
|
||||||
|
|
||||||
|
[build-dependencies]
|
||||||
|
quote = "1.0"
|
43
rom/build.rs
Normal file
43
rom/build.rs
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
// Copyright (C) 2021 "Maxime “pep” Buquet <pep@bouah.net>"
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify it
|
||||||
|
// under the terms of the GNU Affero General Public License as published by the
|
||||||
|
// Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
// option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
// 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/>.
|
||||||
|
|
||||||
|
use std::fs::File;
|
||||||
|
use std::io::{BufWriter, Write};
|
||||||
|
use std::path::Path;
|
||||||
|
|
||||||
|
use quote::{format_ident, quote};
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let output = Path::new(&env::var("OUT_DIR").unwrap()).join("output.rs");
|
||||||
|
let mut output = BufWriter::new(File::create(&output).unwrap());
|
||||||
|
|
||||||
|
let pkmn_names: Vec<_> = [
|
||||||
|
"Rhydon",
|
||||||
|
"Kangashkan",
|
||||||
|
"NidoranM",
|
||||||
|
].iter()
|
||||||
|
.map(|n| format_ident!("{}", n))
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
let tokens = quote! {
|
||||||
|
/// Generated file containing various resources extracted from the provided ROM.
|
||||||
|
|
||||||
|
pub enum PokemonNames {
|
||||||
|
#(#pkmn_names),*
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
write!(output, "{}", tokens).unwrap();
|
||||||
|
}
|
Loading…
Reference in a new issue