aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs74
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),
+ };
+}