Skip to content

Commit c00a13a

Browse files
authored
Merge pull request #210 from eminaktas/ench/209
feat: introduce new func with name and additional commands
2 parents eb63594 + 0d4ba99 commit c00a13a

File tree

1 file changed

+37
-17
lines changed

1 file changed

+37
-17
lines changed

cmd/kcl/commands/root.go

+37-17
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,11 @@ func New() *cobra.Command {
101101

102102
// NewWithName creates a new KCL CLI with the name
103103
func NewWithName(name string) *cobra.Command {
104+
return NewWithNameAndCommands(name, nil)
105+
}
106+
107+
// NewWithNameAndCommands creates a new KCL CLI with the specified name and additional commands.
108+
func NewWithNameAndCommands(name string, commands []*cobra.Command) *cobra.Command {
104109
cmd := &cobra.Command{
105110
Use: name,
106111
Short: "The KCL Command Line Interface (CLI).",
@@ -109,23 +114,38 @@ func NewWithName(name string) *cobra.Command {
109114
SilenceErrors: true,
110115
Version: version.GetVersionString(),
111116
}
112-
// Language commands
113-
cmd.AddCommand(NewRunCmd())
114-
// Tool commands
115-
cmd.AddCommand(NewLintCmd())
116-
cmd.AddCommand(NewDocCmd())
117-
cmd.AddCommand(NewFmtCmd())
118-
cmd.AddCommand(NewTestCmd())
119-
cmd.AddCommand(NewVetCmd())
120-
cmd.AddCommand(NewCleanCmd())
121-
cmd.AddCommand(NewImportCmd())
122-
// Module & Registry commands
123-
cmd.AddCommand(NewModCmd())
124-
cmd.AddCommand(NewRegistryCmd())
125-
// Server command
126-
cmd.AddCommand(NewServerCmd())
127-
// Version command
128-
cmd.AddCommand(NewVersionCmd())
117+
118+
// Default commands
119+
defaultCommands := []*cobra.Command{
120+
// Language commands
121+
NewRunCmd(),
122+
// Tool commands
123+
NewLintCmd(),
124+
NewDocCmd(),
125+
NewFmtCmd(),
126+
NewTestCmd(),
127+
NewVetCmd(),
128+
NewCleanCmd(),
129+
NewImportCmd(),
130+
// Module & Registry commands
131+
NewModCmd(),
132+
NewRegistryCmd(),
133+
// Server command
134+
NewServerCmd(),
135+
// Version command
136+
NewVersionCmd(),
137+
}
138+
139+
// Add default commands
140+
for _, c := range defaultCommands {
141+
cmd.AddCommand(c)
142+
}
143+
144+
// Add user-provided commands, if any
145+
for _, c := range commands {
146+
cmd.AddCommand(c)
147+
}
148+
129149
// Plugin commands e.g. kcl language server for kcl-language-server
130150
bootstrapCmdPlugin(cmd, plugin.NewDefaultPluginHandler([]string{cmdName}))
131151

0 commit comments

Comments
 (0)