Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 7 additions & 19 deletions cmd/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -220,11 +220,7 @@ var configDeleteCmd = &cobra.Command{
os.Exit(1)
}
if yesNo(fmt.Sprintf("You are attempting to delete config for lagoon '%s', are you sure?", lagoonConfig.Lagoon)) {
err := removeConfig(lagoonConfig.Lagoon)
if err != nil {
output.RenderError(err.Error(), outputOptions)
os.Exit(1)
}
removeConfig(lagoonConfig.Lagoon)
}
},
}
Expand All @@ -247,19 +243,14 @@ var configFeatureSwitch = &cobra.Command{
lagoonCLIConfig.EnvironmentFromDirectory = false
}
strictHostKeyChecking, err := cmd.Flags().GetString("strict-host-key-checking")
if err != nil {
output.RenderError(err.Error(), outputOptions)
os.Exit(1)
}
handleError(err)
strictHostKeyCheckingProvided := cmd.Flags().Lookup("strict-host-key-checking").Changed
if strictHostKeyCheckingProvided {
lagoonCLIConfig.StrictHostKeyChecking = strictHostKeyChecking
}

if err := writeLagoonConfig(&lagoonCLIConfig, filepath.Join(configFilePath, configName+configExtension)); err != nil {
output.RenderError(err.Error(), outputOptions)
os.Exit(1)
}
err = writeLagoonConfig(&lagoonCLIConfig, filepath.Join(configFilePath, configName+configExtension))
handleError(err)
},
}

Expand Down Expand Up @@ -399,11 +390,8 @@ func writeLagoonConfig(lc *config.Config, file string) error {
return nil
}

