aboutsummaryrefslogtreecommitdiffstats
path: root/src/parser.rs
diff options
context:
space:
mode:
authorNathan Jaremko2019-02-24 16:52:01 -0500
committerNathan Jaremko2019-02-24 17:53:19 -0500
commit22e617eec8e2d8da36788ae40fb53c2ed2ebe734 (patch)
tree99ecbf8a7df65c9748b73debf9ece08ad9858315 /src/parser.rs
parente54af75fa1fe7f5e9da3bd858058ab491efea77a (diff)
downloadpodcast-22e617eec8e2d8da36788ae40fb53c2ed2ebe734.tar.bz2
Improve code0.8.0
Diffstat (limited to 'src/parser.rs')
-rw-r--r--src/parser.rs137
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()
+}