Skip to content

Commit 4908f09

Browse files
committed
refactor: remove cloud flag prefix
1 parent 113f93f commit 4908f09

23 files changed

Lines changed: 327 additions & 216 deletions

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ Given a version number `MAJOR.MINOR.PATCH`, we increment the:
2626

2727
- Add experimental support for `tmgen` file extension for easy code generation/templating
2828
of existing infrastructure. You can enable it with `terramate.config.experimental = ["tmgen"]`.
29+
- Make cloud-related options more concise by dropping the `cloud` prefix.
30+
- Option flags `--cloud-*` are shortened to `--*`, e.g. `--cloud-status=ok` => `--status=ok`.
31+
- Script command options `cloud_*` are shorted to `*`, e.g. `cloud_sync_deployment` => `sync_deployment`.
32+
- Old flags and command options are still supported as aliases for the new ones.
2933

3034
## v0.6.0
3135

cloud/preview/preview.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func (l Layer) String() string {
4949
func (l Layer) Validate() error {
5050
for _, c := range string(l) {
5151
if !unicode.IsLetter(c) && !unicode.IsDigit(c) && c != '-' {
52-
return errors.E("invalid --cloud-sync-layer, only alphanumeric characters and hyphens are allowed")
52+
return errors.E("invalid --layer, only alphanumeric characters and hyphens are allowed")
5353
}
5454
}
5555

cmd/terramate/cli/cli.go

Lines changed: 58 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -142,17 +142,24 @@ type cliSpec struct {
142142
List struct {
143143
Why bool `help:"Shows the reason why the stack has changed."`
144144
ExperimentalStatus string `hidden:"" help:"Filter by status (Deprecated)"`
145-
CloudStatus string `help:"Filter by Terramate Cloud status of the stack."`
145+
CloudStatus string `hidden:""`
146+
Status string `help:"Filter by Terramate Cloud status of the stack."`
146147
RunOrder bool `default:"false" help:"Sort listed stacks by order of execution"`
147148
} `cmd:"" help:"List stacks."`
148149

149150
Run struct {
150-
CloudStatus string `help:"Filter by Terramate Cloud status of the stack."`
151-
CloudSyncDeployment bool `default:"false" help:"Synchronize the command as a new deployment to Terramate Cloud."`
152-
CloudSyncDriftStatus bool `default:"false" help:"Synchronize the command as a new drift run to Terramate Cloud."`
153-
CloudSyncPreview bool `default:"false" help:"Synchronize the command as a new preview to Terramate Cloud."`
154-
CloudSyncLayer preview.Layer `default:"" help:"Set a customer layer for synchronizing a preview to Terramate Cloud."`
155-
CloudSyncTerraformPlanFile string `default:"" help:"Add details of the Terraform Plan file to the synchronization to Terramate Cloud."`
151+
CloudStatus string `hidden:""`
152+
Status string `help:"Filter by Terramate Cloud status of the stack."`
153+
CloudSyncDeployment bool `hidden:""`
154+
SyncDeployment bool `default:"false" help:"Synchronize the command as a new deployment to Terramate Cloud."`
155+
CloudSyncDriftStatus bool `hidden:""`
156+
SyncDriftStatus bool `default:"false" help:"Synchronize the command as a new drift run to Terramate Cloud."`
157+
CloudSyncPreview bool `hidden:""`
158+
SyncPreview bool `default:"false" help:"Synchronize the command as a new preview to Terramate Cloud."`
159+
CloudSyncLayer preview.Layer `hidden:""`
160+
Layer preview.Layer `default:"" help:"Set a customer layer for synchronizing a preview to Terramate Cloud."`
161+
CloudSyncTerraformPlanFile string `hidden:""`
162+
TerraformPlanFile string `default:"" help:"Add details of the Terraform Plan file to the synchronization to Terramate Cloud."`
156163
DebugPreviewURL string `hidden:"true" default:"" help:"Create a debug preview URL to Terramate Cloud details."`
157164
ContinueOnError bool `default:"false" help:"Do not stop execution when an error occurs."`
158165
NoRecursive bool `default:"false" help:"Do not recurse into nested child stacks."`
@@ -182,7 +189,8 @@ type cliSpec struct {
182189
Cmds []string `arg:"" optional:"true" passthrough:"" help:"Script to show info for."`
183190
} `cmd:"" help:"Show detailed information about a script"`
184191
Run struct {
185-
CloudStatus string `help:"Filter by Terramate Cloud status of the stack."`
192+
CloudStatus string `hidden:""`
193+
Status string `help:"Filter by Terramate Cloud status of the stack."`
186194
NoRecursive bool `default:"false" help:"Do not recurse into nested child stacks."`
187195
ContinueOnError bool `default:"false" help:"Continue executing next stacks when a command returns an error."`
188196
DryRun bool `default:"false" help:"Plan the execution but do not execute it."`
@@ -227,7 +235,8 @@ type cliSpec struct {
227235
Stack string `arg:"" optional:"true" name:"stack" predictor:"file" help:"The stacks path."`
228236
Reason string `default:"" name:"reason" help:"Set a reason for triggering the stack."`
229237
ExperimentalStatus string `hidden:"" help:"Filter by Terramate Cloud status of the stack. (deprecated)"`
230-
CloudStatus string `help:"Filter by Terramate Cloud status of the stack."`
238+
CloudStatus string `hidden:""`
239+
Status string `help:"Filter by Terramate Cloud status of the stack."`
231240
} `cmd:"" help:"Mark a stack as changed so it will be triggered in Change Detection."`
232241

233242
RunGraph struct {
@@ -425,6 +434,8 @@ func newCLI(version string, args []string, stdin io.Reader, stdout, stderr io.Wr
425434
fatal("failed to load cli configuration file", err)
426435
}
427436

437+
migrateFlagAliases(&parsedArgs)
438+
428439
// cmdline flags override configuration file.
429440

430441
if parsedArgs.DisableCheckpoint {
@@ -877,11 +888,44 @@ func hasVendorDirConfig(cfg hcl.Config) bool {
877888
return cfg.Vendor != nil && cfg.Vendor.Dir != ""
878889
}
879890

891+
func migrateFlagAliases(parsedArgs *cliSpec) {
892+
// list
893+
migrateStringFlag(&parsedArgs.List.Status, parsedArgs.List.CloudStatus)
894+
895+
// run
896+
migrateStringFlag(&parsedArgs.Run.Status, parsedArgs.Run.CloudStatus)
897+
migrateBoolFlag(&parsedArgs.Run.SyncDeployment, parsedArgs.Run.CloudSyncDeployment)
898+
migrateBoolFlag(&parsedArgs.Run.SyncDriftStatus, parsedArgs.Run.CloudSyncDriftStatus)
899+
migrateBoolFlag(&parsedArgs.Run.SyncPreview, parsedArgs.Run.CloudSyncPreview)
900+
migrateStringFlag(&parsedArgs.Run.TerraformPlanFile, parsedArgs.Run.CloudSyncTerraformPlanFile)
901+
if parsedArgs.Run.CloudSyncLayer != "" && parsedArgs.Run.Layer == "" {
902+
parsedArgs.Run.Layer = parsedArgs.Run.CloudSyncLayer
903+
}
904+
905+
// script run
906+
migrateStringFlag(&parsedArgs.Script.Run.Status, parsedArgs.Script.Run.CloudStatus)
907+
908+
// experimental trigger
909+
migrateStringFlag(&parsedArgs.Experimental.Trigger.Status, parsedArgs.Experimental.Trigger.CloudStatus)
910+
}
911+
912+
func migrateStringFlag(flag *string, alias string) {
913+
if alias != "" && *flag == "" {
914+
*flag = alias
915+
}
916+
}
917+
918+
func migrateBoolFlag(flag *bool, alias bool) {
919+
if alias && !*flag {
920+
*flag = alias
921+
}
922+
}
923+
880924
func (c *cli) triggerStackByFilter() {
881925
expStatus := c.parsedArgs.Experimental.Trigger.ExperimentalStatus
882-
cloudStatus := c.parsedArgs.Experimental.Trigger.CloudStatus
926+
cloudStatus := c.parsedArgs.Experimental.Trigger.Status
883927
if expStatus != "" && cloudStatus != "" {
884-
fatal("--experimental-status and --cloud-status cannot be used together", nil)
928+
fatal("--experimental-status and --status cannot be used together", nil)
885929
}
886930

887931
statusStr := expStatus
@@ -890,7 +934,7 @@ func (c *cli) triggerStackByFilter() {
890934
}
891935

892936
if statusStr == "" {
893-
fatal("trigger command expects either a stack path or the --cloud-status flag", nil)
937+
fatal("trigger command expects either a stack path or the --status flag", nil)
894938
}
895939

896940
status := parseStatusFilter(statusStr)
@@ -1555,9 +1599,9 @@ func (c *cli) printStacks() {
15551599
}
15561600

15571601
expStatus := c.parsedArgs.List.ExperimentalStatus
1558-
cloudStatus := c.parsedArgs.List.CloudStatus
1602+
cloudStatus := c.parsedArgs.List.Status
15591603
if expStatus != "" && cloudStatus != "" {
1560-
fatal("Invalid args", errors.E("--experimental-status and --cloud-status cannot be used together"))
1604+
fatal("Invalid args", errors.E("--experimental-status and --status cannot be used together"))
15611605
}
15621606

15631607
statusStr := expStatus

cmd/terramate/cli/cloud.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ func isDriftTask(t stackRunTask) bool { return t.CloudSyncDriftStatus }
161161
func isPreviewTask(t stackRunTask) bool { return t.CloudSyncPreview }
162162

163163
func (c *cli) checkCloudSync() {
164-
if !c.parsedArgs.Run.CloudSyncDeployment && !c.parsedArgs.Run.CloudSyncDriftStatus && !c.parsedArgs.Run.CloudSyncPreview {
164+
if !c.parsedArgs.Run.SyncDeployment && !c.parsedArgs.Run.SyncDriftStatus && !c.parsedArgs.Run.SyncPreview {
165165
return
166166
}
167167

@@ -172,7 +172,7 @@ func (c *cli) checkCloudSync() {
172172
return
173173
}
174174

175-
if c.parsedArgs.Run.CloudSyncDeployment {
175+
if c.parsedArgs.Run.SyncDeployment {
176176
uuid, err := uuid.GenerateUUID()
177177
c.handleCriticalError(err)
178178
c.cloud.run.runUUID = cloud.UUID(uuid)

cmd/terramate/cli/run.go

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ const (
4141
// in the system.
4242
ErrRunCommandNotFound errors.Kind = "command not found"
4343

44-
cloudSyncPreviewGHAWarning = "--cloud-sync-preview is only supported in GitHub Actions workflows"
44+
cloudSyncPreviewGHAWarning = "--sync-preview is only supported in GitHub Actions workflows"
4545
)
4646

4747
// stackRun contains a list of tasks to be run per stack.
@@ -116,39 +116,39 @@ func (c *cli) runOnStacks() {
116116
stacks = append(stacks, st.Sortable())
117117
} else {
118118
var err error
119-
stacks, err = c.computeSelectedStacks(true, parseStatusFilter(c.parsedArgs.Run.CloudStatus))
119+
stacks, err = c.computeSelectedStacks(true, parseStatusFilter(c.parsedArgs.Run.Status))
120120
if err != nil {
121121
fatal("computing selected stacks", err)
122122
}
123123
}
124124

125-
if c.parsedArgs.Run.CloudSyncDeployment && c.parsedArgs.Run.CloudSyncDriftStatus {
126-
fatal(sprintf("--cloud-sync-deployment conflicts with --cloud-sync-drift-status"), nil)
125+
if c.parsedArgs.Run.SyncDeployment && c.parsedArgs.Run.SyncDriftStatus {
126+
fatal(sprintf("--sync-deployment conflicts with --sync-drift-status"), nil)
127127
}
128128

129-
if c.parsedArgs.Run.CloudSyncPreview && (c.parsedArgs.Run.CloudSyncDeployment || c.parsedArgs.Run.CloudSyncDriftStatus) {
130-
fatal("cannot use --cloud-sync-preview with --cloud-sync-deployment or --cloud-sync-drift-status", nil)
129+
if c.parsedArgs.Run.SyncPreview && (c.parsedArgs.Run.SyncDeployment || c.parsedArgs.Run.SyncDriftStatus) {
130+
fatal("cannot use --sync-preview with --sync-deployment or --sync-drift-status", nil)
131131
}
132132

133-
if c.parsedArgs.Run.CloudSyncTerraformPlanFile == "" && c.parsedArgs.Run.CloudSyncPreview {
134-
fatal("--cloud-sync-preview requires --cloud-sync-terraform-plan-file", nil)
133+
if c.parsedArgs.Run.TerraformPlanFile == "" && c.parsedArgs.Run.SyncPreview {
134+
fatal("--sync-preview requires --terraform-plan-file", nil)
135135
}
136136

137-
cloudSyncEnabled := c.parsedArgs.Run.CloudSyncDeployment || c.parsedArgs.Run.CloudSyncDriftStatus || c.parsedArgs.Run.CloudSyncPreview
137+
cloudSyncEnabled := c.parsedArgs.Run.SyncDeployment || c.parsedArgs.Run.SyncDriftStatus || c.parsedArgs.Run.SyncPreview
138138

139-
if c.parsedArgs.Run.CloudSyncTerraformPlanFile != "" && !cloudSyncEnabled {
140-
fatal("--cloud-sync-terraform-plan-file requires flags --cloud-sync-deployment or --cloud-sync-drift-status or --cloud-sync-preview", nil)
139+
if c.parsedArgs.Run.TerraformPlanFile != "" && !cloudSyncEnabled {
140+
fatal("--terraform-plan-file requires flags --sync-deployment or --sync-drift-status or --sync-preview", nil)
141141
}
142142

143-
if c.parsedArgs.Run.CloudSyncDeployment || c.parsedArgs.Run.CloudSyncDriftStatus || c.parsedArgs.Run.CloudSyncPreview {
143+
if c.parsedArgs.Run.SyncDeployment || c.parsedArgs.Run.SyncDriftStatus || c.parsedArgs.Run.SyncPreview {
144144
if !c.prj.isRepo {
145145
fatal("cloud features requires a git repository", nil)
146146
}
147147
c.ensureAllStackHaveIDs(stacks)
148148
c.detectCloudMetadata()
149149
}
150150

151-
if c.parsedArgs.Run.CloudSyncPreview && os.Getenv("GITHUB_ACTIONS") == "" {
151+
if c.parsedArgs.Run.SyncPreview && os.Getenv("GITHUB_ACTIONS") == "" {
152152
printer.Stderr.Warn(cloudSyncPreviewGHAWarning)
153153
c.disableCloudFeatures(errors.E(cloudSyncPreviewGHAWarning))
154154
}
@@ -161,11 +161,11 @@ func (c *cli) runOnStacks() {
161161
Tasks: []stackRunTask{
162162
{
163163
Cmd: c.parsedArgs.Run.Command,
164-
CloudSyncDeployment: c.parsedArgs.Run.CloudSyncDeployment,
165-
CloudSyncDriftStatus: c.parsedArgs.Run.CloudSyncDriftStatus,
166-
CloudSyncPreview: c.parsedArgs.Run.CloudSyncPreview,
167-
CloudSyncTerraformPlanFile: c.parsedArgs.Run.CloudSyncTerraformPlanFile,
168-
CloudSyncLayer: c.parsedArgs.Run.CloudSyncLayer,
164+
CloudSyncDeployment: c.parsedArgs.Run.SyncDeployment,
165+
CloudSyncDriftStatus: c.parsedArgs.Run.SyncDriftStatus,
166+
CloudSyncPreview: c.parsedArgs.Run.SyncPreview,
167+
CloudSyncTerraformPlanFile: c.parsedArgs.Run.TerraformPlanFile,
168+
CloudSyncLayer: c.parsedArgs.Run.Layer,
169169
UseTerragrunt: c.parsedArgs.Run.Terragrunt,
170170
},
171171
},
@@ -179,14 +179,14 @@ func (c *cli) runOnStacks() {
179179
runs = append(runs, run)
180180
}
181181

182-
if c.parsedArgs.Run.CloudSyncDeployment {
182+
if c.parsedArgs.Run.SyncDeployment {
183183
// This will just select all runs, since the CloudSyncDeployment was set just above.
184184
// Still, it's convenient to re-use this function here.
185185
deployRuns := selectCloudStackTasks(runs, isDeploymentTask)
186186
c.createCloudDeployment(deployRuns)
187187
}
188188

189-
if c.parsedArgs.Run.CloudSyncPreview && c.cloudEnabled() {
189+
if c.parsedArgs.Run.SyncPreview && c.cloudEnabled() {
190190
// See comment above.
191191
previewRuns := selectCloudStackTasks(runs, isPreviewTask)
192192
for metaID, previewID := range c.createCloudPreview(previewRuns) {
@@ -560,7 +560,7 @@ func (c *cli) createCloudPreview(runs []stackCloudRun) map[string]string {
560560
if pullRequest == nil || pullRequest.GetUpdatedAt().IsZero() {
561561
printer.Stderr.WarnWithDetails(
562562
"unable to create preview: missing pull request information",
563-
errors.E("--cloud-sync-preview can only be used in a GitHub Action workflow triggered by a pull request event"),
563+
errors.E("--sync-preview can only be used in a GitHub Action workflow triggered by a pull request event"),
564564
)
565565
c.disableCloudFeatures(cloudError())
566566
return map[string]string{}

cmd/terramate/cli/script_run.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func (c *cli) runScript() {
3939
stacks = append(stacks, st.Sortable())
4040
} else {
4141
var err error
42-
stacks, err = c.computeSelectedStacks(true, parseStatusFilter(c.parsedArgs.Script.Run.CloudStatus))
42+
stacks, err = c.computeSelectedStacks(true, parseStatusFilter(c.parsedArgs.Script.Run.Status))
4343
if err != nil {
4444
fatal("failed to compute selected stacks", err)
4545
}

0 commit comments

Comments
 (0)