Skip to content

Commit d864684

Browse files
committed
refactor: flags of commands
Signed-off-by: Bird <[email protected]>
1 parent 6632eec commit d864684

File tree

11 files changed

+57
-48
lines changed

11 files changed

+57
-48
lines changed

cmd/devstream/apply.go

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66

77
"github.com/spf13/cobra"
88

9-
"github.com/devstream-io/devstream/internal/pkg/completion"
109
"github.com/devstream-io/devstream/internal/pkg/pluginengine"
1110
"github.com/devstream-io/devstream/pkg/util/log"
1211
)
@@ -21,6 +20,7 @@ DevStream will generate and execute a new plan based on the config file and the
2120
}
2221

2322
func applyCMDFunc(cmd *cobra.Command, args []string) {
23+
checkConfigFile()
2424
log.Info("Apply started.")
2525
if err := pluginengine.Apply(configFilePath, continueDirectly); err != nil {
2626
log.Errorf("Apply failed => %s.", err)
@@ -33,10 +33,7 @@ func applyCMDFunc(cmd *cobra.Command, args []string) {
3333
}
3434

3535
func init() {
36-
applyCMD.Flags().StringVarP(&configFilePath, configFlagName, "f", "", "config file or directory")
37-
applyCMD.Flags().StringVarP(&pluginDir, pluginDirFlagName, "d", defaultPluginDir, "plugins directory")
38-
applyCMD.Flags().BoolVarP(&continueDirectly, "yes", "y", false, "apply directly without confirmation")
39-
40-
completion.FlagFilenameCompletion(applyCMD, configFlagName)
41-
completion.FlagDirnameCompletion(applyCMD, pluginDirFlagName)
36+
addFlagConfigFile(applyCMD)
37+
addFlagPluginDir(applyCMD)
38+
addFlagContinueDirectly(applyCMD)
4239
}

cmd/devstream/common.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
package main
22

3+
import (
4+
"os"
5+
"strings"
6+
7+
"github.com/spf13/cobra"
8+
9+
"github.com/devstream-io/devstream/internal/pkg/completion"
10+
"github.com/devstream-io/devstream/pkg/util/log"
11+
)
12+
313
var (
414
configFilePath string
515
pluginDir string
@@ -11,3 +21,24 @@ const (
1121
pluginDirFlagName = "plugin-dir"
1222
defaultPluginDir = "~/.devstream/plugins"
1323
)
24+
25+
func checkConfigFile() {
26+
if strings.TrimSpace(configFilePath) == "" {
27+
log.Errorf(`Config file is required. You could use "-f filename" or "-f directory" to specify it.`)
28+
os.Exit(1)
29+
}
30+
}
31+
32+
func addFlagConfigFile(cmd *cobra.Command) {
33+
cmd.Flags().StringVarP(&configFilePath, configFlagName, "f", "", "config file or directory")
34+
completion.FlagFilenameCompletion(cmd, configFlagName)
35+
}
36+
37+
func addFlagPluginDir(cmd *cobra.Command) {
38+
cmd.Flags().StringVarP(&pluginDir, pluginDirFlagName, "d", defaultPluginDir, "plugins directory")
39+
completion.FlagDirnameCompletion(cmd, pluginDirFlagName)
40+
}
41+
42+
func addFlagContinueDirectly(cmd *cobra.Command) {
43+
cmd.Flags().BoolVarP(&continueDirectly, "yes", "y", false, "continue directly without confirmation")
44+
}

cmd/devstream/delete.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55

66
"github.com/spf13/cobra"
77

8-
"github.com/devstream-io/devstream/internal/pkg/completion"
98
"github.com/devstream-io/devstream/internal/pkg/pluginengine"
109
"github.com/devstream-io/devstream/pkg/util/log"
1110
)
@@ -21,6 +20,7 @@ DevStream will delete everything defined in the config file, regardless of the s
2120
}
2221

2322
func deleteCMDFunc(cmd *cobra.Command, args []string) {
23+
checkConfigFile()
2424
log.Info("Delete started.")
2525
if err := pluginengine.Remove(configFilePath, continueDirectly, isForceDelete); err != nil {
2626
log.Errorf("Delete error: %s.", err)
@@ -31,11 +31,9 @@ func deleteCMDFunc(cmd *cobra.Command, args []string) {
3131
}
3232

3333
func init() {
34-
deleteCMD.Flags().BoolVarP(&isForceDelete, "force", "", false, "force delete by config")
35-
deleteCMD.Flags().StringVarP(&configFilePath, configFlagName, "f", "", "config file or directory")
36-
deleteCMD.Flags().StringVarP(&pluginDir, pluginDirFlagName, "d", defaultPluginDir, "plugins directory")
37-
deleteCMD.Flags().BoolVarP(&continueDirectly, "yes", "y", false, "delete directly without confirmation")
34+
addFlagConfigFile(deleteCMD)
35+
addFlagPluginDir(deleteCMD)
36+
addFlagContinueDirectly(deleteCMD)
3837

39-
completion.FlagFilenameCompletion(deleteCMD, configFlagName)
40-
completion.FlagDirnameCompletion(deleteCMD, pluginDirFlagName)
38+
deleteCMD.Flags().BoolVarP(&isForceDelete, "force", "", false, "force delete by config")
4139
}

cmd/devstream/destroy.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55

66
"github.com/spf13/cobra"
77

8-
"github.com/devstream-io/devstream/internal/pkg/completion"
98
"github.com/devstream-io/devstream/internal/pkg/pluginengine"
109
"github.com/devstream-io/devstream/pkg/util/log"
1110
)
@@ -20,6 +19,7 @@ var destroyCMD = &cobra.Command{
2019
}
2120

2221
func destroyCMDFunc(cmd *cobra.Command, args []string) {
22+
checkConfigFile()
2323
log.Info("Destroy started.")
2424
if err := pluginengine.Destroy(configFilePath, continueDirectly, isForceDestroy); err != nil {
2525
log.Errorf("Destroy failed => %s.", err)
@@ -29,10 +29,9 @@ func destroyCMDFunc(cmd *cobra.Command, args []string) {
2929
}
3030

3131
func init() {
32-
destroyCMD.Flags().BoolVarP(&isForceDestroy, "force", "", false, "force destroy by config")
33-
destroyCMD.Flags().StringVarP(&configFilePath, configFlagName, "f", "", "config file or directory")
34-
destroyCMD.Flags().StringVarP(&pluginDir, pluginDirFlagName, "d", defaultPluginDir, "plugins directory")
35-
destroyCMD.Flags().BoolVarP(&continueDirectly, "yes", "y", false, "destroy directly without confirmation")
32+
addFlagConfigFile(destroyCMD)
33+
addFlagPluginDir(destroyCMD)
34+
addFlagContinueDirectly(destroyCMD)
3635

37-
completion.FlagFilenameCompletion(destroyCMD, configFlagName)
36+
destroyCMD.Flags().BoolVarP(&isForceDestroy, "force", "", false, "force destroy by config")
3837
}

cmd/devstream/init.go

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"github.com/spf13/cobra"
1010

1111
"github.com/devstream-io/devstream/cmd/devstream/list"
12-
"github.com/devstream-io/devstream/internal/pkg/completion"
1312
"github.com/devstream-io/devstream/internal/pkg/configmanager"
1413
"github.com/devstream-io/devstream/internal/pkg/pluginmanager"
1514
"github.com/devstream-io/devstream/internal/pkg/version"
@@ -117,17 +116,13 @@ func GetPluginsFromFlags() (tools configmanager.Tools, err error) {
117116
}
118117

119118
func init() {
120-
// flags for init from config file
121-
initCMD.Flags().StringVarP(&configFilePath, configFlagName, "f", "", "config file or directory")
122-
initCMD.Flags().StringVarP(&pluginDir, pluginDirFlagName, "d", defaultPluginDir, "plugins directory")
119+
addFlagConfigFile(initCMD)
120+
addFlagPluginDir(initCMD)
123121

124122
// downloading specific plugins from flags
125123
initCMD.Flags().BoolVar(&downloadOnly, "download-only", false, "download plugins only")
126124
initCMD.Flags().StringSliceVarP(&pluginsToDownload, "plugins", "p", []string{}, "the plugins to be downloaded")
127125
initCMD.Flags().BoolVarP(&downloadAll, "all", "a", false, "download all plugins")
128126
initCMD.Flags().StringVar(&initOS, "os", runtime.GOOS, "download plugins for specific os")
129127
initCMD.Flags().StringVar(&initArch, "arch", runtime.GOARCH, "download plugins for specific arch")
130-
131-
completion.FlagFilenameCompletion(initCMD, configFlagName)
132-
completion.FlagDirnameCompletion(initCMD, pluginDirFlagName)
133128
}

cmd/devstream/show.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,14 @@ func init() {
6060
showCMD.AddCommand(showConfigCMD)
6161
showCMD.AddCommand(showStatusCMD)
6262

63+
addFlagConfigFile(showConfigCMD)
64+
addFlagPluginDir(showConfigCMD)
65+
6366
showConfigCMD.Flags().StringVarP(&plugin, "plugin", "p", "", "specify name with the plugin")
6467
showConfigCMD.Flags().StringVarP(&template, "template", "t", "", "print a template config, e.g. quickstart/gitops/...")
6568
completion.FlagPluginsCompletion(showConfigCMD, "plugin")
6669

6770
showStatusCMD.Flags().StringVarP(&plugin, "plugin", "p", "", "specify name with the plugin")
6871
showStatusCMD.Flags().StringVarP(&instanceID, "id", "i", "", "specify id with the plugin instance")
6972
showStatusCMD.Flags().BoolVarP(&statusAllFlag, "all", "a", false, "show all instances of all plugins status")
70-
showStatusCMD.Flags().StringVarP(&pluginDir, pluginDirFlagName, "d", defaultPluginDir, "plugins directory")
71-
showStatusCMD.Flags().StringVarP(&configFilePath, "config-file", "f", "config.yaml", "config file")
72-
completion.FlagPluginsCompletion(showStatusCMD, "plugin")
7373
}

cmd/devstream/upgrade.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,5 @@ func upgradeCMDFunc(cmd *cobra.Command, args []string) {
2121
}
2222

2323
func init() {
24-
upgradeCMD.Flags().BoolVarP(&continueDirectly, "yes", "y", false, "upgrade directly without confirmation")
24+
addFlagContinueDirectly(upgradeCMD)
2525
}

cmd/devstream/verify.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package main
33
import (
44
"github.com/spf13/cobra"
55

6-
"github.com/devstream-io/devstream/internal/pkg/completion"
76
"github.com/devstream-io/devstream/internal/pkg/pluginengine"
87
"github.com/devstream-io/devstream/pkg/util/log"
98
)
@@ -25,9 +24,6 @@ func verifyCMDFunc(cmd *cobra.Command, args []string) {
2524
}
2625

2726
func init() {
28-
verifyCMD.Flags().StringVarP(&configFilePath, configFlagName, "f", "config.yaml", "config file")
29-
verifyCMD.Flags().StringVarP(&pluginDir, pluginDirFlagName, "d", defaultPluginDir, "plugins directory")
30-
31-
completion.FlagFilenameCompletion(verifyCMD, configFlagName)
32-
completion.FlagDirnameCompletion(verifyCMD, pluginDirFlagName)
27+
addFlagConfigFile(verifyCMD)
28+
addFlagPluginDir(verifyCMD)
3329
}

internal/pkg/configmanager/rawconfig.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ import (
77
"unicode"
88

99
"gopkg.in/yaml.v3"
10-
11-
"github.com/devstream-io/devstream/pkg/util/log"
1210
)
1311

1412
// rawConfig respent every valid config block for devstream
@@ -138,7 +136,6 @@ func (c *rawConfig) getTemplatePipelineMap() (map[string]string, error) {
138136
if _, ok := pipelineTemplateMap[t.Name]; ok {
139137
return nil, fmt.Errorf("pipelineTemplate <%s> is duplicated", t.Name)
140138
}
141-
log.Infof("pipelineTemplate %s is loaded", t.Name)
142139
pipelineTemplateMap[t.Name] = string(rawPipeline)
143140
}
144141
return pipelineTemplateMap, nil

internal/pkg/configmanager/tool.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ func (tools Tools) validate() (errs []error) {
6666
for _, tool := range tools {
6767
errs = append(errs, tool.validate()...)
6868
}
69-
errs = append(errs, tools.DuplicatedCheck()...)
69+
errs = append(errs, tools.duplicatedCheck()...)
7070
return
7171
}
7272

@@ -117,11 +117,7 @@ func (t *Tool) GetPluginMD5FileNameWithOSAndArch(os, arch string) string {
117117
return t.GetPluginNameWithOSAndArch(os, arch) + ".md5"
118118
}
119119

120-
func (t *Tool) EqualNameAndInstanceID(other *Tool) bool {
121-
return t.Name == other.Name && t.InstanceID == other.InstanceID
122-
}
123-
124-
func (tools Tools) DuplicatedCheck() (errs []error) {
120+
func (tools Tools) duplicatedCheck() (errs []error) {
125121
list := make(map[string]struct{})
126122
for _, t := range tools {
127123
key := t.KeyWithNameAndInstanceID()

0 commit comments

Comments
 (0)