Skip to content

Commit eeaa5c3

Browse files
authored
feat: Support reading from token flag on coder login (#1483)
1 parent abc2257 commit eeaa5c3

File tree

2 files changed

+36
-21
lines changed

2 files changed

+36
-21
lines changed

cli/login.go

+24-21
Original file line numberDiff line numberDiff line change
@@ -168,28 +168,31 @@ func login() *cobra.Command {
168168
return nil
169169
}
170170

171-
authURL := *serverURL
172-
authURL.Path = serverURL.Path + "/cli-auth"
173-
if err := openURL(cmd, authURL.String()); err != nil {
174-
_, _ = fmt.Fprintf(cmd.OutOrStdout(), "Open the following in your browser:\n\n\t%s\n\n", authURL.String())
175-
} else {
176-
_, _ = fmt.Fprintf(cmd.OutOrStdout(), "Your browser has been opened to visit:\n\n\t%s\n\n", authURL.String())
177-
}
171+
sessionToken, _ := cmd.Flags().GetString(varToken)
172+
if sessionToken == "" {
173+
authURL := *serverURL
174+
authURL.Path = serverURL.Path + "/cli-auth"
175+
if err := openURL(cmd, authURL.String()); err != nil {
176+
_, _ = fmt.Fprintf(cmd.OutOrStdout(), "Open the following in your browser:\n\n\t%s\n\n", authURL.String())
177+
} else {
178+
_, _ = fmt.Fprintf(cmd.OutOrStdout(), "Your browser has been opened to visit:\n\n\t%s\n\n", authURL.String())
179+
}
178180

179-
sessionToken, err := cliui.Prompt(cmd, cliui.PromptOptions{
180-
Text: "Paste your token here:",
181-
Secret: true,
182-
Validate: func(token string) error {
183-
client.SessionToken = token
184-
_, err := client.User(cmd.Context(), codersdk.Me)
185-
if err != nil {
186-
return xerrors.New("That's not a valid token!")
187-
}
188-
return err
189-
},
190-
})
191-
if err != nil {
192-
return xerrors.Errorf("paste token prompt: %w", err)
181+
sessionToken, err = cliui.Prompt(cmd, cliui.PromptOptions{
182+
Text: "Paste your token here:",
183+
Secret: true,
184+
Validate: func(token string) error {
185+
client.SessionToken = token
186+
_, err := client.User(cmd.Context(), codersdk.Me)
187+
if err != nil {
188+
return xerrors.New("That's not a valid token!")
189+
}
190+
return err
191+
},
192+
})
193+
if err != nil {
194+
return xerrors.Errorf("paste token prompt: %w", err)
195+
}
193196
}
194197

195198
// Login to get user data - verify it is OK before persisting

cli/login_test.go

+12
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,16 @@ func TestLogin(t *testing.T) {
140140
cancelFunc()
141141
<-doneChan
142142
})
143+
144+
t.Run("TokenFlag", func(t *testing.T) {
145+
t.Parallel()
146+
client := coderdtest.New(t, nil)
147+
coderdtest.CreateFirstUser(t, client)
148+
root, cfg := clitest.New(t, "login", client.URL.String(), "--token", client.SessionToken)
149+
err := root.Execute()
150+
require.NoError(t, err)
151+
sessionFile, err := cfg.Session().Read()
152+
require.NoError(t, err)
153+
require.Equal(t, client.SessionToken, sessionFile)
154+
})
143155
}

0 commit comments

Comments
 (0)