At some point, (probably during the llvm 16 upgrade, though I haven't done the legwork to actually narrow it down), zig developed a crash around the way inline was used here. Since using `inline` was an air quotes optimization, we can just chuck the designation for the time being so that compilation will succeed. This may remove more inlines than is strictly necessary, but I am bravely willing to make that sacrifice. See: ziglang/zig#15668
== nearly obvious command line interface parser A zig library for composing declarative command-line interfaces. Heavily inspired by https://click.palletsprojects.com/[click] for Python. == Extemporaneous Bloviation [quote, George "Albert Einstein" Washington] ____ The alarm rings, and expletives spill from my mouth—instinctively, before any neuron has a chance to fire. You'd think this would get easier, having done it at least 12000 times, but I guess it just goes to show that practice does not necessarily converge on perfection, no matter what infinite limit t approaches. Eyes clamped shut against the encroaching underglow spilling from the curtains, I stretch my arms straight out from my sides and proceed to lose my balance, flying horizontally off of the mattress. An attempt at attitude control fails vigorously and I begin cartwheeling through open space, asserting a lopsided trajectory that intersects with the roof of the house. Passing through it unencumbered, I careen skyward and watch the ground recede into the distance, as the features of the landscape shrink and pop out of existence. ____ == Hello Requires a pre-release version of Zig `0.11.0`. `0.11.0-dev.1844+75ff34db9` is the oldest version specifically known to me to work. === Features WARNING: NOCLIP is usable but not currently mature or well-tested. Unfinished features and bugs likely exist. * highly configurable short/long option and argument specification ** named options can be associated with an environment variable ** named flags, which take no value and can be biased `true` or `false` ** multiple specification options, which can be provided many times to the CLI ** overridable built-in conversion functions for standard types ** required options that must be specified by the user ** default values for options * arbitrarily nestable subcommands for building sophisticated tools * parser that supports many conventional CLI behaviors ** congealed short flags (e.g. `-abc` is the same as `-a -b -c`) ** `--` to force early of argument parsing ** both `--long value` and `--long=value` styles are supported * option values are converted into rich native types using conversion callback functions ** integers ** basic tuple values ** strings ** enumerations as named choice sets ** more to come * automatic help text generation and formatting * CLI specification and parser are built at compile time === Use `zig build demo` for a demo. Otherwise just copy the file or use a submodule or something. ---- Usage: noclip-demo [options...] <arg> <subcommand ...> The definitive noclip demonstration utility This command demonstrates the functionality of the noclip library. cool! Arguments: arg This is an argument that doesn't really do anything, but it's very important. Options: -t, --test <int> <int> multi-value test option (env: NOCLIP_TEST) -c, --choice <choice> enum choice option (env: NOCLIP_CHOICE) (default: demo.Choice.second) -d, --default <uint> default value integer option (env: NOCLIP_DEFAULT) (default: 100) -m, --multi <u8> multiple specification test option -f, --flag / -F, --no-flag boolean flag (env: NOCLIP_FLAG) -M multiple specification test flag Environment variables: NOCLIP_ENVIRON environment variable only option Subcommands: verb Perform some sort of work ---- == LICENSE INTERNET SOFTWARE CONSORTIUM LICENSE
Description
Languages
Zig
100%