Introduce a new `scaffold` command that uses Grok to generate new files based on a description. Includes options for generating tests, dry runs, force overwrite, and language override. Detects language from file extension and harvests project context for better generation.
71 lines
1.9 KiB
Go
71 lines
1.9 KiB
Go
package cmd
|
|
|
|
import (
|
|
"os"
|
|
|
|
"fmt"
|
|
|
|
"github.com/spf13/cobra"
|
|
"gmgauthier.com/grokkit/config"
|
|
"gmgauthier.com/grokkit/internal/logger"
|
|
"gmgauthier.com/grokkit/internal/version"
|
|
)
|
|
|
|
var rootCmd = &cobra.Command{
|
|
Use: "grokkit",
|
|
Short: "Personal Grok / xAI command-line toolkit",
|
|
Long: `A fast, native Go CLI for Grok. Chat, edit files, and supercharge your git workflow.`,
|
|
PersistentPreRun: func(cmd *cobra.Command, args []string) {
|
|
config.Load()
|
|
|
|
// Determine log level: flag > config > default
|
|
logLevel := config.GetLogLevel()
|
|
if debug, _ := cmd.Flags().GetBool("debug"); debug {
|
|
logLevel = "debug"
|
|
}
|
|
if verbose, _ := cmd.Flags().GetBool("verbose"); verbose {
|
|
logLevel = "info"
|
|
}
|
|
|
|
_ = logger.Init(logLevel) // Logging is optional, don't fail if it errors
|
|
logger.Info("grokkit starting", "command", cmd.Name(), "log_level", logLevel)
|
|
},
|
|
}
|
|
|
|
func Execute() {
|
|
if err := rootCmd.Execute(); err != nil {
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
|
|
var versionCmd = &cobra.Command{
|
|
Use: "version",
|
|
Short: "Print the version information",
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
fmt.Printf("grokkit version %s (commit %s)\\n", version.Version, version.Commit)
|
|
},
|
|
}
|
|
|
|
func init() {
|
|
rootCmd.AddCommand(chatCmd)
|
|
rootCmd.AddCommand(editCmd)
|
|
rootCmd.AddCommand(reviewCmd)
|
|
rootCmd.AddCommand(commitMsgCmd)
|
|
rootCmd.AddCommand(commitCmd)
|
|
rootCmd.AddCommand(prDescribeCmd)
|
|
rootCmd.AddCommand(historyCmd)
|
|
rootCmd.AddCommand(agentCmd)
|
|
rootCmd.AddCommand(completionCmd)
|
|
rootCmd.AddCommand(versionCmd)
|
|
rootCmd.AddCommand(docsCmd)
|
|
rootCmd.AddCommand(testgenCmd)
|
|
rootCmd.AddCommand(scaffoldCmd)
|
|
|
|
// Add model flag to all commands
|
|
rootCmd.PersistentFlags().StringP("model", "m", "", "Grok model to use (overrides config)")
|
|
|
|
// Add logging flags
|
|
rootCmd.PersistentFlags().Bool("debug", false, "Enable debug logging (logs to stderr and file)")
|
|
rootCmd.PersistentFlags().BoolP("verbose", "v", false, "Enable verbose logging")
|
|
}
|