6060const (
6161varURL = "url"
6262varToken = "token"
63- varAgentToken = "agent-token"
64- varAgentTokenFile = "agent-token-file"
65- varAgentURL = "agent-url"
66- varAgentAuth = "auth"
6763varHeader = "header"
6864varHeaderCommand = "header-command"
6965varNoOpen = "no-open"
@@ -201,7 +197,7 @@ func (r *RootCmd) RunWithSubcommands(subcommands []*serpent.Command) {
201197func (r * RootCmd )Command (subcommands []* serpent.Command ) (* serpent.Command ,error ) {
202198fmtLong := `Coder %s — A tool for provisioning self-hosted development environments with Terraform.
203199`
204- hiddenAgentAuth := NewAgentAuth ()
200+ hiddenAgentAuth := & AgentAuth {}
205201cmd := & serpent.Command {
206202Use :"coder [global-flags] <subcommand>" ,
207203Long :fmt .Sprintf (fmtLong ,buildinfo .Version ())+ FormatExamples (
@@ -652,42 +648,36 @@ type AgentAuth struct {
652648// Agent Client config
653649agentToken string
654650agentTokenFile string
655- agentURL * url.URL
651+ agentURL url.URL
656652agentAuth string
657653}
658654
659- func NewAgentAuth ()* AgentAuth {
660- return & AgentAuth {
661- agentURL :new (url.URL ),
662- }
663- }
664-
665655func (a * AgentAuth )AttachOptions (cmd * serpent.Command ,hidden bool ) {
666656cmd .Options = append (cmd .Options , serpent.Option {
667657Name :"Agent Token" ,
668658Description :"An agent authentication token." ,
669- Flag :varAgentToken ,
659+ Flag :"agent-token" ,
670660Env :envAgentToken ,
671661Value :serpent .StringOf (& a .agentToken ),
672662Hidden :hidden ,
673663}, serpent.Option {
674664Name :"Agent Token File" ,
675665Description :"A file containing an agent authentication token." ,
676- Flag :varAgentTokenFile ,
666+ Flag :"agent-token-file" ,
677667Env :envAgentTokenFile ,
678668Value :serpent .StringOf (& a .agentTokenFile ),
679669Hidden :hidden ,
680670}, serpent.Option {
681671Name :"Agent URL" ,
682672Description :"URL for an agent to access your deployment." ,
683- Flag :varAgentURL ,
673+ Flag :"agent-url" ,
684674Env :envAgentURL ,
685- Value :serpent .URLOf (a .agentURL ),
675+ Value :serpent .URLOf (& a .agentURL ),
686676Hidden :hidden ,
687677}, serpent.Option {
688678Name :"Agent Auth" ,
689679Description :"Specify the authentication type to use for the agent." ,
690- Flag :varAgentAuth ,
680+ Flag :"auth" ,
691681Env :envAgentAuth ,
692682Default :"token" ,
693683Value :serpent .StringOf (& a .agentAuth ),
@@ -699,7 +689,7 @@ func (a *AgentAuth) AttachOptions(cmd *serpent.Command, hidden bool) {
699689// just like InitClient, but uses the agent token and URL instead.
700690func (a * AgentAuth )CreateClient (ctx context.Context ) (* agentsdk.Client ,error ) {
701691agentURL := a .agentURL
702- if agentURL == nil || agentURL .String ()== "" {
692+ if agentURL .String ()== "" {
703693return nil ,xerrors .Errorf ("%s must be set" ,envAgentURL )
704694}
705695
@@ -719,7 +709,7 @@ func (a *AgentAuth) CreateClient(ctx context.Context) (*agentsdk.Client, error)
719709if token == "" {
720710return nil ,xerrors .Errorf ("CODER_AGENT_TOKEN or CODER_AGENT_TOKEN_FILE must be set for token auth" )
721711}
722- return agentsdk .New (a .agentURL ,agentsdk .WithFixedToken (token )),nil
712+ return agentsdk .New (& a .agentURL ,agentsdk .WithFixedToken (token )),nil
723713case "google-instance-identity" :
724714
725715// This is *only* done for testing to mock client authentication.
@@ -729,9 +719,9 @@ func (a *AgentAuth) CreateClient(ctx context.Context) (*agentsdk.Client, error)
729719if gcpClientRaw != nil {
730720gcpClient ,_ = gcpClientRaw .(* metadata.Client )
731721}
732- return agentsdk .New (a .agentURL ,agentsdk .WithGoogleInstanceIdentity ("" ,gcpClient )),nil
722+ return agentsdk .New (& a .agentURL ,agentsdk .WithGoogleInstanceIdentity ("" ,gcpClient )),nil
733723case "aws-instance-identity" :
734- client := agentsdk .New (a .agentURL ,agentsdk .WithAWSInstanceIdentity ())
724+ client := agentsdk .New (& a .agentURL ,agentsdk .WithAWSInstanceIdentity ())
735725// This is *only* done for testing to mock client authentication.
736726// This will never be set in a production scenario.
737727var awsClient * http.Client
@@ -744,7 +734,7 @@ func (a *AgentAuth) CreateClient(ctx context.Context) (*agentsdk.Client, error)
744734}
745735return client ,nil
746736case "azure-instance-identity" :
747- client := agentsdk .New (a .agentURL ,agentsdk .WithAzureInstanceIdentity ())
737+ client := agentsdk .New (& a .agentURL ,agentsdk .WithAzureInstanceIdentity ())
748738// This is *only* done for testing to mock client authentication.
749739// This will never be set in a production scenario.
750740var azureClient * http.Client