diff options
| author | ottjk <joshott16@gmail.com> | 2024-01-20 01:56:41 -0500 |
|---|---|---|
| committer | ottjk <joshott16@gmail.com> | 2024-01-20 01:56:41 -0500 |
| commit | eb99d622a8190e105e490185690b540c5ef1c97f (patch) | |
| tree | 17f4040f570bd2e2aef855a79c01bda38d25c96b /src/main.rs | |
| download | xoppdog-eb99d622a8190e105e490185690b540c5ef1c97f.tar.gz xoppdog-eb99d622a8190e105e490185690b540c5ef1c97f.zip | |
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..665822e --- /dev/null +++ b/src/main.rs @@ -0,0 +1,74 @@ +use std::path::PathBuf; +use clap::{Parser, Subcommand, Args}; + +mod commands; +use commands::{ + start_sit, + shake_figure, + fetch_figure, +}; + +#[derive(Parser)] +struct Cli { + #[command(subcommand)] + command: Commands, +} + +#[derive(Subcommand)] +enum Commands { + /// Start watching for file modifications and update tex files + Sit(SitArgs), + + /// Modify a tracked xopp + Fetch(FetchArgs), + + /// Create a tracked xopp + Shake(ShakeArgs), +} + +#[derive(Args)] +struct SitArgs { + /// Figure directory + root: PathBuf, +} + +#[derive(Args)] +struct FetchArgs { + /// Figure directory + root: PathBuf, +} + +#[derive(Args)] +struct ShakeArgs { + /// Name of figure + name: String, + + /// Figure directory + root: PathBuf, +} + +fn sit_command(args: SitArgs) { + let root = args.root; + start_sit(root); +} + +fn fetch_command(args: FetchArgs) { + let root = args.root; + fetch_figure(root); +} + +fn shake_command(args: ShakeArgs) { + let name = args.name; + let root = args.root; + shake_figure(name, root); +} + +fn main() { + let cli = Cli::parse(); + + match cli.command { + Commands::Sit(args) => sit_command(args), + Commands::Shake(args) => shake_command(args), + Commands::Fetch(args) => fetch_command(args), + }; +} |