43 lines
1.3 KiB
Zig
43 lines
1.3 KiB
Zig
const std = @import("std");
|
|
const argsParser = @import("args.zig");
|
|
|
|
pub fn main() !void {
|
|
var argsAllocator = std.heap.page_allocator;
|
|
|
|
const options = try argsParser.parseForCurrentProcess(struct {
|
|
// This declares long options for double hyphen
|
|
output: ?[]const u8 = null,
|
|
@"with-offset": bool = false,
|
|
@"with-hexdump": bool = false,
|
|
@"intermix-source": bool = false,
|
|
numberOfBytes: ?i32 = null,
|
|
signed_number: ?i64 = null,
|
|
unsigned_number: ?u64 = null,
|
|
mode: enum { default, special, slow, fast } = .default,
|
|
|
|
// This declares short-hand options for single hyphen
|
|
pub const shorthands = .{
|
|
.S = "intermix-source",
|
|
.b = "with-hexdump",
|
|
.O = "with-offset",
|
|
.o = "output",
|
|
};
|
|
}, argsAllocator);
|
|
defer options.deinit();
|
|
|
|
std.debug.print("executable name: {s}\n", .{options.executable_name});
|
|
|
|
std.debug.print("parsed options:\n", .{});
|
|
inline for (std.meta.fields(@TypeOf(options.options))) |fld| {
|
|
std.debug.print("\t{s} = {}\n", .{
|
|
fld.name,
|
|
@field(options.options, fld.name),
|
|
});
|
|
}
|
|
|
|
std.debug.print("parsed positionals:\n", .{});
|
|
for (options.positionals) |arg| {
|
|
std.debug.print("\t'{s}'\n", .{arg});
|
|
}
|
|
}
|