asdf
This commit is contained in:
parent
33691e38df
commit
2893bdfe62
100
Cargo.lock
generated
100
Cargo.lock
generated
|
@ -2,12 +2,53 @@
|
||||||
# It is not intended for manual editing.
|
# It is not intended for manual editing.
|
||||||
version = 3
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ansi_term"
|
||||||
|
version = "0.12.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
|
||||||
|
dependencies = [
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "atty"
|
||||||
|
version = "0.2.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
|
||||||
|
dependencies = [
|
||||||
|
"hermit-abi",
|
||||||
|
"libc",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bitflags"
|
||||||
|
version = "1.3.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cfg-if"
|
name = "cfg-if"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clap"
|
||||||
|
version = "2.34.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
|
||||||
|
dependencies = [
|
||||||
|
"ansi_term",
|
||||||
|
"atty",
|
||||||
|
"bitflags",
|
||||||
|
"strsim",
|
||||||
|
"textwrap",
|
||||||
|
"unicode-width",
|
||||||
|
"vec_map",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "getrandom"
|
name = "getrandom"
|
||||||
version = "0.2.12"
|
version = "0.2.12"
|
||||||
|
@ -19,6 +60,15 @@ dependencies = [
|
||||||
"wasi",
|
"wasi",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hermit-abi"
|
||||||
|
version = "0.1.19"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itoa"
|
name = "itoa"
|
||||||
version = "1.0.10"
|
version = "1.0.10"
|
||||||
|
@ -41,6 +91,7 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
|
||||||
name = "pokerust"
|
name = "pokerust"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"clap",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"rand",
|
"rand",
|
||||||
"serde",
|
"serde",
|
||||||
|
@ -138,6 +189,12 @@ dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "strsim"
|
||||||
|
version = "0.8.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "2.0.55"
|
version = "2.0.55"
|
||||||
|
@ -149,14 +206,57 @@ dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "textwrap"
|
||||||
|
version = "0.11.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
|
||||||
|
dependencies = [
|
||||||
|
"unicode-width",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-ident"
|
name = "unicode-ident"
|
||||||
version = "1.0.12"
|
version = "1.0.12"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-width"
|
||||||
|
version = "0.1.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "vec_map"
|
||||||
|
version = "0.8.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasi"
|
name = "wasi"
|
||||||
version = "0.11.0+wasi-snapshot-preview1"
|
version = "0.11.0+wasi-snapshot-preview1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
|
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi"
|
||||||
|
version = "0.3.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
||||||
|
dependencies = [
|
||||||
|
"winapi-i686-pc-windows-gnu",
|
||||||
|
"winapi-x86_64-pc-windows-gnu",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-i686-pc-windows-gnu"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-x86_64-pc-windows-gnu"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||||
|
|
|
@ -10,3 +10,4 @@ rand = "0.8"
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
once_cell = "1.8.0"
|
once_cell = "1.8.0"
|
||||||
|
clap = { version = "2" }
|
||||||
|
|
108
src/main.rs
108
src/main.rs
|
@ -2,9 +2,6 @@ use rand::Rng;
|
||||||
use std::io::prelude::*;
|
use std::io::prelude::*;
|
||||||
|
|
||||||
// set global constants
|
// set global constants
|
||||||
const PROGRAM: once_cell::sync::Lazy<std::path::PathBuf> =
|
|
||||||
once_cell::sync::Lazy::new(|| std::env::current_exe().unwrap());
|
|
||||||
|
|
||||||
const PROGRAM_DIR: once_cell::sync::Lazy<std::path::PathBuf> = once_cell::sync::Lazy::new(|| {
|
const PROGRAM_DIR: once_cell::sync::Lazy<std::path::PathBuf> = once_cell::sync::Lazy::new(|| {
|
||||||
std::path::PathBuf::from(std::env::current_exe().unwrap().parent().unwrap())
|
std::path::PathBuf::from(std::env::current_exe().unwrap().parent().unwrap())
|
||||||
});
|
});
|
||||||
|
@ -12,6 +9,9 @@ const PROGRAM_DIR: once_cell::sync::Lazy<std::path::PathBuf> = once_cell::sync::
|
||||||
const COLORSCRIPTS_DIR: once_cell::sync::Lazy<std::path::PathBuf> =
|
const COLORSCRIPTS_DIR: once_cell::sync::Lazy<std::path::PathBuf> =
|
||||||
once_cell::sync::Lazy::new(|| PROGRAM_DIR.join("colorscripts"));
|
once_cell::sync::Lazy::new(|| PROGRAM_DIR.join("colorscripts"));
|
||||||
|
|
||||||
|
const POKEMON_DATA_PATH: once_cell::sync::Lazy<std::path::PathBuf> =
|
||||||
|
once_cell::sync::Lazy::new(|| PROGRAM_DIR.join("pokemon.json"));
|
||||||
|
|
||||||
const REGULAR_SUBDIR: &str = "regular";
|
const REGULAR_SUBDIR: &str = "regular";
|
||||||
const SHINY_SUBDIR: &str = "shiny";
|
const SHINY_SUBDIR: &str = "shiny";
|
||||||
|
|
||||||
|
@ -42,8 +42,8 @@ fn print_file(filepath: &std::path::Path) -> std::io::Result<()> {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn list_pokemon_names(filepath: &std::path::Path) -> std::io::Result<()> {
|
fn list_pokemon_names() -> std::io::Result<()> {
|
||||||
let file = std::fs::File::open(filepath)?;
|
let file = std::fs::File::open(POKEMON_DATA_PATH.as_path())?;
|
||||||
let reader = std::io::BufReader::new(file);
|
let reader = std::io::BufReader::new(file);
|
||||||
let pokemon_json: serde_json::Value = serde_json::from_reader(reader)?;
|
let pokemon_json: serde_json::Value = serde_json::from_reader(reader)?;
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ fn show_pokemon_by_name(
|
||||||
let color_subdir = if shiny { SHINY_SUBDIR } else { REGULAR_SUBDIR };
|
let color_subdir = if shiny { SHINY_SUBDIR } else { REGULAR_SUBDIR };
|
||||||
let size_subdir = if is_large { LARGE_SUBDIR } else { SMALL_SUBDIR };
|
let size_subdir = if is_large { LARGE_SUBDIR } else { SMALL_SUBDIR };
|
||||||
|
|
||||||
let file = std::fs::File::open(PROGRAM_DIR.join("pokemon.json"))?;
|
let file = std::fs::File::open(POKEMON_DATA_PATH.as_path())?;
|
||||||
let reader = std::io::BufReader::new(file);
|
let reader = std::io::BufReader::new(file);
|
||||||
let pokemon_json: serde_json::Value = serde_json::from_reader(reader)?;
|
let pokemon_json: serde_json::Value = serde_json::from_reader(reader)?;
|
||||||
|
|
||||||
|
@ -145,20 +145,20 @@ fn show_random_pokemon(
|
||||||
) -> std::io::Result<()> {
|
) -> std::io::Result<()> {
|
||||||
let mut rng = rand::thread_rng();
|
let mut rng = rand::thread_rng();
|
||||||
|
|
||||||
let (start_gen, end_gen) = if generations.is_empty() {
|
let start_gen = if generations.is_empty() {
|
||||||
("1", "8")
|
"1"
|
||||||
} else if generations.contains(",") {
|
} else if generations.contains(",") {
|
||||||
let gens: Vec<&str> = generations.split(",").collect();
|
let gens: Vec<&str> = generations.split(",").collect();
|
||||||
let gen = gens[rng.gen_range(0..gens.len())];
|
let gen = gens[rng.gen_range(0..gens.len())];
|
||||||
(gen, gen)
|
gen
|
||||||
} else if generations.contains("-") {
|
} else if generations.contains("-") {
|
||||||
let gens: Vec<&str> = generations.split("-").collect();
|
let gens: Vec<&str> = generations.split("-").collect();
|
||||||
(gens[0], gens[1])
|
gens[0]
|
||||||
} else {
|
} else {
|
||||||
(generations, generations)
|
generations
|
||||||
};
|
};
|
||||||
|
|
||||||
let file = std::fs::File::open(PROGRAM_DIR.join("pokemon.json"))?;
|
let file = std::fs::File::open(POKEMON_DATA_PATH.as_path())?;
|
||||||
let reader = std::io::BufReader::new(file);
|
let reader = std::io::BufReader::new(file);
|
||||||
let pokemon_json: serde_json::Value = serde_json::from_reader(reader)?;
|
let pokemon_json: serde_json::Value = serde_json::from_reader(reader)?;
|
||||||
let pokemon: Vec<String> = pokemon_json
|
let pokemon: Vec<String> = pokemon_json
|
||||||
|
@ -187,10 +187,84 @@ fn show_random_pokemon(
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// fn main() {
|
||||||
|
// // println!("{}", PROGRAM.display());
|
||||||
|
// // println!("{}", PROGRAM_DIR.display());
|
||||||
|
// // println!("{}", COLORSCRIPTS_DIR.display());
|
||||||
|
// // show_pokemon_by_name("eevee", false, false, false, Some("gmax")).unwrap();
|
||||||
|
// show_random_pokemon("7-8", true, false, false);
|
||||||
|
// list_pokemon_names();
|
||||||
|
// }
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
// println!("{}", PROGRAM.display());
|
let matches = clap::App::new("pokemon-colorscripts")
|
||||||
// println!("{}", PROGRAM_DIR.display());
|
.about("CLI utility to print out unicode image of a pokemon in your shell")
|
||||||
// println!("{}", COLORSCRIPTS_DIR.display());
|
.arg(
|
||||||
// show_pokemon_by_name("eevee", false, false, false, Some("gmax")).unwrap();
|
clap::Arg::with_name("list")
|
||||||
show_random_pokemon("1-999", true, false, false);
|
.short("l")
|
||||||
|
.long("list")
|
||||||
|
.help("Print list of all pokemon"),
|
||||||
|
)
|
||||||
|
.arg(
|
||||||
|
clap::Arg::with_name("name")
|
||||||
|
.short("n")
|
||||||
|
.long("name")
|
||||||
|
.value_name("POKEMON NAME")
|
||||||
|
.help("Select pokemon by name. Generally spelled like in the games."),
|
||||||
|
)
|
||||||
|
.arg(
|
||||||
|
clap::Arg::with_name("form")
|
||||||
|
.short("f")
|
||||||
|
.long("form")
|
||||||
|
.value_name("FORM")
|
||||||
|
.help("Show an alternate form of a pokemon"),
|
||||||
|
)
|
||||||
|
.arg(
|
||||||
|
clap::Arg::with_name("no-title")
|
||||||
|
.long("no-title")
|
||||||
|
.help("Do not display pokemon name"),
|
||||||
|
)
|
||||||
|
.arg(
|
||||||
|
clap::Arg::with_name("shiny")
|
||||||
|
.short("s")
|
||||||
|
.long("shiny")
|
||||||
|
.help("Show the shiny version of the pokemon instead"),
|
||||||
|
)
|
||||||
|
.arg(
|
||||||
|
clap::Arg::with_name("big")
|
||||||
|
.short("b")
|
||||||
|
.long("big")
|
||||||
|
.help("Show a larger version of the sprite"),
|
||||||
|
)
|
||||||
|
.arg(
|
||||||
|
clap::Arg::with_name("random")
|
||||||
|
.short("r")
|
||||||
|
.long("random")
|
||||||
|
.value_name("GENERATION")
|
||||||
|
.help("Show a random pokemon. This flag can optionally be followed by a generation number or range (1-8) to show random pokemon from a specific generation or range of generations. The generations can be provided as a continuous range (eg. 1-3) or as a list of generations (1,3,6)"),
|
||||||
|
)
|
||||||
|
.get_matches();
|
||||||
|
|
||||||
|
if matches.is_present("list") {
|
||||||
|
list_pokemon_names().unwrap();
|
||||||
|
} else if matches.is_present("name") {
|
||||||
|
let name = matches.value_of("name").unwrap();
|
||||||
|
let no_title = matches.is_present("no-title");
|
||||||
|
let shiny = matches.is_present("shiny");
|
||||||
|
let big = matches.is_present("big");
|
||||||
|
let form = matches.value_of("form");
|
||||||
|
show_pokemon_by_name(name, no_title, shiny, big, form).unwrap();
|
||||||
|
} else if matches.is_present("random") {
|
||||||
|
let random = matches.value_of("random").unwrap_or("");
|
||||||
|
let no_title = matches.is_present("no-title");
|
||||||
|
let shiny = matches.is_present("shiny");
|
||||||
|
let big = matches.is_present("big");
|
||||||
|
if matches.is_present("form") {
|
||||||
|
println!("--form flag unexpected with --random");
|
||||||
|
std::process::exit(1);
|
||||||
|
}
|
||||||
|
show_random_pokemon(random, no_title, shiny, big).unwrap();
|
||||||
|
} else {
|
||||||
|
show_random_pokemon("", true, false, false).unwrap();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue