@@ -278,26 +278,43 @@ func newPkgManager(cmd *cobra.Command, args []string) error {
278
278
update , _ := cmd .Flags ().GetString ("update" )
279
279
upgrade , _ := cmd .Flags ().GetString ("upgrade" )
280
280
281
+ reader := bufio .NewReader (os .Stdin )
282
+
281
283
if name == "" {
282
- if ! assumeYes {
283
- cmdr .Info .Println (apx .Trans ("pkgmanagers.new.info.askName" ))
284
- fmt .Scanln (& name )
285
- if name == "" {
286
- cmdr .Error .Println (apx .Trans ("pkgmanagers.new.error.emptyName" ))
287
- return nil
288
- }
289
- } else {
284
+ if assumeYes {
290
285
cmdr .Error .Println (apx .Trans ("pkgmanagers.new.error.noName" ))
291
286
return nil
292
287
}
288
+
289
+ cmdr .Info .Println (apx .Trans ("pkgmanagers.new.info.askName" ))
290
+ name , _ = reader .ReadString ('\n' )
291
+ name = strings .ReplaceAll (name , "\n " , "" )
292
+ name = strings .ReplaceAll (name , " " , "" )
293
+ if name == "" {
294
+ cmdr .Error .Println (apx .Trans ("pkgmanagers.new.error.emptyName" ))
295
+ return nil
296
+ }
293
297
}
294
298
295
299
if ! needSudo && ! assumeYes {
296
- cmdr .Info .Println (apx .Trans ("pkgmanagers.new.info.askSudo" ) + ` [y/N]` )
297
- reader := bufio .NewReader (os .Stdin )
298
- answer , _ := reader .ReadString ('\n' )
299
- if strings .ToLower (strings .TrimSpace (answer )) == "y" {
300
- needSudo = true
300
+ validChoice := false
301
+ for ! validChoice {
302
+ cmdr .Info .Println (apx .Trans ("pkgmanagers.new.info.askSudo" ) + ` [y/N]` )
303
+ answer , _ := reader .ReadString ('\n' )
304
+ if answer == "\n " {
305
+ answer = "n\n "
306
+ }
307
+ answer = strings .ToLower (strings .ReplaceAll (answer , " " , "" ))
308
+ switch answer {
309
+ case "y\n " :
310
+ needSudo = true
311
+ validChoice = true
312
+ case "n\n " :
313
+ needSudo = false
314
+ validChoice = true
315
+ default :
316
+ cmdr .Warning .Println (apx .Trans ("apx.errors.invalidChoice" ))
317
+ }
301
318
}
302
319
}
303
320
@@ -316,33 +333,35 @@ func newPkgManager(cmd *cobra.Command, args []string) error {
316
333
317
334
for cmdName , cmd := range cmdMap {
318
335
if * cmd == "" {
319
- if ! assumeYes {
320
- cmdr .Info .Printf (apx .Trans ("pkgmanagers.new.info.askCommand" ), cmdName )
321
- fmt .Scanln (cmd )
322
- if * cmd == "" {
323
- cmdr .Error .Printf (apx .Trans ("pkgmanagers.new.error.emptyCommand" ), cmdName )
324
- return nil
325
- }
326
- } else {
336
+ if assumeYes {
327
337
cmdr .Error .Printf (apx .Trans ("pkgmanagers.new.error.noCommand" ), cmdName )
328
338
return nil
329
339
}
340
+
341
+ cmdr .Info .Printf (apx .Trans ("pkgmanagers.new.info.askCommand" ), cmdName )
342
+ * cmd , _ = reader .ReadString ('\n' )
343
+ * cmd = strings .ReplaceAll (* cmd , "\n " , "" )
344
+ if * cmd == "" {
345
+ cmdr .Error .Printf (apx .Trans ("pkgmanagers.new.error.emptyCommand" ), cmdName )
346
+ return nil
347
+ }
330
348
}
331
349
}
332
350
333
351
if core .PkgManagerExists (name ) {
334
- if ! assumeYes {
335
- cmdr .Info .Printf (apx .Trans ("pkgmanagers.new.info.askOverwrite" ), name )
336
- reader := bufio .NewReader (os .Stdin )
337
- answer , _ := reader .ReadString ('\n' )
338
- if strings .ToLower (strings .TrimSpace (answer )) != "y" {
339
- cmdr .Info .Println (apx .Trans ("apx.info.aborting" ))
340
- return nil
341
- }
342
- } else {
352
+ if assumeYes {
343
353
cmdr .Error .Println (apx .Trans ("pkgmanagers.new.error.alreadyExists" ), name )
344
354
return nil
345
355
}
356
+
357
+ cmdr .Info .Printf (apx .Trans ("pkgmanagers.new.info.askOverwrite" ), name )
358
+ answer , _ := reader .ReadString ('\n' )
359
+ answer = strings .ReplaceAll (answer , "\n " , "" )
360
+
361
+ if strings .ToLower (strings .TrimSpace (answer )) != "y" {
362
+ cmdr .Info .Println (apx .Trans ("apx.info.aborting" ))
363
+ return nil
364
+ }
346
365
}
347
366
348
367
pkgManager := core .NewPkgManager (name , needSudo , autoRemove , clean , install , list , purge , remove , search , show , update , upgrade , false )
0 commit comments