issy62/optzig
A command-line argument parsing library for Zig, inspired by Go's flag package. Provides structured argument definition and parsing with support for v...
optzig
is a command-line argument parsing library for the Zig programming language, inspired by the approach used in Go. It provides a structured way to define and parse command-line arguments, supporting various data types such as booleans, integers, floats, and strings.
const std = @import("std");
const opt = @import("optzig");
pub fn main() !void {
var arena = std.heap.ArenaAllocator.init(std.heap.smp_allocator);
defer arena.deinit();
var ag = opt.Args.init(arena.allocator());
// Define arguments
const port = try ag.int32("port", "binding port", false, 0);
const help = try ag.boolean("help", "Print this usage", false, false);
// Parse command-line arguments
var arg_inputs = try std.process.argsWithAllocator(arena.allocator());
try ag.parse(std.process.ArgIterator, &arg_inputs);
// Use parsed arguments
// ...
std.log.info("Binding Port: {d}\n", .{port.*});
if (help.*) {
try ag.usage(null);
}
}
Contributions are welcome! Please follow the guidelines outlined in the CODE_OF_CONDUCT.md file.
This project is licensed under the BSD 3-Clause.