@@ -28,34 +28,34 @@ def parse_args(args: Optional[List[str]] = None) -> argparse.Namespace:
2828 prog = "greeting-toolkit" ,
2929 description = "A simple greeting package" ,
3030 )
31-
31+
3232 parser .add_argument (
3333 "--version" , action = "version" , version = f"%(prog)s { __version__ } "
3434 )
35-
35+
3636 parser .add_argument (
3737 "--log-level" ,
3838 choices = ["debug" , "info" , "warning" , "error" , "critical" ],
3939 help = "Set logging level" ,
4040 )
41-
41+
4242 parser .add_argument (
4343 "--log-file" ,
4444 type = str ,
4545 help = "Path to log file" ,
4646 )
47-
47+
4848 subparsers = parser .add_subparsers (dest = "command" , help = "Command to run" )
49-
49+
5050 # Basic hello command
5151 hello_parser = subparsers .add_parser ("hello" , help = "Generate a simple greeting" )
5252 hello_parser .add_argument ("name" , help = "Name to greet" )
5353 hello_parser .add_argument ("--greeting" , help = "Custom greeting" )
54-
54+
5555 # Random greeting command
5656 random_parser = subparsers .add_parser ("random" , help = "Generate a random greeting" )
5757 random_parser .add_argument ("name" , help = "Name to greet" )
58-
58+
5959 # Time-based greeting command
6060 time_parser = subparsers .add_parser (
6161 "time" , help = "Generate a time-based greeting"
@@ -64,7 +64,7 @@ def parse_args(args: Optional[List[str]] = None) -> argparse.Namespace:
6464 time_parser .add_argument (
6565 "--formal" , action = "store_true" , help = "Use formal language"
6666 )
67-
67+
6868 # Format greeting command
6969 format_parser = subparsers .add_parser (
7070 "format" , help = "Format a greeting with options"
@@ -82,7 +82,7 @@ def parse_args(args: Optional[List[str]] = None) -> argparse.Namespace:
8282 format_parser .add_argument (
8383 "--max-length" , type = int , help = "Maximum length (truncates with ...)"
8484 )
85-
85+
8686 # Multiple names command
8787 multi_parser = subparsers .add_parser (
8888 "multi" , help = "Greet multiple names"
@@ -93,20 +93,20 @@ def parse_args(args: Optional[List[str]] = None) -> argparse.Namespace:
9393 multi_parser .add_argument (
9494 "--greeting" , default = "Hello" , help = "Custom greeting"
9595 )
96-
96+
9797 # Config commands
9898 config_parser = subparsers .add_parser (
9999 "config" , help = "Manage configuration"
100100 )
101101 config_subparsers = config_parser .add_subparsers (
102102 dest = "config_command" , help = "Configuration command"
103103 )
104-
104+
105105 # Show config
106106 config_subparsers .add_parser (
107107 "show" , help = "Show current configuration"
108108 )
109-
109+
110110 # Set config values
111111 set_parser = config_subparsers .add_parser (
112112 "set" , help = "Set configuration values"
@@ -123,73 +123,73 @@ def parse_args(args: Optional[List[str]] = None) -> argparse.Namespace:
123123 set_parser .add_argument (
124124 "--max-name-length" , type = int , help = "Set maximum name length"
125125 )
126-
126+
127127 # Add greeting
128128 add_parser = config_subparsers .add_parser (
129129 "add-greeting" , help = "Add a greeting to available greetings"
130130 )
131131 add_parser .add_argument (
132132 "greeting" , help = "Greeting to add"
133133 )
134-
134+
135135 # Save config
136136 save_parser = config_subparsers .add_parser (
137137 "save" , help = "Save configuration to file"
138138 )
139139 save_parser .add_argument (
140140 "path" , type = str , help = "Path to save configuration"
141141 )
142-
142+
143143 # Load config
144144 load_parser = config_subparsers .add_parser (
145145 "load" , help = "Load configuration from file"
146146 )
147147 load_parser .add_argument (
148148 "path" , type = str , help = "Path to load configuration from"
149149 )
150-
150+
151151 return parser .parse_args (args )
152152
153153
154154def main (args : Optional [List [str ]] = None ) -> int :
155155 """
156156 Run the CLI application.
157-
157+
158158 Args:
159159 args: Command line arguments
160-
160+
161161 Returns:
162162 Exit code
163163 """
164164 parsed_args = parse_args (args )
165-
165+
166166 # Configure logging if requested
167167 if parsed_args .log_level or parsed_args .log_file :
168168 configure_logging (
169169 level = parsed_args .log_level or "info" ,
170170 log_file = parsed_args .log_file ,
171171 )
172-
172+
173173 # If no command, show help
174174 if not parsed_args .command :
175175 print ("Error: Please specify a command." )
176176 return 1
177-
177+
178178 # Basic greeting commands
179179 if parsed_args .command == "hello" :
180180 # Add type checking
181181 if not isinstance (parsed_args .name , str ):
182182 raise TypeError ("Name must be a string" )
183-
183+
184184 logger .debug (f"Running hello command for name: { parsed_args .name } " )
185185 result = hello (parsed_args .name , greeting = parsed_args .greeting )
186186 print (result )
187-
187+
188188 elif parsed_args .command == "random" :
189189 logger .debug (f"Running random command for name: { parsed_args .name } " )
190190 result = random_greeting (parsed_args .name )
191191 print (result )
192-
192+
193193 elif parsed_args .command == "time" :
194194 logger .debug (f"Running time command for name: { parsed_args .name } " )
195195 result = generate_greeting (
@@ -198,7 +198,7 @@ def main(args: Optional[List[str]] = None) -> int:
198198 time_based = True ,
199199 )
200200 print (result )
201-
201+
202202 elif parsed_args .command == "format" :
203203 logger .debug (f"Running format command for name: { parsed_args .name } " )
204204 result = format_greeting (
@@ -209,7 +209,7 @@ def main(args: Optional[List[str]] = None) -> int:
209209 max_length = parsed_args .max_length ,
210210 )
211211 print (result )
212-
212+
213213 elif parsed_args .command == "multi" :
214214 logger .debug (f"Running multi command for names: { parsed_args .names } " )
215215 results = create_greeting_list (
@@ -218,47 +218,47 @@ def main(args: Optional[List[str]] = None) -> int:
218218 )
219219 for greeting in results :
220220 print (greeting )
221-
221+
222222 # Config commands
223223 elif parsed_args .command == "config" :
224224 if not parsed_args .config_command :
225225 print ("Error: Please specify a config command." )
226226 return 1
227-
227+
228228 # Show config
229229 if parsed_args .config_command == "show" :
230230 logger .debug ("Running config show command" )
231231 cfg = get_config ()
232232 print (json .dumps (cfg , indent = 2 ))
233-
233+
234234 # Set config values
235235 elif parsed_args .config_command == "set" :
236236 logger .debug ("Running config set command" )
237237 changed = False
238-
238+
239239 if parsed_args .greeting is not None :
240240 set_default_greeting (parsed_args .greeting )
241241 print (f"Default greeting set to: { parsed_args .greeting } " )
242242 changed = True
243-
243+
244244 if parsed_args .punctuation is not None :
245245 set_default_punctuation (parsed_args .punctuation )
246246 print (f"Default punctuation set to: { parsed_args .punctuation } " )
247247 changed = True
248-
248+
249249 if parsed_args .title is not None :
250250 config .formal_title = parsed_args .title
251251 print (f"Formal title set to: { parsed_args .title } " )
252252 changed = True
253-
253+
254254 if parsed_args .max_name_length is not None :
255255 config .max_name_length = parsed_args .max_name_length
256256 print (f"Max name length set to: { parsed_args .max_name_length } " )
257257 changed = True
258-
258+
259259 if not changed :
260260 print ("No configuration values were changed." )
261-
261+
262262 # Add greeting
263263 elif parsed_args .config_command == "add-greeting" :
264264 logger .debug (f"Adding greeting: { parsed_args .greeting } " )
@@ -267,7 +267,7 @@ def main(args: Optional[List[str]] = None) -> int:
267267 print ("Available greetings:" )
268268 for greeting in config .available_greetings :
269269 print (f"- { greeting } " )
270-
270+
271271 # Save config
272272 elif parsed_args .config_command == "save" :
273273 logger .debug (f"Saving config to: { parsed_args .path } " )
@@ -277,7 +277,7 @@ def main(args: Optional[List[str]] = None) -> int:
277277 except (IOError , OSError ) as e :
278278 print (f"Error saving configuration: { e } " )
279279 return 1
280-
280+
281281 # Load config
282282 elif parsed_args .config_command == "load" :
283283 logger .debug (f"Loading config from: { parsed_args .path } " )
@@ -293,7 +293,7 @@ def main(args: Optional[List[str]] = None) -> int:
293293 except (IOError , OSError , json .JSONDecodeError ) as e :
294294 print (f"Error loading configuration: { e } " )
295295 return 1
296-
296+
297297 return 0
298298
299299
0 commit comments