From dfbd70b3266c962e7e1ea781e99f6a59fc9f7b16 Mon Sep 17 00:00:00 2001 From: oscarzhou Date: Sun, 8 Jan 2023 21:40:39 +1300 Subject: [PATCH] task: set parent task for multi layer tasks --- go/main.go | 10 ++++++++-- go/tasks/list_dev_tool_cmd.go | 14 ++++++++++---- go/tasks/list_repos.go | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 go/tasks/list_repos.go diff --git a/go/main.go b/go/main.go index 51c02ce..5335627 100644 --- a/go/main.go +++ b/go/main.go @@ -4,6 +4,7 @@ import ( "log" "ocl/portainer-devtool/configs" "ocl/portainer-devtool/tasks" + "ocl/portainer-devtool/tasks/common" ) func main() { @@ -15,12 +16,17 @@ func main() { config.Summarize() // Init tasks - taskItems := []tasks.Tasker{ + taskItems := []common.Tasker{ + tasks.NewListRepositoriesTask(config), tasks.NewGenerateJwtTokenTask(config), tasks.NewCurlLookupTask(), tasks.NewCodeSecurityScanTask(), tasks.NewListDevToolCommandTask(config), } - tasks.ListCommandMenu(taskItems, "Which repository of action do you want operate:") + for _, taskItem := range taskItems { + taskItem.SetParentTaskers(taskItems) + } + + common.ListCommandMenu(taskItems, "Which repository of action do you want to operate:", true, nil) } diff --git a/go/tasks/list_dev_tool_cmd.go b/go/tasks/list_dev_tool_cmd.go index 7cbdfe0..227c155 100644 --- a/go/tasks/list_dev_tool_cmd.go +++ b/go/tasks/list_dev_tool_cmd.go @@ -2,26 +2,32 @@ package tasks import ( "ocl/portainer-devtool/configs" + "ocl/portainer-devtool/tasks/common" "ocl/portainer-devtool/tasks/subtasks" ) type ListDevToolCommandTask struct { - Config *configs.Config + common.GeneralTask } func NewListDevToolCommandTask(cfg *configs.Config) *ListDevToolCommandTask { return &ListDevToolCommandTask{ - Config: cfg, + GeneralTask: *common.NewGeneralTask(cfg), } } func (task *ListDevToolCommandTask) Execute() error { - subTaskItems := []Tasker{ + subTaskItems := []common.Tasker{ subtasks.NewListVolumeSubTask(task.Config), subtasks.NewListRepositorySubTask(task.Config), } - ListCommandMenu(subTaskItems, "Which management commands do you want to choose:") + for _, taskItem := range subTaskItems { + taskItem.SetParentTaskers(subTaskItems) + } + + // ListCommandMenu(subTaskItems, "Which management commands do you want to choose:") + common.ListCommandMenu(subTaskItems, "Which management commands do you want to choose:", false, task.ParentTasks) return nil } diff --git a/go/tasks/list_repos.go b/go/tasks/list_repos.go new file mode 100644 index 0000000..2be0ccf --- /dev/null +++ b/go/tasks/list_repos.go @@ -0,0 +1,34 @@ +package tasks + +import ( + "ocl/portainer-devtool/configs" + "ocl/portainer-devtool/tasks/common" +) + +type ListRepositoriesTask struct { + common.GeneralTask +} + +func NewListRepositoriesTask(cfg *configs.Config) *ListRepositoriesTask { + return &ListRepositoriesTask{ + GeneralTask: *common.NewGeneralTask(cfg), + } +} + +func (task *ListRepositoriesTask) Execute() error { + subTaskItems := []common.Tasker{ + NewListRepoActionsSubTask(task.Config), + } + + for _, taskItem := range subTaskItems { + taskItem.SetParentTaskers(subTaskItems) + } + + common.ListCommandMenu(subTaskItems, "Which management commands do you want to choose:", false, task.ParentTasks) + + return nil +} + +func (task *ListRepositoriesTask) String() string { + return "List All Repositories" +}