Skip to content

Commit ec74df7

Browse files
Added a new command to change version (#185)
* added update command to change version Signed-off-by: Kartikay <[email protected]> * added homedir.Dir() Signed-off-by: Kartikay <[email protected]> * added homedir Signed-off-by: Kartikay <[email protected]> --------- Signed-off-by: Kartikay <[email protected]>
1 parent a6c26e0 commit ec74df7

File tree

2 files changed

+100
-0
lines changed

2 files changed

+100
-0
lines changed

pkg/cmd/root/root.go

+2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525

2626
"github.com/litmuschaos/litmusctl/pkg/cmd/run"
2727
"github.com/litmuschaos/litmusctl/pkg/cmd/save"
28+
"github.com/litmuschaos/litmusctl/pkg/cmd/update"
2829

2930
"github.com/litmuschaos/litmusctl/pkg/cmd/connect"
3031
"github.com/litmuschaos/litmusctl/pkg/cmd/delete"
@@ -77,6 +78,7 @@ func init() {
7778
rootCmd.AddCommand(save.SaveCmd)
7879
rootCmd.AddCommand(run.RunCmd)
7980
rootCmd.AddCommand(list.ListCmd)
81+
rootCmd.AddCommand(update.UpdateCmd)
8082

8183
// Here you will define your flags and configuration settings.
8284
// Cobra supports persistent flags, which, if defined here,

pkg/cmd/update/update.go

+98
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package update
2+
3+
import (
4+
"io"
5+
"net/http"
6+
"os"
7+
"os/exec"
8+
"runtime"
9+
10+
"github.com/litmuschaos/litmusctl/pkg/utils"
11+
homedir "github.com/mitchellh/go-homedir"
12+
"github.com/spf13/cobra"
13+
)
14+
15+
var UpdateCmd = &cobra.Command{
16+
Use: "update",
17+
Short: "Changes the version of litmusctl",
18+
Args: cobra.ExactArgs(1),
19+
Long: ``,
20+
Run: func(cmd *cobra.Command, args []string) {
21+
updateVersion := args[0]
22+
homeDir, err := homedir.Dir()
23+
if err != nil {
24+
utils.PrintError(err)
25+
}
26+
27+
var assetURL string = "https://litmusctl-production-bucket.s3.amazonaws.com/"
28+
var binaryName string = "litmusctl"
29+
switch runtime.GOOS {
30+
case "windows":
31+
if runtime.GOARCH == "386" {
32+
binaryName += "-windows-386-" + updateVersion + ".tar.gz"
33+
assetURL += binaryName
34+
} else if runtime.GOARCH == "amd64" {
35+
binaryName += "-windows-amd64-" + updateVersion + ".tar.gz"
36+
assetURL += binaryName
37+
} else {
38+
binaryName += "-windows-arm64-" + updateVersion + ".tar.gz"
39+
assetURL += binaryName
40+
}
41+
case "linux":
42+
if runtime.GOARCH == "arm64" {
43+
binaryName += "-linux-arm64-" + updateVersion + ".tar.gz"
44+
assetURL += binaryName
45+
} else if runtime.GOARCH == "amd64" {
46+
binaryName += "-linux-amd64-" + updateVersion + ".tar.gz"
47+
assetURL += binaryName
48+
} else if runtime.GOARCH == "arm" {
49+
binaryName += "-linux-arm-" + updateVersion + ".tar.gz"
50+
assetURL += binaryName
51+
} else {
52+
binaryName += "-linux-386-" + updateVersion + ".tar.gz"
53+
assetURL += binaryName
54+
}
55+
case "darwin":
56+
if runtime.GOARCH == "amd64" {
57+
binaryName += "-darwin-amd64-" + updateVersion + ".tar.gz"
58+
assetURL += binaryName
59+
}
60+
}
61+
62+
utils.White.Print("Downloading:\n")
63+
64+
resp2, err := http.Get(assetURL)
65+
if err != nil {
66+
utils.PrintError(err)
67+
}
68+
69+
tempFile, err := os.CreateTemp("", binaryName)
70+
if err != nil {
71+
utils.PrintError(err)
72+
return
73+
}
74+
defer os.Remove(tempFile.Name())
75+
76+
_, err = io.Copy(tempFile, resp2.Body)
77+
if err != nil {
78+
utils.PrintError(err)
79+
return
80+
}
81+
utils.White_B.Print("OK\n")
82+
83+
tempFile.Close()
84+
85+
tarCmd := exec.Command("tar", "xzf", tempFile.Name(), "-C", homeDir)
86+
tarCmd.Stdout = os.Stdout
87+
tarCmd.Stderr = os.Stderr
88+
89+
utils.White_B.Print("Extracting binary...\n")
90+
err = tarCmd.Run()
91+
if err != nil {
92+
utils.PrintError(err)
93+
return
94+
}
95+
96+
utils.White_B.Print("Binary extracted successfully\n")
97+
},
98+
}

0 commit comments

Comments
 (0)