41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
|
|
package cmd
|
||
|
|
|
||
|
|
import (
|
||
|
|
"fmt"
|
||
|
|
|
||
|
|
"github.com/spf13/cobra"
|
||
|
|
|
||
|
|
"gmgauthier.com/grokkit/internal/logger"
|
||
|
|
"gmgauthier.com/grokkit/internal/workon" // we'll create this next
|
||
|
|
)
|
||
|
|
|
||
|
|
var workonCmd = &cobra.Command{
|
||
|
|
Use: "workon",
|
||
|
|
Short: "Start work on the next todo item from the queue",
|
||
|
|
Long: `workon picks the next .md file from todo/queued/,
|
||
|
|
moves it to todo/doing/, creates a matching git branch,
|
||
|
|
asks Grok to generate a Work Plan section,
|
||
|
|
appends it to the file, and commits everything.
|
||
|
|
|
||
|
|
Purely transactional — one command, clear success or failure.`,
|
||
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||
|
|
if len(args) != 0 {
|
||
|
|
return fmt.Errorf("workon takes no arguments")
|
||
|
|
}
|
||
|
|
|
||
|
|
logger.Info("Starting workon transaction")
|
||
|
|
|
||
|
|
if err := workon.Run(); err != nil {
|
||
|
|
return fmt.Errorf("workon failed: %w", err)
|
||
|
|
}
|
||
|
|
|
||
|
|
logger.Info("Workon completed successfully")
|
||
|
|
return nil
|
||
|
|
},
|
||
|
|
}
|
||
|
|
|
||
|
|
func init() {
|
||
|
|
workonCmd.Flags().StringP("message", "m", "", "Custom commit message (default: \"Start working on <item>\")")
|
||
|
|
// -f and -c flags will be added later when the spec needs them
|
||
|
|
}
|