feat(scaffold): overwrite argument (#63)
This commit is contained in:
parent
e2062e33fd
commit
3657f8c6dc
2 changed files with 15 additions and 7 deletions
|
@ -20,6 +20,7 @@ mod args {
|
||||||
Scaffold {
|
Scaffold {
|
||||||
day: Day,
|
day: Day,
|
||||||
download: bool,
|
download: bool,
|
||||||
|
overwrite: bool,
|
||||||
},
|
},
|
||||||
Solve {
|
Solve {
|
||||||
day: Day,
|
day: Day,
|
||||||
|
@ -65,6 +66,7 @@ mod args {
|
||||||
Some("scaffold") => AppArguments::Scaffold {
|
Some("scaffold") => AppArguments::Scaffold {
|
||||||
day: args.free_from_str()?,
|
day: args.free_from_str()?,
|
||||||
download: args.contains("--download"),
|
download: args.contains("--download"),
|
||||||
|
overwrite: args.contains("--overwrite"),
|
||||||
},
|
},
|
||||||
Some("solve") => AppArguments::Solve {
|
Some("solve") => AppArguments::Solve {
|
||||||
day: args.free_from_str()?,
|
day: args.free_from_str()?,
|
||||||
|
@ -104,8 +106,8 @@ fn main() {
|
||||||
AppArguments::Time { day, all, store } => time::handle(day, all, store),
|
AppArguments::Time { day, all, store } => time::handle(day, all, store),
|
||||||
AppArguments::Download { day } => download::handle(day),
|
AppArguments::Download { day } => download::handle(day),
|
||||||
AppArguments::Read { day } => read::handle(day),
|
AppArguments::Read { day } => read::handle(day),
|
||||||
AppArguments::Scaffold { day, download } => {
|
AppArguments::Scaffold { day, download, overwrite } => {
|
||||||
scaffold::handle(day);
|
scaffold::handle(day, overwrite);
|
||||||
if download {
|
if download {
|
||||||
download::handle(day);
|
download::handle(day);
|
||||||
}
|
}
|
||||||
|
@ -120,7 +122,7 @@ fn main() {
|
||||||
AppArguments::Today => {
|
AppArguments::Today => {
|
||||||
match Day::today() {
|
match Day::today() {
|
||||||
Some(day) => {
|
Some(day) => {
|
||||||
scaffold::handle(day);
|
scaffold::handle(day, false);
|
||||||
download::handle(day);
|
download::handle(day);
|
||||||
read::handle(day)
|
read::handle(day)
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,14 @@ use crate::template::Day;
|
||||||
const MODULE_TEMPLATE: &str =
|
const MODULE_TEMPLATE: &str =
|
||||||
include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/template.txt"));
|
include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/template.txt"));
|
||||||
|
|
||||||
fn safe_create_file(path: &str) -> Result<File, std::io::Error> {
|
fn safe_create_file(path: &str, overwrite: bool) -> Result<File, std::io::Error> {
|
||||||
OpenOptions::new().write(true).create_new(true).open(path)
|
let mut file = OpenOptions::new();
|
||||||
|
if overwrite {
|
||||||
|
file.create(true);
|
||||||
|
} else {
|
||||||
|
file.create_new(true);
|
||||||
|
}
|
||||||
|
file.truncate(true).write(true).open(path)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn create_file(path: &str) -> Result<File, std::io::Error> {
|
fn create_file(path: &str) -> Result<File, std::io::Error> {
|
||||||
|
@ -21,12 +27,12 @@ fn create_file(path: &str) -> Result<File, std::io::Error> {
|
||||||
.open(path)
|
.open(path)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn handle(day: Day) {
|
pub fn handle(day: Day, overwrite: bool) {
|
||||||
let input_path = format!("data/inputs/{day}.txt");
|
let input_path = format!("data/inputs/{day}.txt");
|
||||||
let example_path = format!("data/examples/{day}.txt");
|
let example_path = format!("data/examples/{day}.txt");
|
||||||
let module_path = format!("src/bin/{day}.rs");
|
let module_path = format!("src/bin/{day}.rs");
|
||||||
|
|
||||||
let mut file = match safe_create_file(&module_path) {
|
let mut file = match safe_create_file(&module_path, overwrite) {
|
||||||
Ok(file) => file,
|
Ok(file) => file,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Failed to create module file: {e}");
|
eprintln!("Failed to create module file: {e}");
|
||||||
|
|
Loading…
Add table
Reference in a new issue