diff --git a/src/cli/cli.odin b/src/cli/cli.odin new file mode 100644 index 0000000..8c13a07 --- /dev/null +++ b/src/cli/cli.odin @@ -0,0 +1,32 @@ +package cli + +import "core:flags" +import "core:fmt" +import "core:os" + +Options :: struct { + verbose: bool `args:"name=verbose" usage:"Enable verbose output"`, + compression: u8 `args:"name=compression" usage:"Compression level, 0-12"`, + size: i64 `args:"name=size" usage:"Chunk size in bytes"`, + input: os.Handle `args:"name=input,file=r,required" usage:"Path to input directory"`, + output: os.Handle `args:"name=output,file=wc" usage:"Path to ouput directory"`, + // overflow: [dynamic]string, +} + +parse :: proc() -> Options { + opts: Options + + err := flags.parse(&opts, os.args[1:], .Unix) + + if err != nil { + flags.print_errors(typeid_of(Options), err, os.args[0], .Unix) + os.exit(1) + } + + if opts.compression > 12 { + fmt.eprintln("error: compression should be between 0-12") + os.exit(1) + } + + return opts +} diff --git a/src/main.odin b/src/main.odin index c76b944..612e59b 100644 --- a/src/main.odin +++ b/src/main.odin @@ -2,9 +2,14 @@ package main import "core:fmt" +import "src:cli" + VERSION :: #config(VERSION, "dev") main :: proc() { - fmt.println("Hellope!") - fmt.println(VERSION) + opts := cli.parse() + + fmt.println("verbose:", opts.verbose) + fmt.println("compression:", opts.compression) + fmt.println("size:", opts.size) }