Skip to content

Commit 071531b

Browse files
committed
amv: migrate to clap
1 parent 3432168 commit 071531b

File tree

1 file changed

+26
-27
lines changed

1 file changed

+26
-27
lines changed

src/mv_main.zig

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const sqlite = @import("sqlite");
33
const manage_main = @import("main.zig");
44
const libpcre = @import("libpcre");
55
const Context = manage_main.Context;
6+
const clap = @import("clap");
67
const ID = manage_main.ID;
78

89
const logger = std.log.scoped(.als);
@@ -42,8 +43,23 @@ pub fn main() anyerror!void {
4243
defer _ = gpa.deinit();
4344
const allocator = gpa.allocator();
4445

45-
var args_it = std.process.args();
46-
_ = args_it.skip();
46+
const params = comptime clap.parseParamsComptime(
47+
\\-h, --help display this help and exit.
48+
\\-V, --version print version and exit.
49+
\\-v, --verbose enable debug logs.
50+
\\<str>... file paths, or folder paths
51+
);
52+
53+
var diag = clap.Diagnostic{};
54+
var res = clap.parse(clap.Help, &params, clap.parsers.default, .{
55+
.diagnostic = &diag,
56+
.allocator = allocator,
57+
}) catch |err| {
58+
// Report useful error and exit.
59+
diag.report(std.io.getStdErr().writer(), err) catch {};
60+
return err;
61+
};
62+
defer res.deinit();
4763

4864
const StringList = std.ArrayList([]const u8);
4965

@@ -56,34 +72,17 @@ pub fn main() anyerror!void {
5672
var given_args = Args{ .paths = StringList.init(allocator) };
5773
defer given_args.paths.deinit();
5874

59-
var state: enum { None, Path } = .None;
60-
61-
while (args_it.next()) |arg| {
62-
logger.debug("state: {}, arg: {s}", .{ state, arg });
63-
switch (state) {
64-
.Path => {
65-
try given_args.paths.append(arg);
66-
continue;
67-
},
68-
.None => {},
69-
}
70-
if (std.mem.eql(u8, arg, "-h")) {
71-
given_args.help = true;
72-
} else if (std.mem.eql(u8, arg, "-V")) {
73-
given_args.version = true;
74-
} else if (std.mem.eql(u8, arg, "-v")) {
75-
current_log_level = .debug;
76-
} else {
77-
try given_args.paths.append(arg);
78-
state = .Path;
79-
}
80-
}
75+
given_args.help = res.args.help != 0;
76+
given_args.version = res.args.version != 0;
77+
if (res.args.verbose != 0)
78+
current_log_level = .debug;
79+
for (res.positionals[0]) |arg|
80+
try given_args.paths.append(arg);
8181

8282
if (given_args.help) {
83-
std.debug.print(HELPTEXT, .{});
84-
return;
83+
return clap.help(std.io.getStdErr().writer(), clap.Help, &params, .{});
8584
} else if (given_args.version) {
86-
std.debug.print("ainclude {s}\n", .{VERSION});
85+
std.debug.print("amv {s}\n", .{VERSION});
8786
return;
8887
}
8988

0 commit comments

Comments
 (0)