aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
blob: 665822ecb7266b297213d434adb7a267c2fb3241 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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),
    };
}