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),
};
}
|