summaryrefslogtreecommitdiff
path: root/src/main.rs
blob: 0f24c2cbb10ab5304f5e33947f26035cd17893fc (plain) (blame)
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
use switchboard::*;


fn main() {
    let mut args = Switchboard::from_env();
    args.named("version");
    args.named("verbose").short('v');
    match args.peek() {
        Some("run") => { args.pop(); run_program(args) }
        Some("asm") => { args.pop(); assemble_program(args) }
        _ => run_program(args),
    }
}

fn run_program(mut args: Switchboard) {
    println!("RUN PROGRAM");

    args.positional("source").required();
    args.named("debug").short('d');
    args.named("fullscreen").short('f');
    args.named("zoom").short('z').quick("3").default("1");
    args.raise_errors();

    let verbose    = args.get("verbose").as_bool();
    let version    = args.get("version").as_bool();
    let debug      = args.get("debug").as_bool();
    let fullscreen = args.get("fullscreen").as_bool();
    let zoom       = args.get("zoom").as_u32();
    let source     = args.get("source").as_path();

    println!("Verbose: {verbose:?}");
    println!("Version: {version:?}");
    println!("Source path: {source:?}");
    println!("Debug: {debug:?}");
    println!("Fullscreen: {fullscreen:?}");
    println!("Zoom: {zoom:?}");
}

fn assemble_program(mut args: Switchboard) {
    println!("ASSEMBLE PROGRAM");

    args.positional("source");
    args.positional("destination");
    args.positional("extension").default("brc");
    args.named("no-libs");
    args.named("no-project-libs");
    args.raise_errors();

    let source_path      = args.get("source").as_path();
    let destination_path = args.get("destination").as_path();
    let extension        = args.get("extension").as_string();
    let no_libs          = args.get("no-libs").as_bool();
    let no_project_libs  = args.get("no-project-libs").as_bool();

    println!("Source path: {source_path:?}");
    println!("Destination path: {destination_path:?}");
    println!("Extension: {extension:?}");
    println!("No libs: {no_libs:?}");
    println!("No project libs: {no_project_libs:?}");
}