diff --git a/go/main.go b/go/main.go index 16c38c2..ec094d9 100644 --- a/go/main.go +++ b/go/main.go @@ -4,12 +4,9 @@ import ( "log" "ocl/portainer-devtool/configs" "ocl/portainer-devtool/tasks" - "ocl/portainer-devtool/utils" - "strconv" ) func main() { - config, err := configs.GetConfig() if err != nil { log.Fatalln(err) @@ -18,50 +15,14 @@ func main() { config.Summarize() // Init tasks - taskItems := []tasks.Tasker{ tasks.NewGenerateJwtTokenTask(config), tasks.NewCurlLookupTask(), tasks.NewCodeSecurityScanTask(), + tasks.NewListDevToolCommandTask(config), tasks.NewExitTask(), } - for { - - printMainMenu := func() { - taskNames := []string{} - for _, task := range taskItems { - taskNames = append(taskNames, task.String()) - } - - utils.PrintMenu("Which repository of action do you want operate:", taskNames) - - // utils.MenuPrint("Which repository or action do you want to operate:", ` - // 1. Portainer EE Repository - // 2. Portainer CE Repository - // 3. Portainer Agent Repository - // 4. Others - // 5. Quit`) - } - - option := utils.SelectMenuItem(printMainMenu) - - index, err := strconv.Atoi(option) - if err != nil { - log.Printf("please type the option number\n") - continue - } - - if index < 1 || index > len(taskItems) { - log.Printf("no such option %s, please select again\n", option) - continue - } - - err = taskItems[index-1].Execute() - if err != nil { - log.Fatalln(err) - } - } - + tasks.ListCommandMenu(taskItems, "Which repository of action do you want operate:") } diff --git a/go/tasks/tasker.go b/go/tasks/tasker.go index bc922dd..154f696 100644 --- a/go/tasks/tasker.go +++ b/go/tasks/tasker.go @@ -1,6 +1,53 @@ package tasks +import ( + "fmt" + "ocl/portainer-devtool/utils" + "os" + "strconv" +) + type Tasker interface { Execute() error String() string } + +// ListCommandMenu iterates task items to display them // on the screen as the menu options +func ListCommandMenu(taskItems []Tasker, menuDesp string) error { + for { + printMainMenu := func() { + taskNames := []string{} + for _, task := range taskItems { + taskNames = append(taskNames, task.String()) + } + + utils.PrintMenu(menuDesp, taskNames) + + // utils.MenuPrint("Which repository or action do you want to operate:", ` + // 1. Portainer EE Repository + // 2. Portainer CE Repository + // 3. Portainer Agent Repository + // 4. Others + // 5. Quit`) + } + + option := utils.SelectMenuItem(printMainMenu) + + index, err := strconv.Atoi(option) + if err != nil { + utils.ErrorPrint("please type the option number\n") + continue + } + + if index < 1 || index > len(taskItems) { + utils.ErrorPrint(fmt.Sprintf("no such option %s, please select again\n", option)) + continue + } + + err = taskItems[index-1].Execute() + if err != nil { + utils.ErrorPrint(err.Error()) + os.Exit(1) + } + } +}