diff options
| author | Nathan Jaremko | 2019-02-24 16:52:01 -0500 | 
|---|---|---|
| committer | Nathan Jaremko | 2019-02-24 17:53:19 -0500 | 
| commit | 22e617eec8e2d8da36788ae40fb53c2ed2ebe734 (patch) | |
| tree | 99ecbf8a7df65c9748b73debf9ece08ad9858315 /src/parser.rs | |
| parent | e54af75fa1fe7f5e9da3bd858058ab491efea77a (diff) | |
| download | podcast-22e617eec8e2d8da36788ae40fb53c2ed2ebe734.tar.bz2 | |
Improve code0.8.0
Diffstat (limited to 'src/parser.rs')
| -rw-r--r-- | src/parser.rs | 137 | 
1 files changed, 137 insertions, 0 deletions
| diff --git a/src/parser.rs b/src/parser.rs new file mode 100644 index 0000000..ce5ca93 --- /dev/null +++ b/src/parser.rs @@ -0,0 +1,137 @@ +use clap::{App, Arg, ArgMatches, SubCommand}; + +pub fn get_matches<'a>(version: &str) -> ArgMatches<'a> { +    App::new("podcast") +        .version(version) +        .author("Nathan J. <njaremko@gmail.com>") +        .about("A command line podcast manager") +        .subcommand( +            SubCommand::with_name("download") +                .about("download episodes of podcast") +                .arg( +                    Arg::with_name("PODCAST") +                        .help("Regex for subscribed podcast") +                        .required(true) +                        .index(1), +                ) +                .arg( +                    Arg::with_name("EPISODE") +                        .required(false) +                        .help("Episode index") +                        .index(2), +                ) +                .arg( +                    Arg::with_name("name") +                        .short("e") +                        .long("episode") +                        .help("Download using episode name instead of index number") +                        .required(false), +                ) +                .arg( +                    Arg::with_name("all") +                        .short("a") +                        .long("all") +                        .help("Download all matching episodes") +                        .required(false), +                ), +        ) +        .subcommand( +            SubCommand::with_name("ls") +                .about("list episodes of podcast") +                .arg( +                    Arg::with_name("PODCAST") +                        .help("Regex for subscribed podcast") +                        .index(1), +                ), +        ) +        .subcommand( +            SubCommand::with_name("list") +                .about("list episodes of podcast") +                .arg( +                    Arg::with_name("PODCAST") +                        .help("Regex for subscribed podcast") +                        .index(1), +                ), +        ) +        .subcommand( +            SubCommand::with_name("play") +                .about("play an episode") +                .arg( +                    Arg::with_name("PODCAST") +                        .help("Regex for subscribed podcast") +                        .required(true) +                        .index(1), +                ) +                .arg( +                    Arg::with_name("EPISODE") +                        .help("Episode index") +                        .required(false) +                        .index(2), +                ) +                .arg( +                    Arg::with_name("name") +                        .short("e") +                        .long("episode") +                        .help("Play using episode name instead of index number") +                        .required(false), +                ), +        ) +        .subcommand( +            SubCommand::with_name("search") +                .about("searches for podcasts") +                .arg( +                    Arg::with_name("debug") +                        .short("d") +                        .help("print debug information verbosely"), +                ), +        ) +        .subcommand( +            SubCommand::with_name("subscribe") +                .about("subscribes to a podcast RSS feed") +                .arg( +                    Arg::with_name("URL") +                        .help("URL to RSS feed") +                        .required(true) +                        .index(1), +                ) +                .arg( +                    Arg::with_name("download") +                        .short("d") +                        .long("download") +                        .help("auto download based on config"), +                ), +        ) +        .subcommand( +            SubCommand::with_name("sub") +                .about("subscribes to a podcast RSS feed") +                .arg( +                    Arg::with_name("URL") +                        .help("URL to RSS feed") +                        .required(true) +                        .index(1), +                ) +                .arg( +                    Arg::with_name("download") +                        .short("d") +                        .long("download") +                        .help("auto download based on config"), +                ), +        ) +        .subcommand(SubCommand::with_name("refresh").about("refresh subscribed podcasts")) +        .subcommand(SubCommand::with_name("update").about("check for updates")) +        .subcommand( +            SubCommand::with_name("rm") +                .about("unsubscribe from a podcast") +                .arg(Arg::with_name("PODCAST").help("Podcast to delete").index(1)), +        ) +        .subcommand( +            SubCommand::with_name("completion") +                .about("install shell completion") +                .arg( +                    Arg::with_name("SHELL") +                        .help("Shell to print completion for") +                        .index(1), +                ), +        ) +        .get_matches() +} | 
