From b2059e5d086731a37f5988bfc6bfdb0848f14ece Mon Sep 17 00:00:00 2001 From: Jimmi Holst Christensen Date: Mon, 29 Nov 2021 17:01:36 +0100 Subject: Improve help and usage examples Instead of just calling these function, have the examples be small programs that demonstrates how you would actually use them together with argument parsing. fixes #57 --- example/README.md.template | 2 ++ example/help.zig | 17 ++++++++++------- example/usage.zig | 19 +++++++++++-------- 3 files changed, 23 insertions(+), 15 deletions(-) (limited to 'example') diff --git a/example/README.md.template b/example/README.md.template index 74a2f1d..1848d03 100644 --- a/example/README.md.template +++ b/example/README.md.template @@ -74,6 +74,7 @@ program can take. ``` ``` +$ zig-out/bin/help --help -h, --help Display this help and exit. -v, --version Output version information and exit. ``` @@ -97,6 +98,7 @@ of the help message. ``` ``` +$ zig-out/bin/usage --help [-hv] [--value ] ``` diff --git a/example/help.zig b/example/help.zig index d90373a..de3b707 100644 --- a/example/help.zig +++ b/example/help.zig @@ -2,14 +2,17 @@ const clap = @import("clap"); const std = @import("std"); pub fn main() !void { + const params = comptime [_]clap.Param(clap.Help){ + clap.parseParam("-h, --help Display this help and exit. ") catch unreachable, + clap.parseParam("-v, --version Output version information and exit.") catch unreachable, + }; + + var args = try clap.parse(clap.Help, ¶ms, .{}); + defer args.deinit(); + // clap.help is a function that can print a simple help message, given a // slice of Param(Help). There is also a helpEx, which can print a // help message for any Param, but it is more verbose to call. - try clap.help( - std.io.getStdErr().writer(), - comptime &.{ - clap.parseParam("-h, --help Display this help and exit. ") catch unreachable, - clap.parseParam("-v, --version Output version information and exit.") catch unreachable, - }, - ); + if (args.flag("--help")) + return clap.help(std.io.getStdErr().writer(), ¶ms); } diff --git a/example/usage.zig b/example/usage.zig index 90fa310..368a6b3 100644 --- a/example/usage.zig +++ b/example/usage.zig @@ -2,15 +2,18 @@ const clap = @import("clap"); const std = @import("std"); pub fn main() !void { + const params = comptime [_]clap.Param(clap.Help){ + clap.parseParam("-h, --help Display this help and exit. ") catch unreachable, + clap.parseParam("-v, --version Output version information and exit. ") catch unreachable, + clap.parseParam(" --value An option parameter, which takes a value.") catch unreachable, + }; + + var args = try clap.parse(clap.Help, ¶ms, .{}); + defer args.deinit(); + // clap.usage is a function that can print a simple usage message, given a // slice of Param(Help). There is also a usageEx, which can print a // usage message for any Param, but it is more verbose to call. - try clap.usage( - std.io.getStdErr().writer(), - comptime &.{ - clap.parseParam("-h, --help Display this help and exit. ") catch unreachable, - clap.parseParam("-v, --version Output version information and exit. ") catch unreachable, - clap.parseParam(" --value An option parameter, which takes a value.") catch unreachable, - }, - ); + if (args.flag("--help")) + return clap.usage(std.io.getStdErr().writer(), ¶ms); } -- cgit v1.2.3