func removeConfig(key string) error {
func removeConfig(key string) {
delete(lagoonCLIConfig.Lagoons, key)
if err := writeLagoonConfig(&lagoonCLIConfig, filepath.Join(configFilePath, configName+configExtension)); err != nil {
output.RenderError(err.Error(), outputOptions)
os.Exit(1)
}
return nil
err := writeLagoonConfig(&lagoonCLIConfig, filepath.Join(configFilePath, configName+configExtension))
handleError(err)
}
34 changes: 8 additions & 26 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,10 +96,7 @@ var rootCmd = &cobra.Command{
Run: func(cmd *cobra.Command, args []string) {
if docsFlag {
err := doc.GenMarkdownTree(cmd, "docs/commands")
if err != nil {
output.RenderError(err.Error(), outputOptions)
os.Exit(1)
}
handleError(err)
fmt.Println("Documentation updated")
return
}
Expand All @@ -114,10 +111,8 @@ var rootCmd = &cobra.Command{

// Execute the root command.
func Execute() {
if err := rootCmd.Execute(); err != nil {
output.RenderError(err.Error(), outputOptions)
os.Exit(1)
}
err := rootCmd.Execute()
handleError(err)
}

// IsInternetActive() checks to see if we have a viable
Expand Down Expand Up @@ -226,28 +221,18 @@ func initConfig() {
// Find home directory.
userPath, err = os.UserHomeDir()
if err != nil {
output.RenderError(fmt.Errorf("couldn't get $HOME: %v", err).Error(), outputOptions)
os.Exit(1)
handleError(fmt.Errorf("couldn't get $HOME: %v", err))
}
configFilePath = userPath

// check if we are being given a path to a different config file
err = getLagoonConfigFile(&configFilePath, &configName, &configExtension, createConfig, rootCmd)
if err != nil {
output.RenderError(err.Error(), outputOptions)
os.Exit(1)
}
handleError(err)

err = readLagoonConfig(&lagoonCLIConfig, filepath.Join(configFilePath, configName+configExtension))
if err != nil {
output.RenderError(err.Error(), outputOptions)
os.Exit(1)
}
handleError(err)
err = getLagoonContext(&lagoonCLIConfig, &cmdLagoon, rootCmd)
if err != nil {
output.RenderError(err.Error(), outputOptions)
os.Exit(1)
}
handleError(err)

// if the directory or repository you're in has a valid .lagoon.yml and docker-compose.yml with x-lagoon-project in it
// we can use that inplaces where projects already exist so you don't have to type it out
Expand All @@ -271,10 +256,7 @@ func yesNo(message string) bool {
Items: []string{"No", "Yes"},
}
_, result, err := prompt.Run()
if err != nil {
output.RenderError(err.Error(), outputOptions)
os.Exit(1)
}
handleError(err)
return result == "Yes"
}
return true
Expand Down
6 changes: 1 addition & 5 deletions cmd/ssh.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (

"github.com/spf13/cobra"
lagoonssh "github.com/uselagoon/lagoon-cli/pkg/lagoon/ssh"
"github.com/uselagoon/lagoon-cli/pkg/output"
"golang.org/x/crypto/ssh"
)

Expand Down Expand Up @@ -87,10 +86,7 @@ var sshEnvCmd = &cobra.Command{
} else {
err = lagoonssh.InteractiveSSH(sshConfig, sshService, sshContainer, config)
}
if err != nil {
output.RenderError(err.Error(), outputOptions)
os.Exit(1)
}
handleError(err)
}
return nil
},
Expand Down
3 changes: 1 addition & 2 deletions cmd/users.go
Original file line number Diff line number Diff line change
Expand Up @@ -311,8 +311,7 @@ var updateUserCmd = &cobra.Command{
return err
}
if firstName == "" && lastName == "" && emailAddress == "" {
output.RenderError("Missing arguments: Nothing to update, please provide a field to update", outputOptions)
return nil
return fmt.Errorf("missing arguments: Nothing to update, please provide a field to update")
}

current := lagoonCLIConfig.Current
Expand Down
7 changes: 2 additions & 5 deletions cmd/web.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (

"github.com/pkg/browser"
"github.com/spf13/cobra"
"github.com/uselagoon/lagoon-cli/pkg/output"
)

var webCmd = &cobra.Command{
Expand All @@ -26,8 +25,7 @@ var webCmd = &cobra.Command{
if lagoonCLIConfig.Lagoons[lagoonCLIConfig.Current].UI != "" {
urlBuilder.WriteString(fmt.Sprintf("/projects/%s", cmdProjectName))
} else {
output.RenderError("unable to determine url for ui, is one set?", outputOptions)
os.Exit(1)
handleError(fmt.Errorf("unable to determine url for ui, is one set?"))
}

url := urlBuilder.String()
Expand All @@ -44,8 +42,7 @@ var kibanaCmd = &cobra.Command{
urlBuilder := strings.Builder{}
urlBuilder.WriteString(lagoonCLIConfig.Lagoons[lagoonCLIConfig.Current].Kibana)
if lagoonCLIConfig.Lagoons[lagoonCLIConfig.Current].Kibana == "" {
output.RenderError("unable to determine url for kibana, is one set?", outputOptions)
os.Exit(1)
handleError(fmt.Errorf("unable to determine url for kibana, is one set?"))
}

url := urlBuilder.String()
Expand Down
4 changes: 2 additions & 2 deletions pkg/output/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ func RenderError(errorMsg string, opts Options) {
jsonData := Result{
Error: trimQuotes(errorMsg),
}
RenderJSON(jsonData, opts)
fmt.Fprintf(os.Stderr, "%s", RenderJSON(jsonData, opts))
} else {
fmt.Fprintf(os.Stderr, "Error: %s", trimQuotes(errorMsg))
}
Expand All @@ -75,7 +75,7 @@ func RenderInfo(infoMsg string, opts Options) {
jsonData := Result{
Info: trimQuotes(infoMsg),
}
RenderJSON(jsonData, opts)
fmt.Fprintf(os.Stderr, "%s", RenderJSON(jsonData, opts))
} else {
fmt.Fprintf(os.Stderr, "Info: %s", trimQuotes(infoMsg))
}
Expand Down
63 changes: 37 additions & 26 deletions pkg/output/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,19 +52,17 @@ func TestRenderError(t *testing.T) {
Pretty: false,
}

rescueStdout := os.Stderr
r, w, _ := os.Pipe()
defer func() {
os.Stderr = rescueStdout
}()
os.Stderr = w
RenderError(testData, outputOptions)
w.Close()
var out bytes.Buffer
_, _ = io.Copy(&out, r)
if out.String() != testSuccess {
checkEqual(t, out.String(), testSuccess, " render error stdout processing failed")
}
out := captureStderr(func() {
RenderError(testData, outputOptions)
})
checkEqual(t, out, testSuccess, " render error stdout processing failed")

var testJson = `{"error":"Error Message"}`
outputOptions.JSON = true
out = captureStderr(func() {
RenderError(testData, outputOptions)
})
checkEqual(t, out, testJson, " render error stdout processing failed")
}

func TestRenderInfo(t *testing.T) {
Expand All @@ -78,19 +76,17 @@ func TestRenderInfo(t *testing.T) {
Pretty: false,
}

rescueStdout := os.Stderr
r, w, _ := os.Pipe()
defer func() {
os.Stderr = rescueStdout
}()
os.Stderr = w
RenderInfo(testData, outputOptions)
w.Close()
var out bytes.Buffer
_, _ = io.Copy(&out, r)
if out.String() != testSuccess1 {
checkEqual(t, out.String(), testSuccess1, " render info stdout processing failed")
}
out := captureStderr(func() {
RenderInfo(testData, outputOptions)
})
checkEqual(t, out, testSuccess1, " render info stdout processing failed")

var testJson = `{"info":"Info Message"}`
outputOptions.JSON = true
out = captureStderr(func() {
RenderInfo(testData, outputOptions)
})
checkEqual(t, out, testJson, " render error stdout processing failed")
}

func TestRenderOutput(t *testing.T) {
Expand Down Expand Up @@ -143,3 +139,18 @@ func TestRenderString(t *testing.T) {
output = RenderString(testData, outputOptions)
checkEqual(t, output, testSuccess2, " render string json processing failed")
}

func captureStderr(fn func()) string {
var out bytes.Buffer
rescueStderr := os.Stderr
r, w, _ := os.Pipe()
os.Stderr = w

fn()

w.Close()
os.Stderr = rescueStderr

_, _ = io.Copy(&out, r)
return out.String()
}
Loading