Skip to content

Commit e2597ad

Browse files
committed
feat: docker minikube helm and argocd installation with dtm start command
Signed-off-by: Daniel Hu <[email protected]>
1 parent 3681ac1 commit e2597ad

File tree

3 files changed

+81
-25
lines changed

3 files changed

+81
-25
lines changed

cmd/devstream/start.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ var startCMD = &cobra.Command{
1717

1818
func startCMDFunc(_ *cobra.Command, _ []string) {
1919
err := start.Start()
20-
if err.Error() != "^C" {
20+
if err != nil && err.Error() != "^C" {
2121
fmt.Printf("Failed with error: %s", err)
2222
}
2323
}

internal/pkg/create/create.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ func Create() error {
2121
return create(params)
2222
}
2323

24-
// create will do folling three things:
24+
// create will do following three things:
2525
// 1. create repo by repoScaffolding
26-
// 2. config github actions for this repo
27-
// 3. create argocd application for this repo
26+
// 2. config GitHub actions for this repo
27+
// 3. create Argo CD application for this repo
2828
func create(params *param.Param) error {
2929
if err := createRepo(params); err != nil {
3030
return err
@@ -53,6 +53,7 @@ func createRepo(params *param.Param) error {
5353
"scmType": "github",
5454
"token": params.GithubToken,
5555
}
56+
5657
// 1.create repo
5758
status := cli.StatusForPlugin()
5859
repoScaffoldingOptions := configmanager.RawOptions{
@@ -67,6 +68,7 @@ func createRepo(params *param.Param) error {
6768
if err != nil {
6869
return err
6970
}
71+
7072
// 2.config ci
7173
ciOptions := configmanager.RawOptions{
7274
"scm": repoOptions,
@@ -85,12 +87,13 @@ func createRepo(params *param.Param) error {
8587
_, err = general.Create(ciOptions)
8688
status.End(err)
8789
status.Start("Waiting for github action finished 🐎")
90+
8891
// 3.wait repo ci finished
8992
waitCIFinished()
9093
status.End(err)
9194
return err
92-
9395
}
96+
9497
func createApp(params *param.Param) error {
9598
status := cli.StatusForPlugin()
9699
argocdAppOption := configmanager.RawOptions{

internal/pkg/start/start.go

Lines changed: 73 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ package start
22

33
import (
44
"fmt"
5+
"os"
6+
"os/exec"
7+
"time"
58

69
"github.com/manifoldco/promptui"
710
)
@@ -52,13 +55,13 @@ func dockerExists() bool {
5255
}
5356

5457
func minikubeExists() bool {
55-
// TODO(daniel-hutao)
56-
return false
58+
_, err := exec.LookPath("minikube")
59+
return err == nil
5760
}
5861

5962
func helmExists() bool {
60-
// TODO(daniel-hutao)
61-
return false
63+
_, err := exec.LookPath("helm")
64+
return err == nil
6265
}
6366

6467
func argocdExists() bool {
@@ -75,12 +78,42 @@ func installDocker() error {
7578
_, err := prompt.Run()
7679
if err != nil {
7780
fmt.Println("Docker must be installed. Quit now.")
78-
return nil
81+
return err
82+
}
83+
84+
cmd := exec.Command("brew", "install", "docker", "--cask")
85+
cmd.Stdout = os.Stdout
86+
cmd.Stderr = os.Stderr
87+
if err = cmd.Run(); err != nil {
88+
fmt.Printf("Failed to install Docker. Error: %s", err)
89+
}
90+
91+
cmd = exec.Command("open", "-a", "Docker")
92+
cmd.Stdout = os.Stdout
93+
cmd.Stderr = os.Stderr
94+
if err = cmd.Run(); err != nil {
95+
fmt.Printf("Failed to start up Docker. Error: %s", err)
96+
return err
97+
}
98+
99+
return waitForDockerRun()
100+
}
101+
102+
func waitForDockerRun() error {
103+
fmt.Println("\nPlease make sure your docker has been started. The OS may ask you to authorize it manually.")
104+
fmt.Println()
105+
time.Sleep(time.Second)
106+
prompt := promptui.Prompt{
107+
Label: "I've verified that Docker is running properly by using the `docker version` command.",
108+
IsConfirm: true,
109+
}
110+
111+
_, err := prompt.Run()
112+
if err != nil {
113+
fmt.Println("Please make sure docker starts properly first.")
114+
return err
79115
}
80116

81-
// TODO(daniel-hutao): install Docker
82-
fmt.Println("Docker installing...")
83-
fmt.Println("Docker installed.")
84117
return nil
85118
}
86119

@@ -93,12 +126,16 @@ func installMinikube() error {
93126
_, err := prompt.Run()
94127
if err != nil {
95128
fmt.Println("Minikube must be installed. Quit now.")
96-
return nil
129+
return err
97130
}
98131

99-
// TODO(daniel-hutao): install Minikube
100-
fmt.Println("Minikube installing...")
101-
fmt.Println("Minikube installed.")
132+
cmd := exec.Command("brew", "install", "minikube")
133+
cmd.Stdout = os.Stdout
134+
cmd.Stderr = os.Stderr
135+
if err = cmd.Run(); err != nil {
136+
fmt.Printf("Failed to install Minikube. Error: %s", err)
137+
return err
138+
}
102139
return nil
103140
}
104141

@@ -111,12 +148,16 @@ func installHelm() error {
111148
_, err := prompt.Run()
112149
if err != nil {
113150
fmt.Println("Helm must be installed. Quit now.")
114-
return nil
151+
return err
115152
}
116153

117-
// TODO(daniel-hutao): install Helm
118-
fmt.Println("Helm installing...")
119-
fmt.Println("Helm installed.")
154+
cmd := exec.Command("brew", "install", "helm")
155+
cmd.Stdout = os.Stdout
156+
cmd.Stderr = os.Stderr
157+
if err = cmd.Run(); err != nil {
158+
fmt.Printf("Failed to install Helm. Error: %s", err)
159+
return err
160+
}
120161
return nil
121162
}
122163

@@ -129,11 +170,23 @@ func installArgocd() error {
129170
_, err := prompt.Run()
130171
if err != nil {
131172
fmt.Println("Argo CD must be installed. Quit now.")
132-
return nil
173+
return err
174+
}
175+
176+
cmd := exec.Command("helm", "repo", "add", "argo", "https://argoproj.github.io/argo-helm")
177+
cmd.Stdout = os.Stdout
178+
cmd.Stderr = os.Stderr
179+
if err = cmd.Run(); err != nil {
180+
fmt.Printf("Failed to add Helm repo. Error: %s", err)
181+
return err
133182
}
134183

135-
// TODO(daniel-hutao): install Argo CD
136-
fmt.Println("Argo CD installing...")
137-
fmt.Println("Argo CD installed.")
184+
cmd = exec.Command("helm", "install", "argo/argo-cd", "-n", "argocd", "--create-namespace")
185+
cmd.Stdout = os.Stdout
186+
cmd.Stderr = os.Stderr
187+
if err = cmd.Run(); err != nil {
188+
fmt.Printf("Failed to install Argo CD. Error: %s", err)
189+
return err
190+
}
138191
return nil
139192
}

0 commit comments

Comments
 (0)