Create Golang version devtool #7
							
								
								
									
										43
									
								
								go/main.go
									
									
									
									
									
								
							
							
						
						
									
										43
									
								
								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:") | ||||
| } | ||||
|  | ||||
| @ -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) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user