55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
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 {
|
|
taskItems = append(taskItems, NewExitTask())
|
|
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)
|
|
}
|
|
}
|
|
}
|