From dcf30657c159534741b8d266b719548061ee5301 Mon Sep 17 00:00:00 2001 From: oscarzhou Date: Mon, 9 Jan 2023 14:23:32 +1300 Subject: [PATCH] task: add operation menu task and test environment task --- go/main.go | 2 + go/operations/edgestack/menu.go | 33 +++++++++++++++ go/operations/edgestack/tag_official_image.go | 40 +++++++++++++++++++ go/tasks/list_ops_menus.go | 35 ++++++++++++++++ go/tasks/test-env.go | 30 ++++++++++++++ 5 files changed, 140 insertions(+) create mode 100644 go/operations/edgestack/menu.go create mode 100644 go/operations/edgestack/tag_official_image.go create mode 100644 go/tasks/list_ops_menus.go create mode 100644 go/tasks/test-env.go diff --git a/go/main.go b/go/main.go index 991c04a..88a0f00 100644 --- a/go/main.go +++ b/go/main.go @@ -18,7 +18,9 @@ func main() { // Init tasks taskItems := []common.Tasker{ tasks.NewListRepositoryMenuTask(config), + tasks.NewListOperationMenuTask(config), tasks.NewGenerateJwtTokenTask(config), + tasks.NewTestEnvironmentTask(), tasks.NewCurlLookupTask(), tasks.NewCodeSecurityScanTask(), tasks.NewListDevToolCommandTask(config), diff --git a/go/operations/edgestack/menu.go b/go/operations/edgestack/menu.go new file mode 100644 index 0000000..95d2ec5 --- /dev/null +++ b/go/operations/edgestack/menu.go @@ -0,0 +1,33 @@ +package edgestack + +import ( + "ocl/portainer-devtool/configs" + "ocl/portainer-devtool/tasks/common" +) + +type OperationMenuSubTask struct { + common.GeneralTask +} + +func NewOperationMenuSubTask(cfg *configs.Config) *OperationMenuSubTask { + return &OperationMenuSubTask{ + GeneralTask: *common.NewGeneralTask(cfg), + } +} + +func (task *OperationMenuSubTask) Execute() error { + subTaskItems := []common.Tasker{ + NewTagOfficialImageSubTask(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 *OperationMenuSubTask) String() string { + return "edgestack" +} diff --git a/go/operations/edgestack/tag_official_image.go b/go/operations/edgestack/tag_official_image.go new file mode 100644 index 0000000..2881bac --- /dev/null +++ b/go/operations/edgestack/tag_official_image.go @@ -0,0 +1,40 @@ +package edgestack + +import ( + "ocl/portainer-devtool/configs" + "ocl/portainer-devtool/tasks/common" + "ocl/portainer-devtool/utils" +) + +type TagOfficialImageSubTask struct { + common.GeneralTask +} + +func NewTagOfficialImageSubTask(cfg *configs.Config) *TagOfficialImageSubTask { + return &TagOfficialImageSubTask{ + GeneralTask: *common.NewGeneralTask(cfg), + } +} + +func (task *TagOfficialImageSubTask) Execute() error { + utils.SuccessPrint(` +docker pull nginx:latest +docker image tag nginx:latest ghcr.io/oscarzhou-portainer/nginx:1 +docker push ghcr.io/oscarzhou-portainer/nginx:1 +----------------- +version: '3' + +services: + nginx-container: + image: ghcr.io/oscarzhou-portainer/nginx:1 + container_name: "nginx-from-ghcr" + ports: + - "${PORT:-81}:80" + `) + + return nil +} + +func (task *TagOfficialImageSubTask) String() string { + return "Create Image for Private Registry" +} diff --git a/go/tasks/list_ops_menus.go b/go/tasks/list_ops_menus.go new file mode 100644 index 0000000..dd39b69 --- /dev/null +++ b/go/tasks/list_ops_menus.go @@ -0,0 +1,35 @@ +package tasks + +import ( + "ocl/portainer-devtool/configs" + "ocl/portainer-devtool/operations/edgestack" + "ocl/portainer-devtool/tasks/common" +) + +type ListOperationMenuTask struct { + common.GeneralTask +} + +func NewListOperationMenuTask(cfg *configs.Config) *ListOperationMenuTask { + return &ListOperationMenuTask{ + GeneralTask: *common.NewGeneralTask(cfg), + } +} + +func (task *ListOperationMenuTask) Execute() error { + subTaskItems := []common.Tasker{ + edgestack.NewOperationMenuSubTask(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 *ListOperationMenuTask) String() string { + return "Choose Operations" +} diff --git a/go/tasks/test-env.go b/go/tasks/test-env.go new file mode 100644 index 0000000..2a4b23a --- /dev/null +++ b/go/tasks/test-env.go @@ -0,0 +1,30 @@ +package tasks + +import ( + "ocl/portainer-devtool/tasks/common" + "ocl/portainer-devtool/utils" +) + +type TestEnvironmentTask struct { + ParentTasks []common.Tasker +} + +func NewTestEnvironmentTask() *TestEnvironmentTask { + return &TestEnvironmentTask{} +} + +func (task *TestEnvironmentTask) Execute() error { + utils.SuccessPrint(` +https://github.com/portainer/platform/actions + `) + + return nil +} + +func (task *TestEnvironmentTask) SetParentTaskers(tasks []common.Tasker) { + task.ParentTasks = tasks +} + +func (task *TestEnvironmentTask) String() string { + return "Create Testing Environment(VPN)" +}