Skip to content

Commit 23479bd

Browse files
Fix package manager creation process
1 parent 3596eec commit 23479bd

File tree

2 files changed

+50
-30
lines changed

2 files changed

+50
-30
lines changed

cmd/pkgManagers.go

+49-30
Original file line numberDiff line numberDiff line change
@@ -278,26 +278,43 @@ func newPkgManager(cmd *cobra.Command, args []string) error {
278278
update, _ := cmd.Flags().GetString("update")
279279
upgrade, _ := cmd.Flags().GetString("upgrade")
280280

281+
reader := bufio.NewReader(os.Stdin)
282+
281283
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 {
290285
cmdr.Error.Println(apx.Trans("pkgmanagers.new.error.noName"))
291286
return nil
292287
}
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+
}
293297
}
294298

295299
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+
}
301318
}
302319
}
303320

@@ -316,33 +333,35 @@ func newPkgManager(cmd *cobra.Command, args []string) error {
316333

317334
for cmdName, cmd := range cmdMap {
318335
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 {
327337
cmdr.Error.Printf(apx.Trans("pkgmanagers.new.error.noCommand"), cmdName)
328338
return nil
329339
}
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+
}
330348
}
331349
}
332350

333351
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 {
343353
cmdr.Error.Println(apx.Trans("pkgmanagers.new.error.alreadyExists"), name)
344354
return nil
345355
}
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+
}
346365
}
347366

348367
pkgManager := core.NewPkgManager(name, needSudo, autoRemove, clean, install, list, purge, remove, search, show, update, upgrade, false)

locales/en.yml

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ apx:
44
errors:
55
unknownCommand: "Unknown command: %s"
66
invalidInput: "Invalid input."
7+
invalidChoice: "Invalid choice."
78
info:
89
aborting: "Aborting as requested."
910
terminal:

0 commit comments

Comments
 (0)