@@ -2,13 +2,15 @@ package main
22
33import (
44 "os"
5+ "time"
56
67 "go.bbkane.com/warg"
78 "go.bbkane.com/warg/command"
89 "go.bbkane.com/warg/config/yamlreader"
910 "go.bbkane.com/warg/flag"
1011 "go.bbkane.com/warg/section"
11- "go.bbkane.com/warg/value"
12+ "go.bbkane.com/warg/value/scalar"
13+ "go.bbkane.com/warg/value/slice"
1214)
1315
1416func app () * warg.App {
@@ -35,45 +37,51 @@ Homepage: https://github.com/bbkane/grabbit
3537 command .Flag (
3638 "--subreddit-name" ,
3739 "Subreddit to grab" ,
38- value .StringSlice ,
40+ slice .String (
41+ slice .Default ([]string {"earthporn" , "wallpapers" }),
42+ ),
3943 flag .Alias ("-sn" ),
40- flag .Default ("earthporn" , "wallpapers" ),
4144 flag .ConfigPath ("subreddits[].name" ),
4245 flag .Required (),
4346 ),
4447 command .Flag (
4548 "--subreddit-destination" ,
4649 "Where to store the subreddit" ,
47- value .PathSlice ,
50+ slice .Path (
51+ slice .Default ([]string {"." , "." }),
52+ ),
4853 flag .Alias ("-sd" ),
49- flag .Default ("." , "." ),
5054 flag .ConfigPath ("subreddits[].destination" ),
5155 flag .Required (),
5256 ),
5357 command .Flag (
5458 "--subreddit-timeframe" ,
5559 "Take the top subreddits from this timeframe" ,
56- value .StringEnumSlice ("day" , "week" , "month" , "year" , "all" ),
60+ slice .String (
61+ slice .Choices ("day" , "week" , "month" , "year" , "all" ),
62+ slice .Default ([]string {"week" , "week" }),
63+ ),
5764 flag .Alias ("-st" ),
58- flag .Default ("week" , "week" ),
5965 flag .ConfigPath ("subreddits[].timeframe" ),
6066 flag .Required (),
6167 ),
6268 command .Flag (
6369 "--subreddit-limit" ,
6470 "Max number of links to try to download" ,
65- value .IntSlice ,
71+ slice .Int (
72+ slice .Default ([]int {2 , 3 }),
73+ ),
6674 flag .Alias ("-sl" ),
67- flag .Default ("2" , "3" ),
6875 flag .ConfigPath ("subreddits[].limit" ),
6976 flag .Required (),
7077 ),
7178 command .Flag (
7279 "--timeout" ,
7380 "Timeout for a single download" ,
74- value .Duration ,
81+ scalar .Duration (
82+ scalar .Default (time .Second * 30 ),
83+ ),
7584 flag .Alias ("-t" ),
76- flag .Default ("30s" ),
7785 flag .Required (),
7886 ),
7987 )
@@ -87,46 +95,39 @@ Homepage: https://github.com/bbkane/grabbit
8795 grabCmd ,
8896 ),
8997 section .Footer (appFooter ),
90- section .Command (
91- "version" ,
92- "Print version" ,
93- printVersion ,
94- ),
95- section .Flag (
96- "--color" ,
97- "Use colorized output" ,
98- value .StringEnum ("true" , "false" , "auto" ),
99- flag .Default ("auto" ),
100- ),
10198 section .Flag (
10299 "--log-filename" ,
103100 "Log filename" ,
104- value .Path ,
105- flag .Default ("~/.config/grabbit.jsonl" ),
101+ scalar .Path (
102+ scalar .Default ("~/.config/grabbit.jsonl" ),
103+ ),
106104 flag .ConfigPath ("lumberjacklogger.filename" ),
107105 flag .Required (),
108106 ),
109107 section .Flag (
110108 "--log-maxage" ,
111- "Max age before log rotation in days" ,
112- value .Int ,
113- flag .Default ("30" ),
109+ "Max age before log rotation in days" , // TODO: change to duration flag
110+ scalar .Int (
111+ scalar .Default (30 ),
112+ ),
114113 flag .ConfigPath ("lumberjacklogger.maxage" ),
115114 flag .Required (),
116115 ),
117116 section .Flag (
118117 "--log-maxbackups" ,
119118 "Num backups for the log" ,
120- value .Int ,
121- flag .Default ("0" ),
119+ scalar .Int (
120+ scalar .Default (0 ),
121+ ),
122122 flag .ConfigPath ("lumberjacklogger.maxbackups" ),
123123 flag .Required (),
124124 ),
125125 section .Flag (
126- "--log-maxsize" ,
126+ "--log-maxsize" , // TODO: make bytesize package similar to time?
127127 "Max size of log in megabytes" ,
128- value .Int ,
129- flag .Default ("5" ),
128+ scalar .Int (
129+ scalar .Default (5 ),
130+ ),
130131 flag .ConfigPath ("lumberjacklogger.maxsize" ),
131132 flag .Required (),
132133 ),
@@ -140,9 +141,10 @@ Homepage: https://github.com/bbkane/grabbit
140141 command .Flag (
141142 "--editor" ,
142143 "Path to editor" ,
143- value .String ,
144+ scalar .String (
145+ scalar .Default ("vi" ),
146+ ),
144147 flag .Alias ("-e" ),
145- flag .Default ("vi" ),
146148 flag .EnvVars ("EDITOR" ),
147149 flag .Required (),
148150 ),
@@ -151,11 +153,15 @@ Homepage: https://github.com/bbkane/grabbit
151153 ),
152154 warg .ConfigFlag (
153155 "--config" ,
156+ []scalar.ScalarOpt [string ]{
157+ scalar .Default ("~/.config/grabbit.yaml" ),
158+ },
154159 yamlreader .New ,
155160 "Config filepath" ,
156161 flag .Alias ("-c" ),
157- flag .Default ("~/.config/grabbit.yaml" ),
158162 ),
163+ warg .AddColorFlag (),
164+ warg .AddVersionCommand (version ),
159165 warg .SkipValidation (),
160166 )
161167 return & app
0 commit comments