@@ -101,6 +101,11 @@ func New() *cobra.Command {
101
101
102
102
// NewWithName creates a new KCL CLI with the name
103
103
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 {
104
109
cmd := & cobra.Command {
105
110
Use : name ,
106
111
Short : "The KCL Command Line Interface (CLI)." ,
@@ -109,23 +114,38 @@ func NewWithName(name string) *cobra.Command {
109
114
SilenceErrors : true ,
110
115
Version : version .GetVersionString (),
111
116
}
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
+
129
149
// Plugin commands e.g. kcl language server for kcl-language-server
130
150
bootstrapCmdPlugin (cmd , plugin .NewDefaultPluginHandler ([]string {cmdName }))
131
151
0 commit comments