Compare commits
	
		
			10 Commits
		
	
	
		
			master
			...
			oscar-next
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 885098809b | |||
| 82906eb832 | |||
| dcf30657c1 | |||
| 3c28c8cdd9 | |||
| f7b2fcb5bd | |||
| dfbd70b326 | |||
| 96cb2cc8a4 | |||
| 2839a68c6a | |||
| c9e3696ffd | |||
| 4940258365 | 
							
								
								
									
										13
									
								
								go/main.go
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								go/main.go
									
									
									
									
									
								
							@ -4,6 +4,7 @@ import (
 | 
				
			|||||||
	"log"
 | 
						"log"
 | 
				
			||||||
	"ocl/portainer-devtool/configs"
 | 
						"ocl/portainer-devtool/configs"
 | 
				
			||||||
	"ocl/portainer-devtool/tasks"
 | 
						"ocl/portainer-devtool/tasks"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/tasks/common"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
@ -15,12 +16,20 @@ func main() {
 | 
				
			|||||||
	config.Summarize()
 | 
						config.Summarize()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Init tasks
 | 
						// Init tasks
 | 
				
			||||||
	taskItems := []tasks.Tasker{
 | 
						taskItems := []common.Tasker{
 | 
				
			||||||
 | 
							tasks.NewListRepositoryMenuTask(config),
 | 
				
			||||||
 | 
							tasks.NewListOperationMenuTask(config),
 | 
				
			||||||
		tasks.NewGenerateJwtTokenTask(config),
 | 
							tasks.NewGenerateJwtTokenTask(config),
 | 
				
			||||||
 | 
							tasks.NewTestEnvironmentTask(),
 | 
				
			||||||
		tasks.NewCurlLookupTask(),
 | 
							tasks.NewCurlLookupTask(),
 | 
				
			||||||
		tasks.NewCodeSecurityScanTask(),
 | 
							tasks.NewCodeSecurityScanTask(),
 | 
				
			||||||
 | 
							tasks.NewInstallDockerTask(),
 | 
				
			||||||
		tasks.NewListDevToolCommandTask(config),
 | 
							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)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										33
									
								
								go/operations/edgestack/menu.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								go/operations/edgestack/menu.go
									
									
									
									
									
										Normal file
									
								
							@ -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"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										40
									
								
								go/operations/edgestack/tag_official_image.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								go/operations/edgestack/tag_official_image.go
									
									
									
									
									
										Normal file
									
								
							@ -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"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,5 +0,0 @@
 | 
				
			|||||||
package repositories
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type Actioner interface {
 | 
					 | 
				
			||||||
	Execute() error
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										33
									
								
								go/repositories/agent/build_docker_image.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								go/repositories/agent/build_docker_image.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					package agent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/configs"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/tasks/common"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/utils"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type BuildDockerImageSubTask struct {
 | 
				
			||||||
 | 
						common.GeneralTask
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewBuildDockerImageSubTask(cfg *configs.Config) *BuildDockerImageSubTask {
 | 
				
			||||||
 | 
						return &BuildDockerImageSubTask{
 | 
				
			||||||
 | 
							GeneralTask: *common.NewGeneralTask(cfg),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *BuildDockerImageSubTask) Execute() error {
 | 
				
			||||||
 | 
						utils.SuccessPrint(`
 | 
				
			||||||
 | 
					./dev.sh compile
 | 
				
			||||||
 | 
					./dev.sh build
 | 
				
			||||||
 | 
					----
 | 
				
			||||||
 | 
					./dev.sh compile
 | 
				
			||||||
 | 
					docker build -t "portainerci/agent:oscar-alpine" -f build/linux/alpine.Dockerfile .
 | 
				
			||||||
 | 
						`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *BuildDockerImageSubTask) String() string {
 | 
				
			||||||
 | 
						return "Build Docker Image"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										31
									
								
								go/repositories/agent/menu.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								go/repositories/agent/menu.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					package agent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/configs"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/tasks/common"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type MenuSubTask struct {
 | 
				
			||||||
 | 
						common.GeneralTask
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewMenuSubTask(cfg *configs.Config) *MenuSubTask {
 | 
				
			||||||
 | 
						return &MenuSubTask{
 | 
				
			||||||
 | 
							GeneralTask: *common.NewGeneralTask(cfg),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *MenuSubTask) Execute() error {
 | 
				
			||||||
 | 
						subTaskItems := []common.Tasker{
 | 
				
			||||||
 | 
							NewBuildDockerImageSubTask(task.Config),
 | 
				
			||||||
 | 
							NewPushImageSubTask(task.Config),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						common.ListCommandMenu(subTaskItems, "Which management commands do you want to choose:", false, task.ParentTasks)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *MenuSubTask) String() string {
 | 
				
			||||||
 | 
						return "agent"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										32
									
								
								go/repositories/agent/push_image.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								go/repositories/agent/push_image.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					package agent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/configs"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/tasks/common"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/utils"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type PushImageSubTask struct {
 | 
				
			||||||
 | 
						common.GeneralTask
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewPushImageSubTask(cfg *configs.Config) *PushImageSubTask {
 | 
				
			||||||
 | 
						return &PushImageSubTask{
 | 
				
			||||||
 | 
							GeneralTask: *common.NewGeneralTask(cfg),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *PushImageSubTask) Execute() error {
 | 
				
			||||||
 | 
						utils.SuccessPrint(`
 | 
				
			||||||
 | 
					export CR_PAT=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
 | 
				
			||||||
 | 
					echo $CR_PAT | docker login ghcr.io -u oscarzhou-portainer --password-stdin
 | 
				
			||||||
 | 
					docker image tag portainerci/agent:develop-78af729 ghcr.io/oscarzhou-portainer/agent:develop-78af729 
 | 
				
			||||||
 | 
					docker push ghcr.io/oscarzhou-portainer/agent:develop-78af729docker 
 | 
				
			||||||
 | 
						`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *PushImageSubTask) String() string {
 | 
				
			||||||
 | 
						return "Push Docker Image"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,71 +0,0 @@
 | 
				
			|||||||
package repositories
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"fmt"
 | 
					 | 
				
			||||||
	"ocl/portainer-devtool/commands"
 | 
					 | 
				
			||||||
	"ocl/portainer-devtool/utils"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const (
 | 
					 | 
				
			||||||
	ACTION_EE_BUILD_ALL int = iota + 1
 | 
					 | 
				
			||||||
	ACTION_EE_RUN_FRONTEND
 | 
					 | 
				
			||||||
	ACTION_EE_RUN_BACKEND
 | 
					 | 
				
			||||||
	ACTION_EE_VALIDATE_ALL
 | 
					 | 
				
			||||||
	ACTION_EE_VALIDATE_FRONTEND
 | 
					 | 
				
			||||||
	ACTION_EE_VALIDATE_BACKEND
 | 
					 | 
				
			||||||
	ACTION_EE_RUN_UNIT_TEST_ALL
 | 
					 | 
				
			||||||
	ACTION_EE_RUN_UNIT_TEST_FRONTEND
 | 
					 | 
				
			||||||
	ACTION_EE_RUN_UNIT_TEST_BACKEND
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type PortainerEE struct {
 | 
					 | 
				
			||||||
	WorkDir     string
 | 
					 | 
				
			||||||
	FrontendDir string
 | 
					 | 
				
			||||||
	BackendDir  string
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func NewPortainerEERepository() *PortainerEE {
 | 
					 | 
				
			||||||
	repo := &PortainerEE{
 | 
					 | 
				
			||||||
		WorkDir: "/home/oscarzhou/source/github.com/portainer/portainer-ee",
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	utils.HighlightPrint("Your portainer EE repository work directory is ")
 | 
					 | 
				
			||||||
	fmt.Println(repo.WorkDir)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return repo
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (repo *PortainerEE) Execute() error {
 | 
					 | 
				
			||||||
	err := commands.ListBranches(repo.WorkDir)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if !utils.PromptContinue() {
 | 
					 | 
				
			||||||
		return nil
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	option := utils.PromptMenu(repo.listSubMenu)
 | 
					 | 
				
			||||||
	switch option {
 | 
					 | 
				
			||||||
	case ACTION_EE_BUILD_ALL:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	case ACTION_EE_RUN_FRONTEND:
 | 
					 | 
				
			||||||
		commands.RunPortainerClient(repo.WorkDir)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (repo *PortainerEE) listSubMenu() {
 | 
					 | 
				
			||||||
	utils.MenuPrint("Do you want?", `
 | 
					 | 
				
			||||||
 1. Build both front-end and backend
 | 
					 | 
				
			||||||
 2. Run front-end only
 | 
					 | 
				
			||||||
 3. Run backend only
 | 
					 | 
				
			||||||
 4. Validate both fornt-end and backend before commit 
 | 
					 | 
				
			||||||
 5. Validate front-end only before commit
 | 
					 | 
				
			||||||
 6. Validate backend only before commit
 | 
					 | 
				
			||||||
 7. Run unit tests for both front-end and backend
 | 
					 | 
				
			||||||
 8. Run unit tests for front-end only
 | 
					 | 
				
			||||||
 9. Run unit tests for backend only`)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										31
									
								
								go/repositories/portainer-ee/build_docker_image.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								go/repositories/portainer-ee/build_docker_image.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					package portaineree
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/configs"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/tasks/common"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/utils"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type BuildDockerImageSubTask struct {
 | 
				
			||||||
 | 
						common.GeneralTask
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewBuildDockerImageSubTask(cfg *configs.Config) *BuildDockerImageSubTask {
 | 
				
			||||||
 | 
						return &BuildDockerImageSubTask{
 | 
				
			||||||
 | 
							GeneralTask: *common.NewGeneralTask(cfg),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *BuildDockerImageSubTask) Execute() error {
 | 
				
			||||||
 | 
						utils.SuccessPrint(`
 | 
				
			||||||
 | 
					yarn build
 | 
				
			||||||
 | 
					docker build -t "portainerci/portainer-ee:4803" -f build/linux/Dockerfile .
 | 
				
			||||||
 | 
					docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v "/var/run/docker.sock:/var/run/docker.sock" -v ${env:HOME}/volume/portainer-ee-data-2:/data --add-host=host.docker.internal:host-gateway portainerci/portainer:ee-4803
 | 
				
			||||||
 | 
						`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *BuildDockerImageSubTask) String() string {
 | 
				
			||||||
 | 
						return "Build Docker Image"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										32
									
								
								go/repositories/portainer-ee/menu.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								go/repositories/portainer-ee/menu.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					package portaineree
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/configs"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/tasks/common"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type MenuSubTask struct {
 | 
				
			||||||
 | 
						common.GeneralTask
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewMenuSubTask(cfg *configs.Config) *MenuSubTask {
 | 
				
			||||||
 | 
						return &MenuSubTask{
 | 
				
			||||||
 | 
							GeneralTask: *common.NewGeneralTask(cfg),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *MenuSubTask) Execute() error {
 | 
				
			||||||
 | 
						subTaskItems := []common.Tasker{
 | 
				
			||||||
 | 
							NewBuildDockerImageSubTask(task.Config),
 | 
				
			||||||
 | 
							NewSwarmDeploySubTask(task.Config),
 | 
				
			||||||
 | 
							NewStandaloneDeploySubTask(task.Config),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						common.ListCommandMenu(subTaskItems, "Which management commands do you want to choose:", false, task.ParentTasks)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *MenuSubTask) String() string {
 | 
				
			||||||
 | 
						return "portainer-ee"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										32
									
								
								go/repositories/portainer-ee/standalone_deploy.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								go/repositories/portainer-ee/standalone_deploy.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					package portaineree
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/configs"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/tasks/common"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/utils"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type StandaloneDeploySubTask struct {
 | 
				
			||||||
 | 
						common.GeneralTask
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewStandaloneDeploySubTask(cfg *configs.Config) *StandaloneDeploySubTask {
 | 
				
			||||||
 | 
						return &StandaloneDeploySubTask{
 | 
				
			||||||
 | 
							GeneralTask: *common.NewGeneralTask(cfg),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *StandaloneDeploySubTask) Execute() error {
 | 
				
			||||||
 | 
						utils.SuccessPrint(`
 | 
				
			||||||
 | 
					yarn build
 | 
				
			||||||
 | 
					docker build -t "portainerci/portainer-ee:oscar-test" -f build/linux/linux.Dockerfile .
 | 
				
			||||||
 | 
					docker image tag portainerci/portainer-ee:oscar-test portainerci/portainer-ee:latest
 | 
				
			||||||
 | 
					docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v "/var/run/docker.sock:/var/run/docker.sock" -v /home/oscar/volume/portainer-ee-data-1:/data --add-host=host.docker.internal:host-gateway portainerci/portainer-ee:oscar-test
 | 
				
			||||||
 | 
						`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *StandaloneDeploySubTask) String() string {
 | 
				
			||||||
 | 
						return "Deploy Portainer in Docker Standalone"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										67
									
								
								go/repositories/portainer-ee/swarm_deploy.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								go/repositories/portainer-ee/swarm_deploy.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,67 @@
 | 
				
			|||||||
 | 
					package portaineree
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/configs"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/tasks/common"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/utils"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type SwarmDeploySubTask struct {
 | 
				
			||||||
 | 
						common.GeneralTask
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewSwarmDeploySubTask(cfg *configs.Config) *SwarmDeploySubTask {
 | 
				
			||||||
 | 
						return &SwarmDeploySubTask{
 | 
				
			||||||
 | 
							GeneralTask: *common.NewGeneralTask(cfg),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *SwarmDeploySubTask) Execute() error {
 | 
				
			||||||
 | 
						utils.SuccessPrint(`
 | 
				
			||||||
 | 
					version: '3.2'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					services:
 | 
				
			||||||
 | 
					  agent:
 | 
				
			||||||
 | 
					    image: portainer/agent:latest
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - /var/run/docker.sock:/var/run/docker.sock
 | 
				
			||||||
 | 
					      - /var/lib/docker/volumes:/var/lib/docker/volumes
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - agent_network
 | 
				
			||||||
 | 
					    deploy:
 | 
				
			||||||
 | 
					      mode: global
 | 
				
			||||||
 | 
					      placement:
 | 
				
			||||||
 | 
					        constraints: [node.platform.os == linux]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  portainer:
 | 
				
			||||||
 | 
					    image: portainerci/portainer-ee:4803
 | 
				
			||||||
 | 
					    command: -H tcp://tasks.agent:9001 --tlsskipverify --log-level ERROR
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - "9443:9443"
 | 
				
			||||||
 | 
					      - "9000:9000"
 | 
				
			||||||
 | 
					      - "8000:8000"
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - /var/run/docker.sock:/var/run/docker.sock
 | 
				
			||||||
 | 
					      - /home/oscar/volume/portainer-ee-data-1:/data
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - agent_network
 | 
				
			||||||
 | 
					    deploy:
 | 
				
			||||||
 | 
					      mode: replicated
 | 
				
			||||||
 | 
					      replicas: 1
 | 
				
			||||||
 | 
					      placement:
 | 
				
			||||||
 | 
					        constraints: [node.role == manager]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					networks:
 | 
				
			||||||
 | 
					  agent_network:
 | 
				
			||||||
 | 
					    driver: overlay
 | 
				
			||||||
 | 
					  attachable: true
 | 
				
			||||||
 | 
					--------------------------
 | 
				
			||||||
 | 
					docker stack deploy -c docker-compose.yaml portainer
 | 
				
			||||||
 | 
						`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *SwarmDeploySubTask) String() string {
 | 
				
			||||||
 | 
						return "Deploy Portainer in Swarm"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										30
									
								
								go/repositories/unpacker/build_docker_image.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								go/repositories/unpacker/build_docker_image.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					package unpacker
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/configs"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/tasks/common"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/utils"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type BuildDockerImageSubTask struct {
 | 
				
			||||||
 | 
						common.GeneralTask
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewBuildDockerImageSubTask(cfg *configs.Config) *BuildDockerImageSubTask {
 | 
				
			||||||
 | 
						return &BuildDockerImageSubTask{
 | 
				
			||||||
 | 
							GeneralTask: *common.NewGeneralTask(cfg),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *BuildDockerImageSubTask) Execute() error {
 | 
				
			||||||
 | 
						utils.SuccessPrint(`
 | 
				
			||||||
 | 
					docker image tag docker.io/portainer/compose-unpacker:latest oscarzhou/compose-unpacker:28
 | 
				
			||||||
 | 
					docker image push oscarzhou/compose-unpacker:28
 | 
				
			||||||
 | 
						`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *BuildDockerImageSubTask) String() string {
 | 
				
			||||||
 | 
						return "Build Docker Image"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										30
									
								
								go/repositories/unpacker/menu.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								go/repositories/unpacker/menu.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					package unpacker
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/configs"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/tasks/common"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type MenuSubTask struct {
 | 
				
			||||||
 | 
						common.GeneralTask
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewMenuSubTask(cfg *configs.Config) *MenuSubTask {
 | 
				
			||||||
 | 
						return &MenuSubTask{
 | 
				
			||||||
 | 
							GeneralTask: *common.NewGeneralTask(cfg),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *MenuSubTask) Execute() error {
 | 
				
			||||||
 | 
						subTaskItems := []common.Tasker{
 | 
				
			||||||
 | 
							NewBuildDockerImageSubTask(task.Config),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						common.ListCommandMenu(subTaskItems, "Which management commands do you want to choose:", false, task.ParentTasks)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *MenuSubTask) String() string {
 | 
				
			||||||
 | 
						return "unpacker"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,10 +1,12 @@
 | 
				
			|||||||
package tasks
 | 
					package tasks
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/tasks/common"
 | 
				
			||||||
	"ocl/portainer-devtool/utils"
 | 
						"ocl/portainer-devtool/utils"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type CodeSecurityScanTask struct {
 | 
					type CodeSecurityScanTask struct {
 | 
				
			||||||
 | 
						ParentTasks []common.Tasker
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewCodeSecurityScanTask() *CodeSecurityScanTask {
 | 
					func NewCodeSecurityScanTask() *CodeSecurityScanTask {
 | 
				
			||||||
@ -30,6 +32,10 @@ func (task *CodeSecurityScanTask) Execute() error {
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *CodeSecurityScanTask) SetParentTaskers(tasks []common.Tasker) {
 | 
				
			||||||
 | 
						task.ParentTasks = tasks
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (task *CodeSecurityScanTask) String() string {
 | 
					func (task *CodeSecurityScanTask) String() string {
 | 
				
			||||||
	return "Code Security Scan"
 | 
						return "Code Security Scan"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
package tasks
 | 
					package common
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import "errors"
 | 
					import "errors"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -13,6 +13,9 @@ func (task *ExitTask) Execute() error {
 | 
				
			|||||||
	return errors.New("exit")
 | 
						return errors.New("exit")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *ExitTask) SetParentTaskers(tasks []Tasker) {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (task *ExitTask) String() string {
 | 
					func (task *ExitTask) String() string {
 | 
				
			||||||
	return "Exit"
 | 
						return "Exit"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										28
									
								
								go/tasks/common/general_task.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								go/tasks/common/general_task.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					package common
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/configs"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type GeneralTask struct {
 | 
				
			||||||
 | 
						Config      *configs.Config
 | 
				
			||||||
 | 
						ParentTasks []Tasker
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewGeneralTask(cfg *configs.Config) *GeneralTask {
 | 
				
			||||||
 | 
						return &GeneralTask{
 | 
				
			||||||
 | 
							Config: cfg,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *GeneralTask) Execute() error {
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *GeneralTask) SetParentTaskers(tasks []Tasker) {
 | 
				
			||||||
 | 
						task.ParentTasks = tasks
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *GeneralTask) String() string {
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										22
									
								
								go/tasks/common/return.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								go/tasks/common/return.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					package common
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type ReturnTask struct {
 | 
				
			||||||
 | 
						ParentTasks []Tasker
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewReturnTask(tasks []Tasker) *ReturnTask {
 | 
				
			||||||
 | 
						return &ReturnTask{
 | 
				
			||||||
 | 
							ParentTasks: tasks,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *ReturnTask) Execute() error {
 | 
				
			||||||
 | 
						return ListCommandMenu(task.ParentTasks, "", false, nil)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *ReturnTask) SetParentTaskers(tasks []Tasker) {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *ReturnTask) String() string {
 | 
				
			||||||
 | 
						return "Go Back"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
package tasks
 | 
					package common
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
@ -10,11 +10,17 @@ import (
 | 
				
			|||||||
type Tasker interface {
 | 
					type Tasker interface {
 | 
				
			||||||
	Execute() error
 | 
						Execute() error
 | 
				
			||||||
	String() string
 | 
						String() string
 | 
				
			||||||
 | 
						SetParentTaskers(tasks []Tasker)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ListCommandMenu iterates task items to display them // on the screen as the menu options
 | 
					// ListCommandMenu iterates task items to display them // on the screen as the menu options
 | 
				
			||||||
func ListCommandMenu(taskItems []Tasker, menuDesp string) error {
 | 
					func ListCommandMenu(taskItems []Tasker, menuDesp string, rootMenu bool, parentTaskItems []Tasker) error {
 | 
				
			||||||
	taskItems = append(taskItems, NewExitTask())
 | 
						if rootMenu {
 | 
				
			||||||
 | 
							taskItems = append(taskItems, NewExitTask())
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							taskItems = append(taskItems, NewReturnTask(parentTaskItems))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for {
 | 
						for {
 | 
				
			||||||
		printMainMenu := func() {
 | 
							printMainMenu := func() {
 | 
				
			||||||
			taskNames := []string{}
 | 
								taskNames := []string{}
 | 
				
			||||||
@ -33,7 +39,6 @@ func ListCommandMenu(taskItems []Tasker, menuDesp string) error {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		option := utils.SelectMenuItem(printMainMenu)
 | 
							option := utils.SelectMenuItem(printMainMenu)
 | 
				
			||||||
 | 
					 | 
				
			||||||
		index, err := strconv.Atoi(option)
 | 
							index, err := strconv.Atoi(option)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			utils.ErrorPrint("please type the option number\n")
 | 
								utils.ErrorPrint("please type the option number\n")
 | 
				
			||||||
@ -2,10 +2,12 @@ package tasks
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/tasks/common"
 | 
				
			||||||
	"ocl/portainer-devtool/utils"
 | 
						"ocl/portainer-devtool/utils"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type CurlLookupTask struct {
 | 
					type CurlLookupTask struct {
 | 
				
			||||||
 | 
						ParentTasks []common.Tasker
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewCurlLookupTask() *CurlLookupTask {
 | 
					func NewCurlLookupTask() *CurlLookupTask {
 | 
				
			||||||
@ -43,6 +45,10 @@ func (task *CurlLookupTask) Execute() error {
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *CurlLookupTask) SetParentTaskers(tasks []common.Tasker) {
 | 
				
			||||||
 | 
						task.ParentTasks = tasks
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (task *CurlLookupTask) String() string {
 | 
					func (task *CurlLookupTask) String() string {
 | 
				
			||||||
	return "Lookup Curl Commands"
 | 
						return "Lookup Curl Commands"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										56
									
								
								go/tasks/install_docker.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								go/tasks/install_docker.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,56 @@
 | 
				
			|||||||
 | 
					package tasks
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/tasks/common"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/utils"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type InstallDockerTask struct {
 | 
				
			||||||
 | 
						ParentTasks []common.Tasker
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewInstallDockerTask() *InstallDockerTask {
 | 
				
			||||||
 | 
						return &InstallDockerTask{}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *InstallDockerTask) Execute() error {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						utils.SuccessPrint(`
 | 
				
			||||||
 | 
						sudo apt-get update
 | 
				
			||||||
 | 
						sudo apt-get install \
 | 
				
			||||||
 | 
							ca-certificates \
 | 
				
			||||||
 | 
							curl \
 | 
				
			||||||
 | 
							gnupg \
 | 
				
			||||||
 | 
							lsb-release
 | 
				
			||||||
 | 
						sudo mkdir -p /etc/apt/keyrings
 | 
				
			||||||
 | 
						curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
 | 
				
			||||||
 | 
						echo \
 | 
				
			||||||
 | 
					  		"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
 | 
				
			||||||
 | 
					 	$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 | 
				
			||||||
 | 
						sudo apt-get update
 | 
				
			||||||
 | 
						sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
						sudo apt install docker.io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
						sudo groupadd docker
 | 
				
			||||||
 | 
						sudo usermod -aG docker $USER
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						multipass list
 | 
				
			||||||
 | 
						multipass shell <instance name>
 | 
				
			||||||
 | 
						sudo passwd ubuntu
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						newgrp docker
 | 
				
			||||||
 | 
						`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *InstallDockerTask) SetParentTaskers(tasks []common.Tasker) {
 | 
				
			||||||
 | 
						task.ParentTasks = tasks
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *InstallDockerTask) String() string {
 | 
				
			||||||
 | 
						return "Install Docker Binary"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -7,10 +7,11 @@ import (
 | 
				
			|||||||
	"io/ioutil"
 | 
						"io/ioutil"
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
	"ocl/portainer-devtool/configs"
 | 
						"ocl/portainer-devtool/configs"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/tasks/common"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type GenerateJwtTokenTask struct {
 | 
					type GenerateJwtTokenTask struct {
 | 
				
			||||||
	Config *configs.Config
 | 
						common.GeneralTask
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type GenerateJwtTokenResponse struct {
 | 
					type GenerateJwtTokenResponse struct {
 | 
				
			||||||
@ -19,7 +20,7 @@ type GenerateJwtTokenResponse struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func NewGenerateJwtTokenTask(cfg *configs.Config) *GenerateJwtTokenTask {
 | 
					func NewGenerateJwtTokenTask(cfg *configs.Config) *GenerateJwtTokenTask {
 | 
				
			||||||
	return &GenerateJwtTokenTask{
 | 
						return &GenerateJwtTokenTask{
 | 
				
			||||||
		Config: cfg,
 | 
							GeneralTask: *common.NewGeneralTask(cfg),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -2,26 +2,32 @@ package tasks
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"ocl/portainer-devtool/configs"
 | 
						"ocl/portainer-devtool/configs"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/tasks/common"
 | 
				
			||||||
	"ocl/portainer-devtool/tasks/subtasks"
 | 
						"ocl/portainer-devtool/tasks/subtasks"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ListDevToolCommandTask struct {
 | 
					type ListDevToolCommandTask struct {
 | 
				
			||||||
	Config *configs.Config
 | 
						common.GeneralTask
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewListDevToolCommandTask(cfg *configs.Config) *ListDevToolCommandTask {
 | 
					func NewListDevToolCommandTask(cfg *configs.Config) *ListDevToolCommandTask {
 | 
				
			||||||
	return &ListDevToolCommandTask{
 | 
						return &ListDevToolCommandTask{
 | 
				
			||||||
		Config: cfg,
 | 
							GeneralTask: *common.NewGeneralTask(cfg),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (task *ListDevToolCommandTask) Execute() error {
 | 
					func (task *ListDevToolCommandTask) Execute() error {
 | 
				
			||||||
	subTaskItems := []Tasker{
 | 
						subTaskItems := []common.Tasker{
 | 
				
			||||||
		subtasks.NewListVolumeSubTask(task.Config),
 | 
							subtasks.NewListVolumeSubTask(task.Config),
 | 
				
			||||||
		subtasks.NewListRepositorySubTask(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
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										35
									
								
								go/tasks/list_ops_menus.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								go/tasks/list_ops_menus.go
									
									
									
									
									
										Normal file
									
								
							@ -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"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										39
									
								
								go/tasks/list_repo_menus.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								go/tasks/list_repo_menus.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,39 @@
 | 
				
			|||||||
 | 
					package tasks
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/configs"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/repositories/agent"
 | 
				
			||||||
 | 
						portaineree "ocl/portainer-devtool/repositories/portainer-ee"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/repositories/unpacker"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/tasks/common"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type ListRepositoryMenuTask struct {
 | 
				
			||||||
 | 
						common.GeneralTask
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewListRepositoryMenuTask(cfg *configs.Config) *ListRepositoryMenuTask {
 | 
				
			||||||
 | 
						return &ListRepositoryMenuTask{
 | 
				
			||||||
 | 
							GeneralTask: *common.NewGeneralTask(cfg),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (task *ListRepositoryMenuTask) Execute() error {
 | 
				
			||||||
 | 
						subTaskItems := []common.Tasker{
 | 
				
			||||||
 | 
							portaineree.NewMenuSubTask(task.Config),
 | 
				
			||||||
 | 
							agent.NewMenuSubTask(task.Config),
 | 
				
			||||||
 | 
							unpacker.NewMenuSubTask(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 *ListRepositoryMenuTask) String() string {
 | 
				
			||||||
 | 
						return "Choose Repositories"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -2,17 +2,18 @@ package subtasks
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"ocl/portainer-devtool/configs"
 | 
						"ocl/portainer-devtool/configs"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/tasks/common"
 | 
				
			||||||
	"ocl/portainer-devtool/utils"
 | 
						"ocl/portainer-devtool/utils"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ListRepositorySubTask struct {
 | 
					type ListRepositorySubTask struct {
 | 
				
			||||||
	Config *configs.Config
 | 
						common.GeneralTask
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewListRepositorySubTask(cfg *configs.Config) *ListRepositorySubTask {
 | 
					func NewListRepositorySubTask(cfg *configs.Config) *ListRepositorySubTask {
 | 
				
			||||||
	return &ListRepositorySubTask{
 | 
						return &ListRepositorySubTask{
 | 
				
			||||||
		Config: cfg,
 | 
							GeneralTask: *common.NewGeneralTask(cfg),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -4,18 +4,19 @@ import (
 | 
				
			|||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io/fs"
 | 
						"io/fs"
 | 
				
			||||||
	"ocl/portainer-devtool/configs"
 | 
						"ocl/portainer-devtool/configs"
 | 
				
			||||||
 | 
						"ocl/portainer-devtool/tasks/common"
 | 
				
			||||||
	"ocl/portainer-devtool/utils"
 | 
						"ocl/portainer-devtool/utils"
 | 
				
			||||||
	"path/filepath"
 | 
						"path/filepath"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ListVolumeSubTask struct {
 | 
					type ListVolumeSubTask struct {
 | 
				
			||||||
	Config *configs.Config
 | 
						common.GeneralTask
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewListVolumeSubTask(cfg *configs.Config) *ListVolumeSubTask {
 | 
					func NewListVolumeSubTask(cfg *configs.Config) *ListVolumeSubTask {
 | 
				
			||||||
	return &ListVolumeSubTask{
 | 
						return &ListVolumeSubTask{
 | 
				
			||||||
		Config: cfg,
 | 
							GeneralTask: *common.NewGeneralTask(cfg),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										30
									
								
								go/tasks/test-env.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								go/tasks/test-env.go
									
									
									
									
									
										Normal file
									
								
							@ -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)"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user