aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2022-06-07 12:28:18 +0200
committerMaximilian Manz <maximilian.manz@de.clara.net>2022-06-20 11:33:04 +0200
commitdc8056cbf2d6ee54695171fefcbf26621ea2251e (patch)
tree6c15e8567ad709f0395131b935e777cf4ede2b21
parentinit (diff)
replace structopt with clap 3
-rw-r--r--Cargo.toml2
-rw-r--r--src/config/args.rs13
-rw-r--r--src/main.rs4
3 files changed, 11 insertions, 8 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 0a1f55c..82a163b 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -17,7 +17,7 @@ walkdir = "2"
async-trait = "*"
# Arg parsing and config
-structopt = "0.3"
+clap = { version = "3", features = ["derive"] }
figment = { version = "0.10", features = ["toml", "yaml", "env"] }
serde = "1"
diff --git a/src/config/args.rs b/src/config/args.rs
index 1b0683d..9c0973f 100644
--- a/src/config/args.rs
+++ b/src/config/args.rs
@@ -1,18 +1,21 @@
-use structopt::StructOpt;
+use clap::{Parser, Subcommand, ArgEnum};
-#[derive(StructOpt, Clone, Debug)]
+#[derive(Parser, Clone, Debug)]
+#[clap(
+ override_usage("gtree <SUBCOMMAND> [SCOPE]")
+)]
/// Sync Gitlab Trees
pub struct Args {
- #[structopt(subcommand)]
+ #[clap(subcommand)]
pub command: Commands,
/// Only operate on this subtree
+ #[clap(global = true)]
pub scope: Option<String>,
}
#[derive(PartialEq, Clone, Debug)]
-#[derive(StructOpt)]
-#[structopt(about = "the stupid content tracker")]
+#[derive(Subcommand)]
pub enum Commands {
/// Download new repositories and delete old ones, also update
Sync,
diff --git a/src/main.rs b/src/main.rs
index 748f50d..2a6592e 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,5 +1,5 @@
use anyhow::{Context, Result};
-use structopt::StructOpt;
+use clap::Parser;
use derivative::Derivative;
use tracing::{debug, info, metadata::LevelFilter, trace, Level};
@@ -26,7 +26,7 @@ struct GTree {
impl GTree {
pub async fn new() -> Result<GTree> {
- let args = config::args::Args::from_args();
+ let args = config::args::Args::parse();
let figment = config::Config::figment()?;
let config: config::Config = figment.extract()?;