Skip to content

Commit

Permalink
Merge pull request #23 from local-deploy/DL-T-22
Browse files Browse the repository at this point in the history
check if docker compose installed as a plugin
  • Loading branch information
varrcan authored Sep 11, 2022
2 parents 1732313 + 0d616e9 commit 12addf2
Show file tree
Hide file tree
Showing 6 changed files with 82 additions and 23 deletions.
16 changes: 11 additions & 5 deletions command/deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"github.com/docker/docker/client"
"github.com/pterm/pterm"
"github.com/spf13/cobra"
"github.com/varrcan/dl/helper"
"github.com/varrcan/dl/project"
)

Expand Down Expand Up @@ -196,15 +197,20 @@ func upDbContainer() error {
containerExists, err := cli.ContainerList(ctx, types.ContainerListOptions{Filters: containerFilter})

if len(containerExists) == 0 {
compose, lookErr := exec.LookPath("docker-compose")
if lookErr != nil {
return lookErr
bin, option := helper.GetCompose()
Args := []string{bin}
preArgs := []string{"-p", project.Env.GetString("NETWORK_NAME"), "up", "-d", "db"}

if len(option) > 0 {
Args = append(Args, option)
}

Args = append(Args, preArgs...)

cmdCompose := &exec.Cmd{
Path: compose,
Path: bin,
Dir: project.Env.GetString("PWD"),
Args: []string{compose, "-p", project.Env.GetString("NETWORK_NAME"), "up", "-d", "db"},
Args: Args,
Env: project.CmdEnv(),
}

Expand Down
21 changes: 13 additions & 8 deletions command/down.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (

"github.com/pterm/pterm"
"github.com/spf13/cobra"
"github.com/varrcan/dl/helper"
"github.com/varrcan/dl/project"
)

Expand All @@ -17,7 +18,7 @@ func init() {
var downCmd = &cobra.Command{
Use: "down",
Short: "Down project",
Long: `Stop and remove running project containers and network.
Long: `Stop and remove running project containers and network.
Analogue of the "docker-compose down" command.`,
Run: func(cmd *cobra.Command, args []string) {
down()
Expand All @@ -27,18 +28,22 @@ Analogue of the "docker-compose down" command.`,
func down() {
project.LoadEnv()

compose, lookErr := exec.LookPath("docker-compose")
if lookErr != nil {
pterm.FgRed.Printfln("docker-compose not found. Please install it. https://docs.docker.com/compose/install/")
return
pterm.FgGreen.Printfln("Stopping project...")

bin, option := helper.GetCompose()
Args := []string{bin}
preArgs := []string{"-p", project.Env.GetString("NETWORK_NAME"), "down"}

if len(option) > 0 {
Args = append(Args, option)
}

pterm.FgGreen.Printfln("Stopping project...")
Args = append(Args, preArgs...)

cmdCompose := &exec.Cmd{
Path: compose,
Path: bin,
Dir: project.Env.GetString("PWD"),
Args: []string{compose, "-p", project.Env.GetString("NETWORK_NAME"), "down"},
Args: Args,
Env: project.CmdEnv(),
Stdout: os.Stdout,
Stderr: os.Stderr,
Expand Down
23 changes: 14 additions & 9 deletions command/up.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/docker/docker/client"
"github.com/pterm/pterm"
"github.com/spf13/cobra"
"github.com/varrcan/dl/helper"
"github.com/varrcan/dl/project"
)

Expand All @@ -21,7 +22,7 @@ func init() {
var upCmd = &cobra.Command{
Use: "up",
Short: "Up project",
Long: `Start project containers. On completion, displays the local links to the project.
Long: `Start project containers. On completion, displays the local links to the project.
Analogue of the "docker-compose up -d" command.`,
Run: func(cmd *cobra.Command, args []string) {
up()
Expand All @@ -46,26 +47,30 @@ func up() {
return
}

compose, lookErr := exec.LookPath("docker-compose")
if lookErr != nil {
pterm.FgRed.Printfln("docker-compose not found. Please install it. https://docs.docker.com/compose/install/")
return
pterm.FgGreen.Printfln("Starting project...")

bin, option := helper.GetCompose()
Args := []string{bin}
preArgs := []string{"-p", project.Env.GetString("NETWORK_NAME"), "up", "-d"}

if len(option) > 0 {
Args = append(Args, option)
}

pterm.FgGreen.Printfln("Starting project...")
Args = append(Args, preArgs...)

cmdCompose := &exec.Cmd{
Path: compose,
Path: bin,
Dir: project.Env.GetString("PWD"),
Args: []string{compose, "-p", project.Env.GetString("NETWORK_NAME"), "up", "-d"},
Args: Args,
Env: project.CmdEnv(),
Stdout: os.Stdout,
Stderr: os.Stderr,
}

err = cmdCompose.Run()
if err != nil {
pterm.FgGreen.Printfln(fmt.Sprint(err))
pterm.FgRed.Printfln(fmt.Sprint(err))
return
}
pterm.FgGreen.Printfln("Project has been successfully started")
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ require (
github.com/spf13/viper v1.13.0
golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90
golang.org/x/sync v0.0.0-20220907140024-f12130a52804
golang.org/x/text v0.3.7
)

require (
Expand Down Expand Up @@ -89,7 +90,6 @@ require (
golang.org/x/net v0.0.0-20220909164309-bea034e7d591 // indirect
golang.org/x/sys v0.0.0-20220909162455-aba9fc2a8ff2 // indirect
golang.org/x/term v0.0.0-20220722155259-a9ba230a4035 // indirect
golang.org/x/text v0.3.7 // indirect
google.golang.org/protobuf v1.28.1 // indirect
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
Expand Down
29 changes: 29 additions & 0 deletions helper/functions.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@ package helper

import (
"os"
"os/exec"
"path/filepath"
"reflect"

"github.com/pterm/pterm"
)

// HomeDir user home directory
Expand Down Expand Up @@ -106,3 +109,29 @@ func CallMethod(i interface{}, methodName string) interface{} {
i = make([]string, 0)
return i
}

// GetCompose get link to executable file and arguments
func GetCompose() (string, string) {
if isComposePlugin() {
docker, _ := exec.LookPath("docker")
return docker, "compose"
} else {
dockerCompose, lookErr := exec.LookPath("docker-compose")
if lookErr != nil {
pterm.FgRed.Printfln("docker-compose not found. Please install it. https://docs.docker.com/compose/install/")
os.Exit(1)
}

return dockerCompose, ""
}
}

// isComposePlugin check if docker compose installed as a plugin
func isComposePlugin() bool {
_, err := exec.Command("docker", "compose").CombinedOutput()
if err != nil {
return false
}

return true
}
14 changes: 14 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package main

import (
"context"
"os/exec"

"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/filters"
Expand All @@ -21,6 +22,10 @@ func main() {
return
}

if !dockerCheck() {
return
}

if !wpdeployCheck() {
return
}
Expand Down Expand Up @@ -97,3 +102,12 @@ func wpdeployCheck() bool {
}
return true
}

func dockerCheck() bool {
_, err := exec.LookPath("docker")
if err != nil {
pterm.FgRed.Printfln("Docker not found. Please install it. https://docs.docker.com/engine/install/")
return false
}
return true
}

0 comments on commit 12addf2

Please sign in to comment.