@@ -101,6 +101,11 @@ func New() *cobra.Command {
101101
102102// NewWithName creates a new KCL CLI with the name
103103func 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