Compare commits

...

3 Commits

7 changed files with 190 additions and 0 deletions

18
go/commands/git.go Normal file
View File

@ -0,0 +1,18 @@
package commands
import (
"ocl/portainer-devtool/utils"
"os/exec"
)
func ListBranches(workdir string) error {
cmd := exec.Command("git", "branch")
cmd.Dir = workdir
out, err := cmd.Output()
if err != nil {
return err
}
utils.PrintOutput("Your current checkout branch", out)
return nil
}

3
go/go.mod Normal file
View File

@ -0,0 +1,3 @@
module ocl/portainer-devtool
go 1.18

40
go/main.go Normal file
View File

@ -0,0 +1,40 @@
package main
import (
"fmt"
"log"
"ocl/portainer-devtool/repositories"
"ocl/portainer-devtool/utils"
)
const (
MENU_OPTION_EE_REPO int = iota + 1
MENU_OPTION_CE_REPO
MENU_OPTION_AGENT_REPO
MENU_OPTION_OTHERS
)
func main() {
utils.MenuPrint()
var option int
_, err := fmt.Scanf("%d", &option)
if err != nil {
log.Fatal(err)
}
var action repositories.Actioner
switch option {
case MENU_OPTION_EE_REPO:
action = repositories.NewPortainerEERepository()
case MENU_OPTION_CE_REPO:
case MENU_OPTION_AGENT_REPO:
case MENU_OPTION_OTHERS:
}
log.Fatal(action.Execute())
}

View File

@ -0,0 +1,5 @@
package repositories
type Actioner interface {
Execute() error
}

37
go/repositories/ee.go Normal file
View File

@ -0,0 +1,37 @@
package repositories
import (
"fmt"
"ocl/portainer-devtool/commands"
"ocl/portainer-devtool/utils"
)
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
}
return nil
}

65
go/utils/print.go Normal file
View File

@ -0,0 +1,65 @@
package utils
import "fmt"
const (
colorReset string = "\033[0m"
colorRed string = "\033[31m"
colorGreen string = "\033[32m"
colorYellow string = "\033[33m"
colorBlue string = "\033[34m"
colorPurple string = "\033[35m"
colorCyan string = "\033[36m"
colorWhite string = "\033[37m"
)
func PrintOutput(message string, output []byte) {
if message != "" {
HighlightPrint(message)
}
fmt.Println(string(output))
}
func HighlightPrint(message string) {
fmt.Println()
fmt.Println(colorBlue, message, colorReset)
}
func SuccessPrint(message string) {
fmt.Println()
fmt.Println(colorGreen, message, colorReset)
}
func ErrorPrint(message string) {
fmt.Println()
fmt.Println(colorRed, message, colorReset)
}
func InputPrint(message string) {
fmt.Println()
fmt.Println(colorYellow, message, colorReset)
}
func MenuPrint() {
InputPrint("Which repository or action do you want to operate:")
// menu := `
// 1. Build Portainer EE/CE All
// 2. Build Portainer EE/CE Frontend
// 3. Build Portainer EE/CE Backend
// 4. Generate Portainer EE/CE JWT
// 5. Run Before Commit [Portainer EE/CE]
// 6. Get Portainer CE API Reference
// 7. Run Before Commit [k8s]
// 8. Build Portainer Agent
// 9. Cleanup Temporary Volume
// `
menu := `1. Portainer EE Repository
2. Portainer CE Repository
3. Portainer Agent Repository
4. Others`
fmt.Println(colorCyan, menu, colorReset)
}

22
go/utils/prompt.go Normal file
View File

@ -0,0 +1,22 @@
package utils
import (
"fmt"
"strings"
)
func PromptContinue() bool {
ret := strings.ToLower(prompt("Continue (y/n)"))
if ret == "y" || ret == "yes" {
return true
}
return false
}
func prompt(question string) string {
fmt.Printf("%s %s :%s", colorYellow, question, colorReset)
var ret string
fmt.Scanf("%s", &ret)
return ret
}