summaryrefslogtreecommitdiff
path: root/internal/cmd
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-07-19 16:29:06 +0300
committerPaul Buetow <paul@buetow.org>2025-07-19 16:29:06 +0300
commit2ca1d94d1c6785a40b722a581a842be6a8741cc6 (patch)
tree4f5ee4a0a3f6f320b2f6b2ea08792f8fafece482 /internal/cmd
parente23fc252fbac2aba69f1f1268af9425af4d43d19 (diff)
feat: add support for aichat as AI tool for release notesv0.8.0
- Add --ai-tool flag to release and sync commands - Support both 'claude' and 'aichat' options (default: claude) - Update GenerateAIReleaseNotes to handle both tools - Add tool-specific error messages and hints - Update documentation with usage examples This allows users to choose between Claude CLI and aichat for generating AI-powered release notes. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Diffstat (limited to 'internal/cmd')
-rw-r--r--internal/cmd/release.go8
-rw-r--r--internal/cmd/sync.go8
2 files changed, 14 insertions, 2 deletions
diff --git a/internal/cmd/release.go b/internal/cmd/release.go
index f05005a..f9fa04f 100644
--- a/internal/cmd/release.go
+++ b/internal/cmd/release.go
@@ -12,6 +12,7 @@ var (
noAINotes bool
updateExisting bool
templatePath string
+ aiTool string
)
var releaseCmd = &cobra.Command{
@@ -70,13 +71,17 @@ If no repository is specified, processes all configured repositories.`,
gitsyncer release create --update-existing
# Create for specific repository without AI
- gitsyncer release create myproject --no-ai-notes`,
+ gitsyncer release create myproject --no-ai-notes
+
+ # Use aichat instead of claude for AI release notes
+ gitsyncer release create --ai-tool aichat`,
Run: func(cmd *cobra.Command, args []string) {
flags := buildFlags()
flags.CheckReleases = true
flags.AutoCreateReleases = autoRelease
flags.AIReleaseNotes = !noAINotes
flags.UpdateReleases = updateExisting
+ flags.AITool = aiTool
if len(args) > 0 {
// Create releases for specific repo
@@ -103,4 +108,5 @@ func init() {
releaseCreateCmd.Flags().BoolVar(&noAINotes, "no-ai-notes", false, "disable AI-generated release notes (AI notes are enabled by default)")
releaseCreateCmd.Flags().BoolVar(&updateExisting, "update-existing", false, "update existing releases with new AI-generated notes")
releaseCreateCmd.Flags().StringVar(&templatePath, "template", "", "custom template for release notes")
+ releaseCreateCmd.Flags().StringVar(&aiTool, "ai-tool", "claude", "AI tool to use for release notes (claude or aichat)")
} \ No newline at end of file
diff --git a/internal/cmd/sync.go b/internal/cmd/sync.go
index abedb7e..9fcf0fd 100644
--- a/internal/cmd/sync.go
+++ b/internal/cmd/sync.go
@@ -14,6 +14,7 @@ var (
noReleases bool
autoCreate bool
noAIReleaseNotes bool
+ syncAITool string
)
var syncCmd = &cobra.Command{
@@ -39,7 +40,10 @@ var syncRepoCmd = &cobra.Command{
gitsyncer sync repo myproject --dry-run
# Sync without AI-generated release notes
- gitsyncer sync repo myproject --no-ai-release-notes`,
+ gitsyncer sync repo myproject --no-ai-release-notes
+
+ # Auto-create releases using aichat for AI notes
+ gitsyncer sync repo myproject --auto-create-releases --ai-tool aichat`,
Run: func(cmd *cobra.Command, args []string) {
flags := buildFlags()
flags.SyncRepo = args[0]
@@ -185,6 +189,7 @@ func init() {
syncCmd.PersistentFlags().BoolVar(&noReleases, "no-releases", false, "skip release checking after sync")
syncCmd.PersistentFlags().BoolVar(&autoCreate, "auto-create-releases", false, "automatically create releases without confirmation")
syncCmd.PersistentFlags().BoolVar(&noAIReleaseNotes, "no-ai-release-notes", false, "disable AI-generated release notes (AI notes are enabled by default)")
+ syncCmd.PersistentFlags().StringVar(&syncAITool, "ai-tool", "claude", "AI tool to use for release notes when auto-creating (claude or aichat)")
}
func buildFlags() *cli.Flags {
@@ -196,6 +201,7 @@ func buildFlags() *cli.Flags {
NoCheckReleases: noReleases,
AutoCreateReleases: autoCreate,
AIReleaseNotes: !noAIReleaseNotes,
+ AITool: syncAITool,
CreateGitHubRepos: createRepos,
CreateCodebergRepos: createRepos,
}