Compare commits
No commits in common. "b24dcfa9d92726a84438c12037a5c91c26922b9f" and "8028a50cc3f71ec9cf5195460fad903eb5143ade" have entirely different histories.
b24dcfa9d9
...
8028a50cc3
@ -1,15 +0,0 @@
|
|||||||
package commands
|
|
||||||
|
|
||||||
import (
|
|
||||||
"ocl/portainer-devtool/utils"
|
|
||||||
)
|
|
||||||
|
|
||||||
// RunClient starts the portainer client
|
|
||||||
func RunPortainerClient(workdir string) error {
|
|
||||||
err := utils.RunCommandWithStdoutPipe(workdir, "yarn")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return utils.RunCommandWithStdoutPipe(workdir, "yarn", "start:client")
|
|
||||||
}
|
|
51
go/main.go
51
go/main.go
@ -1,10 +1,10 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"ocl/portainer-devtool/repositories"
|
"ocl/portainer-devtool/repositories"
|
||||||
"ocl/portainer-devtool/utils"
|
"ocl/portainer-devtool/utils"
|
||||||
"os"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -12,42 +12,29 @@ const (
|
|||||||
MENU_OPTION_CE_REPO
|
MENU_OPTION_CE_REPO
|
||||||
MENU_OPTION_AGENT_REPO
|
MENU_OPTION_AGENT_REPO
|
||||||
MENU_OPTION_OTHERS
|
MENU_OPTION_OTHERS
|
||||||
MENU_OPTION_QUIT
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
for {
|
utils.MenuPrint()
|
||||||
|
|
||||||
printMainMenu := func() {
|
var option int
|
||||||
utils.MenuPrint("Which repository or action do you want to operate:", `
|
_, err := fmt.Scanf("%d", &option)
|
||||||
1. Portainer EE Repository
|
if err != nil {
|
||||||
2. Portainer CE Repository
|
log.Fatal(err)
|
||||||
3. Portainer Agent Repository
|
|
||||||
4. Others
|
|
||||||
5. Quit`)
|
|
||||||
}
|
|
||||||
|
|
||||||
option := utils.PromptMenu(printMainMenu)
|
|
||||||
|
|
||||||
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:
|
|
||||||
|
|
||||||
case MENU_OPTION_QUIT:
|
|
||||||
os.Exit(0)
|
|
||||||
}
|
|
||||||
|
|
||||||
err := action.Execute()
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalln(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())
|
||||||
}
|
}
|
||||||
|
@ -6,18 +6,6 @@ import (
|
|||||||
"ocl/portainer-devtool/utils"
|
"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 {
|
type PortainerEE struct {
|
||||||
WorkDir string
|
WorkDir string
|
||||||
FrontendDir string
|
FrontendDir string
|
||||||
@ -45,27 +33,5 @@ func (repo *PortainerEE) Execute() error {
|
|||||||
return nil
|
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
|
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`)
|
|
||||||
}
|
|
||||||
|
@ -1,45 +0,0 @@
|
|||||||
package utils
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bufio"
|
|
||||||
"fmt"
|
|
||||||
"os/exec"
|
|
||||||
)
|
|
||||||
|
|
||||||
func RunCommandWithStdoutPipe(workdir, progName string, args ...string) error {
|
|
||||||
cmd := exec.Command(progName, args...)
|
|
||||||
cmd.Dir = workdir
|
|
||||||
out, err := cmd.StdoutPipe()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
scanner := bufio.NewScanner(out)
|
|
||||||
go func() {
|
|
||||||
counter := 0
|
|
||||||
for scanner.Scan() {
|
|
||||||
if counter > 10 {
|
|
||||||
// Swallow the output
|
|
||||||
if counter%50 == 0 {
|
|
||||||
fmt.Printf("output %d lines in total.\n", counter)
|
|
||||||
}
|
|
||||||
counter++
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
PrintOutput("", scanner.Bytes())
|
|
||||||
counter++
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
err = cmd.Start()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
err = cmd.Wait()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
@ -41,10 +41,8 @@ func InputPrint(message string) {
|
|||||||
fmt.Println(colorYellow, message, colorReset)
|
fmt.Println(colorYellow, message, colorReset)
|
||||||
}
|
}
|
||||||
|
|
||||||
func MenuPrint(question, menu string) {
|
func MenuPrint() {
|
||||||
if question != "" {
|
InputPrint("Which repository or action do you want to operate:")
|
||||||
InputPrint(fmt.Sprintf("[%s]", question))
|
|
||||||
}
|
|
||||||
|
|
||||||
// menu := `
|
// menu := `
|
||||||
// 1. Build Portainer EE/CE All
|
// 1. Build Portainer EE/CE All
|
||||||
@ -58,5 +56,10 @@ func MenuPrint(question, menu string) {
|
|||||||
// 9. Cleanup Temporary Volume
|
// 9. Cleanup Temporary Volume
|
||||||
// `
|
// `
|
||||||
|
|
||||||
|
menu := `1. Portainer EE Repository
|
||||||
|
2. Portainer CE Repository
|
||||||
|
3. Portainer Agent Repository
|
||||||
|
4. Others`
|
||||||
|
|
||||||
fmt.Println(colorCyan, menu, colorReset)
|
fmt.Println(colorCyan, menu, colorReset)
|
||||||
}
|
}
|
||||||
|
@ -14,14 +14,6 @@ func PromptContinue() bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func PromptMenu(listMenu func()) int {
|
|
||||||
listMenu()
|
|
||||||
|
|
||||||
var option int
|
|
||||||
fmt.Scanf("%d", &option)
|
|
||||||
return option
|
|
||||||
}
|
|
||||||
|
|
||||||
func prompt(question string) string {
|
func prompt(question string) string {
|
||||||
fmt.Printf("%s %s :%s", colorYellow, question, colorReset)
|
fmt.Printf("%s %s :%s", colorYellow, question, colorReset)
|
||||||
var ret string
|
var ret string
|
||||||
|
Loading…
Reference in New Issue
Block a user