| 112 | } |
| 113 | |
| 114 | func runDeployCommand(cmd *cobra.Command, workflows []string, validateEngine func(string) error) error { |
| 115 | targetRepo, _ := cmd.Flags().GetString("repo") |
| 116 | targetOrg, _ := cmd.Flags().GetString("org") |
| 117 | repoGlobs, _ := cmd.Flags().GetStringSlice("repos") |
| 118 | yes, _ := cmd.Flags().GetBool("yes") |
| 119 | |
| 120 | opts, coolDown, err := parseDeployCommandOptions(cmd, workflows, validateEngine) |
| 121 | if err != nil { |
| 122 | return err |
| 123 | } |
| 124 | |
| 125 | if strings.TrimSpace(targetRepo) != "" && strings.TrimSpace(targetOrg) != "" { |
| 126 | return errors.New("cannot specify both --repo and --org") |
| 127 | } |
| 128 | if len(repoGlobs) > 0 && strings.TrimSpace(targetOrg) == "" { |
| 129 | return errors.New("--repos requires --org to be specified") |
| 130 | } |
| 131 | if strings.TrimSpace(targetRepo) == "" && strings.TrimSpace(targetOrg) == "" { |
| 132 | return errors.New("either --repo (owner/repo) or --org must be provided") |
| 133 | } |
| 134 | |
| 135 | if strings.TrimSpace(targetOrg) != "" { |
| 136 | return runDeployForOrgFn(cmd.Context(), targetOrg, repoGlobs, workflows, opts, coolDown, yes, opts.Verbose) |
| 137 | } |
| 138 | |
| 139 | return runDeployFn(cmd.Context(), targetRepo, workflows, opts, coolDown) |
| 140 | } |
| 141 | |
| 142 | func parseDeployCommandOptions(cmd *cobra.Command, workflows []string, validateEngine func(string) error) (AddOptions, time.Duration, error) { |
| 143 | engineOverride, _ := cmd.Flags().GetString("engine") |