Skip to content

Commit 3641846

Browse files
committed
move flag constants to a new package shared between main and multiregion
1 parent dd1a76b commit 3641846

File tree

4 files changed

+52
-36
lines changed

4 files changed

+52
-36
lines changed

cmd/cli/flags/flags.go

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package flags
2+
3+
// Root-level persistent flags
4+
const (
5+
Config = "config"
6+
Org = "org"
7+
Idp = "idp"
8+
Region = "region"
9+
ReadOnlyMode = "read-only-mode"
10+
)
11+
12+
// Persistent flags for multiregion commands
13+
const (
14+
DomainName = "domain-name"
15+
Env = "env"
16+
Region2 = "region2"
17+
TfcToken = "tfc-token"
18+
OrgAlternate = "org-alternate"
19+
TfcTokenAlternate = "tfc-token-alternate"
20+
)

cmd/cli/multiregion/dns.go

+5-3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import (
1313
"github.com/hashicorp/go-tfe"
1414
"github.com/spf13/cobra"
1515
"github.com/spf13/viper"
16+
17+
"github.com/silinternational/idp-cli/cmd/cli/flags"
1618
)
1719

1820
type DnsCommand struct {
@@ -65,7 +67,7 @@ func runDnsCommand(failback bool) {
6567
func newDnsCommand(pFlags PersistentFlags, failback bool) *DnsCommand {
6668
d := DnsCommand{
6769
testMode: pFlags.readOnlyMode,
68-
domainName: viper.GetString(flagDomainName),
70+
domainName: viper.GetString(flags.DomainName),
6971
}
7072

7173
if d.domainName == "" {
@@ -305,7 +307,7 @@ func (d *DnsCommand) findTfcWorkspace(ctx context.Context, workspaceName string)
305307
return
306308
}
307309

308-
fmt.Printf("Workspace %s not found using %s, trying %s\n", workspaceName, flagTfcToken, flagTfcTokenAlternate)
310+
fmt.Printf("Workspace %s not found using %s, trying %s\n", workspaceName, flags.TfcToken, flags.TfcTokenAlternate)
309311

310312
config.Token = d.tfcTokenAlt
311313
client, err = tfe.NewClient(config)
@@ -316,7 +318,7 @@ func (d *DnsCommand) findTfcWorkspace(ctx context.Context, workspaceName string)
316318

317319
w, err = client.Workspaces.Read(ctx, d.tfcOrgAlt, workspaceName)
318320
if err != nil {
319-
err = fmt.Errorf("error reading Terraform workspace %s using %s: %s", workspaceName, flagTfcTokenAlternate, err)
321+
err = fmt.Errorf("error reading Terraform workspace %s using %s: %s", workspaceName, flags.TfcTokenAlternate, err)
320322
return
321323
}
322324

cmd/cli/multiregion/multiregion.go

+19-26
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,8 @@ import (
1010

1111
"github.com/spf13/cobra"
1212
"github.com/spf13/viper"
13-
)
1413

15-
const (
16-
flagDomainName = "domain-name"
17-
flagEnv = "env"
18-
flagRegion2 = "region2"
19-
flagTfcToken = "tfc-token"
20-
flagOrgAlternate = "org-alternate"
21-
flagTfcTokenAlternate = "tfc-token-alternate"
14+
"github.com/silinternational/idp-cli/cmd/cli/flags"
2215
)
2316

2417
const envProd = "prod"
@@ -37,38 +30,38 @@ func SetupMultiregionCmd(parentCommand *cobra.Command) {
3730
InitStatusCmd(multiregionCmd)
3831

3932
var domainName string
40-
multiregionCmd.PersistentFlags().StringVar(&domainName, flagDomainName, "", "Domain name")
41-
if err := viper.BindPFlag(flagDomainName, multiregionCmd.PersistentFlags().Lookup(flagDomainName)); err != nil {
33+
multiregionCmd.PersistentFlags().StringVar(&domainName, flags.DomainName, "", "Domain name")
34+
if err := viper.BindPFlag(flags.DomainName, multiregionCmd.PersistentFlags().Lookup(flags.DomainName)); err != nil {
4235
outputFlagError(multiregionCmd, err)
4336
}
4437

4538
var env string
46-
multiregionCmd.PersistentFlags().StringVar(&env, flagEnv, envProd, "Execution environment")
47-
if err := viper.BindPFlag(flagEnv, multiregionCmd.PersistentFlags().Lookup(flagEnv)); err != nil {
39+
multiregionCmd.PersistentFlags().StringVar(&env, flags.Env, envProd, "Execution environment")
40+
if err := viper.BindPFlag(flags.Env, multiregionCmd.PersistentFlags().Lookup(flags.Env)); err != nil {
4841
outputFlagError(multiregionCmd, err)
4942
}
5043

5144
var region2 string
52-
multiregionCmd.PersistentFlags().StringVar(&region2, flagRegion2, "", "Secondary AWS region")
53-
if err := viper.BindPFlag(flagRegion2, multiregionCmd.PersistentFlags().Lookup(flagRegion2)); err != nil {
45+
multiregionCmd.PersistentFlags().StringVar(&region2, flags.Region2, "", "Secondary AWS region")
46+
if err := viper.BindPFlag(flags.Region2, multiregionCmd.PersistentFlags().Lookup(flags.Region2)); err != nil {
5447
outputFlagError(multiregionCmd, err)
5548
}
5649

5750
var tfcToken string
58-
multiregionCmd.PersistentFlags().StringVar(&tfcToken, flagTfcToken, "", "Token for Terraform Cloud authentication")
59-
if err := viper.BindPFlag(flagTfcToken, multiregionCmd.PersistentFlags().Lookup(flagTfcToken)); err != nil {
51+
multiregionCmd.PersistentFlags().StringVar(&tfcToken, flags.TfcToken, "", "Token for Terraform Cloud authentication")
52+
if err := viper.BindPFlag(flags.TfcToken, multiregionCmd.PersistentFlags().Lookup(flags.TfcToken)); err != nil {
6053
outputFlagError(multiregionCmd, err)
6154
}
6255

6356
var orgAlt string
64-
multiregionCmd.PersistentFlags().StringVar(&orgAlt, flagOrgAlternate, "", "Alternate Terraform Cloud organization")
65-
if err := viper.BindPFlag(flagOrgAlternate, multiregionCmd.PersistentFlags().Lookup(flagOrgAlternate)); err != nil {
57+
multiregionCmd.PersistentFlags().StringVar(&orgAlt, flags.OrgAlternate, "", "Alternate Terraform Cloud organization")
58+
if err := viper.BindPFlag(flags.OrgAlternate, multiregionCmd.PersistentFlags().Lookup(flags.OrgAlternate)); err != nil {
6659
outputFlagError(multiregionCmd, err)
6760
}
6861

6962
var tfcTokenAlt string
70-
multiregionCmd.PersistentFlags().StringVar(&tfcTokenAlt, flagTfcTokenAlternate, "", "Alternate token for Terraform Cloud")
71-
if err := viper.BindPFlag(flagTfcTokenAlternate, multiregionCmd.PersistentFlags().Lookup(flagTfcTokenAlternate)); err != nil {
63+
multiregionCmd.PersistentFlags().StringVar(&tfcTokenAlt, flags.TfcTokenAlternate, "", "Alternate token for Terraform Cloud")
64+
if err := viper.BindPFlag(flags.TfcTokenAlternate, multiregionCmd.PersistentFlags().Lookup(flags.TfcTokenAlternate)); err != nil {
7265
outputFlagError(multiregionCmd, err)
7366
}
7467
}
@@ -91,19 +84,19 @@ type PersistentFlags struct {
9184

9285
func getPersistentFlags() PersistentFlags {
9386
pFlags := PersistentFlags{
94-
env: getRequiredParam(flagEnv),
87+
env: getRequiredParam(flags.Env),
9588
idp: getRequiredParam("idp"),
9689
org: getRequiredParam("org"),
97-
tfcToken: getRequiredParam(flagTfcToken),
98-
secondaryRegion: getRequiredParam(flagRegion2),
90+
tfcToken: getRequiredParam(flags.TfcToken),
91+
secondaryRegion: getRequiredParam(flags.Region2),
9992
readOnlyMode: viper.GetBool("read-only-mode"),
100-
tfcTokenAlt: getOption(flagTfcTokenAlternate, ""),
101-
orgAlt: getOption(flagOrgAlternate, viper.GetString(flagOrgAlternate)),
93+
tfcTokenAlt: getOption(flags.TfcTokenAlternate, ""),
94+
orgAlt: getOption(flags.OrgAlternate, viper.GetString(flags.OrgAlternate)),
10295
}
10396

10497
if pFlags.orgAlt != "" && pFlags.tfcTokenAlt == "" {
10598
log.Fatalf("%[1]s was specified without %[2]s. Please include %[2]s or remove %[1]s.",
106-
flagOrgAlternate, flagTfcTokenAlternate)
99+
flags.OrgAlternate, flags.TfcTokenAlternate)
107100
}
108101

109102
if pFlags.orgAlt == "" {

cmd/cli/root.go

+8-7
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/spf13/cobra"
1313
"github.com/spf13/viper"
1414

15+
"github.com/silinternational/idp-cli/cmd/cli/flags"
1516
"github.com/silinternational/idp-cli/cmd/cli/multiregion"
1617
)
1718

@@ -28,25 +29,25 @@ It can be used to check the status of the IdP. It can also be used to establish
2829
in a second AWS region, and to initiate a secondary region failover action.`,
2930
}
3031

31-
rootCmd.PersistentFlags().StringVar(&configFile, "config", "", "Config file")
32+
rootCmd.PersistentFlags().StringVar(&configFile, flags.Config, "", "Config file")
3233

3334
var org string
34-
rootCmd.PersistentFlags().StringVar(&org, "org", "", requiredPrefix+"Terraform Cloud organization")
35-
if err := viper.BindPFlag("org", rootCmd.PersistentFlags().Lookup("org")); err != nil {
35+
rootCmd.PersistentFlags().StringVar(&org, flags.Org, "", requiredPrefix+"Terraform Cloud organization")
36+
if err := viper.BindPFlag(flags.Org, rootCmd.PersistentFlags().Lookup(flags.Org)); err != nil {
3637
log.Fatalln("Error: unable to bind flag:", err)
3738
}
3839

3940
var idp string
40-
rootCmd.PersistentFlags().StringVar(&idp, "idp", "", requiredPrefix+"IDP key (short name)")
41-
if err := viper.BindPFlag("idp", rootCmd.PersistentFlags().Lookup("idp")); err != nil {
41+
rootCmd.PersistentFlags().StringVar(&idp, flags.Idp, "", requiredPrefix+"IDP key (short name)")
42+
if err := viper.BindPFlag(flags.Idp, rootCmd.PersistentFlags().Lookup(flags.Idp)); err != nil {
4243
log.Fatalln("Error: unable to bind flag:", err)
4344
}
4445

4546
var readOnly bool
46-
rootCmd.PersistentFlags().BoolVarP(&readOnly, "read-only-mode", "r", false,
47+
rootCmd.PersistentFlags().BoolVarP(&readOnly, flags.ReadOnlyMode, "r", false,
4748
`read-only mode persists no changes`,
4849
)
49-
if err := viper.BindPFlag("read-only-mode", rootCmd.PersistentFlags().Lookup("read-only-mode")); err != nil {
50+
if err := viper.BindPFlag(flags.ReadOnlyMode, rootCmd.PersistentFlags().Lookup(flags.ReadOnlyMode)); err != nil {
5051
log.Fatalln("Error: unable to bind flag:", err)
5152
}
5253

0 commit comments

Comments
 (0)