Refactor entrypoint to be a bit easier to read

This commit is contained in:
Lucien Greathouse
2019-01-25 10:32:10 -08:00
parent 6490b77d4c
commit 1659adb419

View File

@@ -5,7 +5,7 @@ use std::{
}; };
use log::error; use log::error;
use clap::clap_app; use clap::{clap_app, ArgMatches};
use librojo::commands; use librojo::commands;
@@ -55,11 +55,21 @@ fn main() {
) )
); );
// `get_matches` consumes self for some reason. // `get_matches` consumes our App, but we might need it in the 'help' case.
let matches = app.clone().get_matches(); let matches = app.clone().get_matches();
match matches.subcommand() { match matches.subcommand() {
("init", Some(sub_matches)) => { ("init", Some(sub_matches)) => start_init(sub_matches),
("serve", Some(sub_matches)) => start_serve(sub_matches),
("build", Some(sub_matches)) => start_build(sub_matches),
("upload", Some(sub_matches)) => start_upload(sub_matches),
_ => {
app.print_help().expect("Could not print help text to stdout!");
},
}
}
fn start_init(sub_matches: &ArgMatches) {
let fuzzy_project_path = make_path_absolute(Path::new(sub_matches.value_of("PATH").unwrap_or(""))); let fuzzy_project_path = make_path_absolute(Path::new(sub_matches.value_of("PATH").unwrap_or("")));
let kind = sub_matches.value_of("kind"); let kind = sub_matches.value_of("kind");
@@ -75,8 +85,9 @@ fn main() {
process::exit(1); process::exit(1);
}, },
} }
}, }
("serve", Some(sub_matches)) => {
fn start_serve(sub_matches: &ArgMatches) {
let fuzzy_project_path = match sub_matches.value_of("PROJECT") { let fuzzy_project_path = match sub_matches.value_of("PROJECT") {
Some(v) => make_path_absolute(Path::new(v)), Some(v) => make_path_absolute(Path::new(v)),
None => std::env::current_dir().unwrap(), None => std::env::current_dir().unwrap(),
@@ -105,8 +116,9 @@ fn main() {
process::exit(1); process::exit(1);
}, },
} }
}, }
("build", Some(sub_matches)) => {
fn start_build(sub_matches: &ArgMatches) {
let fuzzy_project_path = match sub_matches.value_of("PROJECT") { let fuzzy_project_path = match sub_matches.value_of("PROJECT") {
Some(v) => make_path_absolute(Path::new(v)), Some(v) => make_path_absolute(Path::new(v)),
None => std::env::current_dir().unwrap(), None => std::env::current_dir().unwrap(),
@@ -127,8 +139,9 @@ fn main() {
process::exit(1); process::exit(1);
}, },
} }
}, }
("upload", Some(sub_matches)) => {
fn start_upload(sub_matches: &ArgMatches) {
let fuzzy_project_path = match sub_matches.value_of("PROJECT") { let fuzzy_project_path = match sub_matches.value_of("PROJECT") {
Some(v) => make_path_absolute(Path::new(v)), Some(v) => make_path_absolute(Path::new(v)),
None => std::env::current_dir().unwrap(), None => std::env::current_dir().unwrap(),
@@ -163,9 +176,4 @@ fn main() {
process::exit(1); process::exit(1);
}, },
} }
},
_ => {
app.print_help().expect("Could not print help text to stdout!");
},
}
} }