From 7349d95d73a337905538acf70471686713303e51 Mon Sep 17 00:00:00 2001 From: Jimmi Holst Christensen Date: Wed, 21 Mar 2018 12:03:30 +0100 Subject: Create README.md --- README.md | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 README.md (limited to 'README.md') diff --git a/README.md b/README.md new file mode 100644 index 0000000..b678b87 --- /dev/null +++ b/README.md @@ -0,0 +1,98 @@ +# zig-clap +A non allocating, fast and easy to use command line argument parser library for Zig. + +# Example + +``` +const std = @import("std"); +const clap = @import("clap.zig"); + +const debug = std.debug; +const os = std.os; + +const Clap = clap.Clap; +const Command = clap.Command; +const Argument = clap.Argument; + +const Options = struct { + print_values: bool, + a: i64, + b: u64, + c: u8, +}; + +pub fn main() !void { + const parser = comptime Clap(Options).Builder + .init( + Options { + .print_values = false, + .a = 0, + .b = 0, + .c = 0, + } + ) + .programName("My Test Command") + .author("Hejsil") + .version("v1") + .about("Prints some values to the screen... Maybe.") + .command( + Command.Builder + .init("command") + .arguments( + []Argument { + Argument.Builder + .init("a") + .help("Set the a field of Option.") + .short('a') + .takesValue(true) + .build(), + Argument.Builder + .init("b") + .help("Set the b field of Option.") + .short('b') + .takesValue(true) + .build(), + Argument.Builder + .init("c") + .help("Set the c field of Option.") + .short('c') + .takesValue(true) + .build(), + Argument.Builder + .init("print_values") + .help("Print all not 0 values.") + .short('p') + .long("print-values") + .build(), + } + ) + .build() + ) + .build(); + + const args = try os.argsAlloc(debug.global_allocator); + defer os.argsFree(debug.global_allocator, args); + + const options = try parser.parse(args[1..]); + + if (options.print_values) { + if (options.a != 0) debug.warn("a = {}\n", options.a); + if (options.b != 0) debug.warn("b = {}\n", options.b); + if (options.c != 0) debug.warn("c = {}\n", options.c); + } +} +``` + +Running example: +``` +sample % ./sample [0] +sample % ./sample -a 2 -b 4 -c 6 [0] +sample % ./sample -a 2 -b 4 -c 6 -p [0] +a = 2 +b = 4 +c = 6 +sample % ./sample -a 2 -b 4 -c 6 --print-values [0] +a = 2 +b = 4 +c = 6 +``` -- cgit v1.2.3