33 lines
917 B
Odin
33 lines
917 B
Odin
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
|
|
}
|