From c7dd9edd57c6183fa89510cdafc738fd497acdca Mon Sep 17 00:00:00 2001 From: Azeem Sajid Date: Wed, 29 Jan 2025 16:39:56 +0500 Subject: [PATCH] [gh workflow run] Improve error handling for `--ref` flag --- pkg/cmd/workflow/run/run.go | 14 +++++++++----- pkg/cmd/workflow/shared/shared.go | 5 ++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/pkg/cmd/workflow/run/run.go b/pkg/cmd/workflow/run/run.go index b7ab53098..3ba64ad4a 100644 --- a/pkg/cmd/workflow/run/run.go +++ b/pkg/cmd/workflow/run/run.go @@ -262,11 +262,15 @@ func runRun(opts *RunOptions) error { ref := opts.Ref - if ref == "" { - ref, err = api.RepoDefaultBranch(client, repo) - if err != nil { - return fmt.Errorf("unable to determine default branch for %s: %w", ghrepo.FullName(repo), err) - } + defaultBranch, err := api.RepoDefaultBranch(client, repo) + if err != nil { + return fmt.Errorf("unable to determine default branch for %s: %w", ghrepo.FullName(repo), err) + } + + if ref != "" && ref != defaultBranch { + return fmt.Errorf("ref %s is not the default branch, and workflows must be on the default branch to be triggered by workflow_dispatch", ref) + } else { + ref = defaultBranch } states := []shared.WorkflowState{shared.Active} diff --git a/pkg/cmd/workflow/shared/shared.go b/pkg/cmd/workflow/shared/shared.go index db6b3ab12..61511ed7d 100644 --- a/pkg/cmd/workflow/shared/shared.go +++ b/pkg/cmd/workflow/shared/shared.go @@ -131,7 +131,10 @@ func FindWorkflow(client *api.Client, repo ghrepo.Interface, workflowSelector st if _, err := strconv.Atoi(workflowSelector); err == nil || isWorkflowFile(workflowSelector) { workflow, err := getWorkflowByID(client, repo, workflowSelector) if err != nil { - return nil, err + var httpErr api.HTTPError + if errors.As(err, &httpErr) && httpErr.StatusCode == 404 { + return nil, fmt.Errorf("workflow %s not found on the default branch", workflowSelector) + } } return []Workflow{*workflow}, nil }