Skip to content

args.zigCommand-Line Argument Parsing for Zig

Fast, powerful, and developer-friendly CLI argument parsing

args.zig

Requirements

  • Zig 0.15.0 or later
  • No external dependencies

Quick Example

zig
const std = @import("std");
const args = @import("args");

pub fn main() !void {
    var gpa = std.heap.GeneralPurposeAllocator(.{}){};
    defer _ = gpa.deinit();
    const allocator = gpa.allocator();

    var parser = try args.ArgumentParser.init(allocator, .{
        .name = "myapp",
        .version = "1.0.0",
        .description = "A sample application",
    });
    defer parser.deinit();

    try parser.addFlag("verbose", .{ .short = 'v', .help = "Enable verbose output" });
    try parser.addOption("output", .{ .short = 'o', .help = "Output file" });

    var result = try parser.parseProcess();
    defer result.deinit();

    if (result.getBool("verbose") orelse false) {
        std.debug.print("Verbose mode enabled!\n", .{});
    }
}

Installation

Install the latest stable release (v0.0.3):

bash
zig fetch --save https://github.com/muhammad-fiaz/args.zig/archive/refs/tags/0.0.3.tar.gz

Nightly Installation

Install the latest development version:

bash
zig fetch --save git+https://github.com/muhammad-fiaz/args.zig

Configure build.zig

Then in your build.zig:

zig
const args_dep = b.dependency("args", .{
    .target = target,
    .optimize = optimize,
});
exe.root_module.addImport("args", args_dep.module("args"));

Current Version

  • Package Version: 0.0.3
  • Minimum Zig Version: 0.15.1

Released under the MIT License.