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:?}");
}
|