summaryrefslogtreecommitdiff
path: root/cli/main.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2019-04-30 01:43:06 +0200
committerRyan Dahl <ry@tinyclouds.org>2019-04-29 16:43:06 -0700
commit636827a1d52285642eeb375781abe941c79a07f0 (patch)
tree62c1c74f64f3b6e79b080f04367cac5cee2e05e0 /cli/main.rs
parent1a0f53a807abad0e9ebfcf437f3dade6b01d7f84 (diff)
Rewrite flags.rs::parse_flags (#2237)
Diffstat (limited to 'cli/main.rs')
-rw-r--r--cli/main.rs65
1 files changed, 9 insertions, 56 deletions
diff --git a/cli/main.rs b/cli/main.rs
index 5bde60fb6..4632d15e4 100644
--- a/cli/main.rs
+++ b/cli/main.rs
@@ -43,6 +43,7 @@ use crate::worker::root_specifier_to_url;
use crate::worker::Worker;
use deno::v8_set_flags;
use flags::DenoFlags;
+use flags::DenoSubcommand;
use futures::lazy;
use futures::Future;
use log::{LevelFilter, Metadata, Record};
@@ -248,23 +249,13 @@ fn run_script(flags: DenoFlags, argv: Vec<String>) {
tokio_util::run(main_future);
}
-fn fmt_command(mut flags: DenoFlags, mut argv: Vec<String>) {
- argv.insert(1, "https://deno.land/std/prettier/main.ts".to_string());
- flags.allow_read = true;
- flags.allow_write = true;
- run_script(flags, argv);
-}
-
fn main() {
#[cfg(windows)]
ansi_term::enable_ansi_support().ok(); // For Windows 10
log::set_logger(&LOGGER).unwrap();
let args: Vec<String> = env::args().collect();
- let cli_app = flags::create_cli_app();
- let matches = cli_app.get_matches_from(args);
- let flags = flags::parse_flags(matches.clone());
- let mut argv: Vec<String> = vec!["deno".to_string()];
+ let (flags, subcommand, argv) = flags::flags_from_vec(args);
if flags.v8_help {
// show v8 help and exit
@@ -284,50 +275,12 @@ fn main() {
LevelFilter::Warn
});
- match matches.subcommand() {
- ("types", Some(_)) => {
- types_command();
- }
- ("eval", Some(eval_match)) => {
- let code: &str = eval_match.value_of("code").unwrap();
- argv.extend(vec![code.to_string()]);
- eval_command(flags, argv);
- }
- ("info", Some(info_match)) => {
- let file: &str = info_match.value_of("file").unwrap();
- argv.extend(vec![file.to_string()]);
- fetch_or_info_command(flags, argv, true);
- }
- ("fetch", Some(fetch_match)) => {
- let file: &str = fetch_match.value_of("file").unwrap();
- argv.extend(vec![file.to_string()]);
- fetch_or_info_command(flags, argv, false);
- }
- ("fmt", Some(fmt_match)) => {
- let files: Vec<String> = fmt_match
- .values_of("files")
- .unwrap()
- .map(String::from)
- .collect();
- argv.extend(files);
- fmt_command(flags, argv);
- }
- (script, Some(script_match)) => {
- argv.extend(vec![script.to_string()]);
- // check if there are any extra arguments that should
- // be passed to script
- if script_match.is_present("") {
- let script_args: Vec<String> = script_match
- .values_of("")
- .unwrap()
- .map(String::from)
- .collect();
- argv.extend(script_args);
- }
- run_script(flags, argv);
- }
- _ => {
- run_repl(flags, argv);
- }
+ match subcommand {
+ DenoSubcommand::Eval => eval_command(flags, argv),
+ DenoSubcommand::Fetch => fetch_or_info_command(flags, argv, false),
+ DenoSubcommand::Info => fetch_or_info_command(flags, argv, true),
+ DenoSubcommand::Repl => run_repl(flags, argv),
+ DenoSubcommand::Run => run_script(flags, argv),
+ DenoSubcommand::Types => types_command(),
}
}