Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ install: build
.PHONY: recompile
recompile: build
./$(BINARY_NAME) compile --validate --instructions
./$(BINARY_NAME) compile --workflow-dir pkg/cli/workflows --validate;
./$(BINARY_NAME) compile --workflows-dir pkg/cli/workflows --validate;

# Run development server
.PHONY: dev
Expand Down
40 changes: 30 additions & 10 deletions cmd/gh-aw/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,18 +88,19 @@ It's a shortcut for:
nameFlag, _ := cmd.Flags().GetString("name")
prFlag, _ := cmd.Flags().GetBool("pr")
forceFlag, _ := cmd.Flags().GetBool("force")
workflowsDir, _ := cmd.Flags().GetString("workflows-dir")
if err := validateEngine(engineOverride); err != nil {
fmt.Fprintln(os.Stderr, console.FormatErrorMessage(err.Error()))
os.Exit(1)
}

if prFlag {
if err := cli.AddWorkflows(workflows, numberFlag, verbose, engineOverride, repoFlag, nameFlag, forceFlag, true); err != nil {
if err := cli.AddWorkflowsWithDir(workflows, numberFlag, verbose, engineOverride, repoFlag, nameFlag, forceFlag, true, workflowsDir); err != nil {
fmt.Fprintln(os.Stderr, console.FormatErrorMessage(err.Error()))
os.Exit(1)
}
} else {
if err := cli.AddWorkflows(workflows, numberFlag, verbose, engineOverride, repoFlag, nameFlag, forceFlag, false); err != nil {
if err := cli.AddWorkflowsWithDir(workflows, numberFlag, verbose, engineOverride, repoFlag, nameFlag, forceFlag, false, workflowsDir); err != nil {
fmt.Fprintln(os.Stderr, console.FormatErrorMessage(err.Error()))
os.Exit(1)
}
Expand All @@ -126,7 +127,8 @@ Examples:
Run: func(cmd *cobra.Command, args []string) {
workflowName := args[0]
forceFlag, _ := cmd.Flags().GetBool("force")
if err := cli.NewWorkflow(workflowName, verbose, forceFlag); err != nil {
workflowsDir, _ := cmd.Flags().GetString("workflows-dir")
if err := cli.NewWorkflowWithDir(workflowName, verbose, forceFlag, workflowsDir); err != nil {
fmt.Fprintln(os.Stderr, console.FormatErrorMessage(err.Error()))
os.Exit(1)
}
Expand All @@ -142,7 +144,8 @@ var removeCmd = &cobra.Command{
pattern = args[0]
}
keepOrphans, _ := cmd.Flags().GetBool("keep-orphans")
if err := cli.RemoveWorkflows(pattern, keepOrphans); err != nil {
workflowsDir, _ := cmd.Flags().GetString("workflows-dir")
if err := cli.RemoveWorkflowsFromDir(pattern, keepOrphans, workflowsDir); err != nil {
fmt.Fprintln(os.Stderr, console.FormatErrorMessage(err.Error()))
os.Exit(1)
}
Expand All @@ -157,7 +160,8 @@ var statusCmd = &cobra.Command{
if len(args) > 0 {
pattern = args[0]
}
if err := cli.StatusWorkflows(pattern, verbose); err != nil {
workflowsDir, _ := cmd.Flags().GetString("workflows-dir")
if err := cli.StatusWorkflowsInDir(pattern, verbose, workflowsDir); err != nil {
fmt.Fprintln(os.Stderr, console.FormatErrorMessage(err.Error()))
os.Exit(1)
}
Expand All @@ -172,7 +176,8 @@ var enableCmd = &cobra.Command{
if len(args) > 0 {
pattern = args[0]
}
if err := cli.EnableWorkflows(pattern); err != nil {
workflowsDir, _ := cmd.Flags().GetString("workflows-dir")
if err := cli.EnableWorkflowsInDir(pattern, workflowsDir); err != nil {
fmt.Fprintln(os.Stderr, console.FormatErrorMessage(err.Error()))
os.Exit(1)
}
Expand All @@ -187,7 +192,8 @@ var disableCmd = &cobra.Command{
if len(args) > 0 {
pattern = args[0]
}
if err := cli.DisableWorkflows(pattern); err != nil {
workflowsDir, _ := cmd.Flags().GetString("workflows-dir")
if err := cli.DisableWorkflowsInDir(pattern, workflowsDir); err != nil {
fmt.Fprintln(os.Stderr, console.FormatErrorMessage(err.Error()))
os.Exit(1)
}
Expand All @@ -206,13 +212,13 @@ Examples:
` + constants.CLIExtensionPrefix + ` compile weekly-research # Compile a specific workflow
` + constants.CLIExtensionPrefix + ` compile weekly-research daily-plan # Compile multiple workflows
` + constants.CLIExtensionPrefix + ` compile workflow.md # Compile by file path
` + constants.CLIExtensionPrefix + ` compile --workflow-dir custom/workflows # Compile from custom directory
` + constants.CLIExtensionPrefix + ` compile --workflows-dir custom/workflows # Compile from custom directory
` + constants.CLIExtensionPrefix + ` compile --watch weekly-research # Watch and auto-compile`,
Run: func(cmd *cobra.Command, args []string) {
engineOverride, _ := cmd.Flags().GetString("engine")
validate, _ := cmd.Flags().GetBool("validate")
watch, _ := cmd.Flags().GetBool("watch")
workflowDir, _ := cmd.Flags().GetString("workflow-dir")
workflowDir, _ := cmd.Flags().GetString("workflows-dir")
instructions, _ := cmd.Flags().GetBool("instructions")
noEmit, _ := cmd.Flags().GetBool("no-emit")
purge, _ := cmd.Flags().GetBool("purge")
Expand Down Expand Up @@ -332,9 +338,15 @@ func init() {
// Add force flag to add command
addCmd.Flags().Bool("force", false, "Overwrite existing workflow files")

// Add workflows-dir flag to add command
addCmd.Flags().String("workflows-dir", "", "Relative directory containing workflows (default: .github/workflows)")

// Add force flag to new command
newCmd.Flags().Bool("force", false, "Overwrite existing workflow files")

// Add workflows-dir flag to new command
newCmd.Flags().String("workflows-dir", "", "Relative directory containing workflows (default: .github/workflows)")

// Add packages flag to list command
listCmd.Flags().BoolP("packages", "p", false, "List installed packages instead of available workflows")
listCmd.Flags().BoolP("local", "l", false, "List local packages instead of global packages (requires --packages)")
Expand All @@ -349,13 +361,21 @@ func init() {
compileCmd.Flags().StringP("engine", "a", "", "Override AI engine (claude, codex)")
compileCmd.Flags().Bool("validate", true, "Enable GitHub Actions workflow schema validation (default: true)")
compileCmd.Flags().BoolP("watch", "w", false, "Watch for changes to workflow files and recompile automatically")
compileCmd.Flags().String("workflow-dir", "", "Relative directory containing workflows (default: .github/workflows)")
compileCmd.Flags().String("workflows-dir", "", "Relative directory containing workflows (default: .github/workflows)")
compileCmd.Flags().Bool("instructions", false, "Generate or update GitHub Copilot instructions file")
compileCmd.Flags().Bool("no-emit", false, "Validate workflow without generating lock files")
compileCmd.Flags().Bool("purge", false, "Delete .lock.yml files that were not regenerated during compilation (only when no specific files are specified)")

// Add flags to remove command
removeCmd.Flags().Bool("keep-orphans", false, "Skip removal of orphaned include files that are no longer referenced by any workflow")
removeCmd.Flags().String("workflows-dir", "", "Relative directory containing workflows (default: .github/workflows)")

// Add workflows-dir flag to status command
statusCmd.Flags().String("workflows-dir", "", "Relative directory containing workflows (default: .github/workflows)")

// Add workflows-dir flag to enable and disable commands
enableCmd.Flags().String("workflows-dir", "", "Relative directory containing workflows (default: .github/workflows)")
disableCmd.Flags().String("workflows-dir", "", "Relative directory containing workflows (default: .github/workflows)")

// Add flags to run command
runCmd.Flags().Int("repeat", 0, "Repeat running workflows every SECONDS (0 = run once)")
Expand Down
Loading
Loading