@@ -3,6 +3,7 @@ const sqlite = @import("sqlite");
33const manage_main = @import ("main.zig" );
44const libpcre = @import ("libpcre" );
55const Context = manage_main .Context ;
6+ const clap = @import ("clap" );
67const ID = manage_main .ID ;
78
89const 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