Introduces the `workon` CLI command which selects the next queued todo item, moves it to doing/, creates a git branch, generates a work plan via Grok, appends it to the file, and commits the changes. Includes skeleton implementation with TODOs for full functionality.
77 lines
2.0 KiB
Go
77 lines
2.0 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) {
|
|
_, err := fmt.Fprintf(os.Stdout, "grokkit version %s (commit %s)\n", version.Version, version.Commit)
|
|
if err != nil {
|
|
return
|
|
}
|
|
},
|
|
}
|
|
|
|
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)
|
|
rootCmd.AddCommand(queryCmd)
|
|
rootCmd.AddCommand(analyzeCmd)
|
|
rootCmd.AddCommand(workonCmd)
|
|
|
|
// 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")
|
|
}
|