(f factory.Factory)
| 140 | } |
| 141 | |
| 142 | func NewCmdRun(f factory.Factory) *cobra.Command { |
| 143 | runFlags := NewRunFlags() |
| 144 | cmd := &cobra.Command{ |
| 145 | Use: "run", |
| 146 | Short: "Run runbooks in Octopus Deploy", |
| 147 | Long: "Run runbooks in Octopus Deploy", |
| 148 | Example: heredoc.Docf(` |
| 149 | %[1]s runbook run # fully interactive |
| 150 | %[1]s runbook run --project MyProject --runbook "Rebuild DB indexes" |
| 151 | `, constants.ExecutableName), |
| 152 | RunE: func(cmd *cobra.Command, args []string) error { |
| 153 | if len(args) > 0 && runFlags.Project.Value == "" { |
| 154 | runFlags.Project.Value = args[0] |
| 155 | } |
| 156 | |
| 157 | return runbookRun(cmd, f, runFlags) |
| 158 | }, |
| 159 | } |
| 160 | |
| 161 | flags := cmd.Flags() |
| 162 | flags.StringVarP(&runFlags.Project.Value, runFlags.Project.Name, "p", "", "Name or ID of the project to run the runbook from") |
| 163 | flags.StringVarP(&runFlags.RunbookName.Value, runFlags.RunbookName.Name, "n", "", "Name of the runbook to run") |
| 164 | flags.StringArrayVarP(&runFlags.RunbookTags.Value, runFlags.RunbookTags.Name, "", nil, "Run all runbooks matching this tag (can be specified multiple times). Format is 'Tag Set Name/Tag Name'. Mutually exclusive with --name.") |
| 165 | flags.StringArrayVarP(&runFlags.Environments.Value, runFlags.Environments.Name, "e", nil, "Run in this environment (can be specified multiple times)") |
| 166 | flags.StringArrayVarP(&runFlags.Tenants.Value, runFlags.Tenants.Name, "", nil, "Run for this tenant (can be specified multiple times)") |
| 167 | flags.StringArrayVarP(&runFlags.TenantTags.Value, runFlags.TenantTags.Name, "", nil, "Run for tenants matching this tag (can be specified multiple times). Format is 'Tag Set Name/Tag Name', such as 'Regions/South'.") |
| 168 | flags.StringVarP(&runFlags.RunAt.Value, runFlags.RunAt.Name, "", "", "Run at a later time. Run now if omitted. TODO date formats and timezones!") |
| 169 | flags.StringVarP(&runFlags.MaxQueueTime.Value, runFlags.MaxQueueTime.Name, "", "", "Cancel a scheduled run if it hasn't started within this time period.") |
| 170 | flags.StringArrayVarP(&runFlags.Variables.Value, runFlags.Variables.Name, "v", nil, "Set the value for a prompted variable in the format Label:Value") |
| 171 | flags.StringVarP(&runFlags.Snapshot.Value, runFlags.Snapshot.Name, "", "", "Name or ID of the snapshot to run. If not supplied, the command will attempt to use the published snapshot.") |
| 172 | flags.StringArrayVarP(&runFlags.ExcludedSteps.Value, runFlags.ExcludedSteps.Name, "", nil, "Exclude specific steps from the runbook") |
| 173 | flags.StringVarP(&runFlags.GuidedFailureMode.Value, runFlags.GuidedFailureMode.Name, "", "", "Enable Guided failure mode (true/false/default)") |
| 174 | flags.BoolVarP(&runFlags.ForcePackageDownload.Value, runFlags.ForcePackageDownload.Name, "", false, "Force re-download of packages") |
| 175 | flags.StringArrayVarP(&runFlags.RunTargets.Value, runFlags.RunTargets.Name, "", nil, "Run on this target (can be specified multiple times)") |
| 176 | flags.StringArrayVarP(&runFlags.ExcludeTargets.Value, runFlags.ExcludeTargets.Name, "", nil, "Run on targets except for this (can be specified multiple times)") |
| 177 | flags.StringVarP(&runFlags.GitRef.Value, runFlags.GitRef.Name, "", "", "Git Reference e.g. refs/heads/main. Only relevant for config-as-code projects where runbooks are stored in Git.") |
| 178 | flags.StringVarP(&runFlags.PackageVersion.Value, runFlags.PackageVersion.Name, "", "", "Default version to use for all packages. Only relevant for config-as-code projects where runbooks are stored in Git.") |
| 179 | flags.StringArrayVarP(&runFlags.PackageVersionSpec.Value, runFlags.PackageVersionSpec.Name, "", nil, "Version specification for a specific package.\nFormat as {package}:{version}, {step}:{version} or {package-ref-name}:{packageOrStep}:{version}\nYou may specify this multiple times.\nOnly relevant for config-as-code projects where runbooks are stored in Git.") |
| 180 | flags.StringArrayVarP(&runFlags.GitResourceRefsSpec.Value, runFlags.GitResourceRefsSpec.Name, "", nil, "Git reference for a specific Git resource.\nFormat as {step}:{git-ref}, {step}:{git-resource-name}:{git-ref}\nYou may specify this multiple times.\nOnly relevant for config-as-code projects where runbooks are stored in Git.") |
| 181 | |
| 182 | flags.SortFlags = false |
| 183 | |
| 184 | // flags aliases for compat with old .NET CLI |
| 185 | flagAliases := make(map[string][]string, 10) |
| 186 | util.AddFlagAliasesString(flags, FlagRunbookName, flagAliases, FlagAliasRunbookLegacy) |
| 187 | util.AddFlagAliasesStringSlice(flags, FlagEnvironment, flagAliases, FlagAliasEnv) |
| 188 | util.AddFlagAliasesStringSlice(flags, FlagTenantTag, flagAliases, FlagAliasTag, FlagAliasTenantTagLegacy) |
| 189 | util.AddFlagAliasesString(flags, FlagRunAt, flagAliases, FlagAliasWhen, FlagAliasRunAtLegacy) |
| 190 | util.AddFlagAliasesString(flags, FlagRunAtExpiry, flagAliases, FlagRunAtExpire, FlagAliasNoRunAfterLegacy) |
| 191 | util.AddFlagAliasesString(flags, FlagGuidedFailure, flagAliases, FlagAliasGuidedFailureMode, FlagAliasGuidedFailureModeLegacy) |
| 192 | util.AddFlagAliasesBool(flags, FlagForcePackageDownload, flagAliases, FlagAliasForcePackageDownloadLegacy) |
| 193 | util.AddFlagAliasesStringSlice(flags, FlagRunTarget, flagAliases, FlagAliasTarget, FlagAliasSpecificMachines) |
| 194 | util.AddFlagAliasesStringSlice(flags, FlagExcludeRunTarget, flagAliases, FlagAliasExcludeTarget, FlagAliasExcludeMachines) |
| 195 | |
| 196 | cmd.PreRunE = func(cmd *cobra.Command, _ []string) error { |
| 197 | util.ApplyFlagAliases(cmd.Flags(), flagAliases) |
| 198 | return nil |
| 199 | } |
nothing calls this directly
no test coverage detected