Skip to content
This repository was archived by the owner on Aug 30, 2024. It is now read-only.

Commit aa5597c

Browse files
committed
Move user flag to entclient req options
1 parent 17b16f9 commit aa5597c

22 files changed

+171
-104
lines changed

cmd/coder/auth.go

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ import (
1111
)
1212

1313
// requireAuth exits the process with a nonzero exit code if the user is not authenticated to make requests
14-
func requireAuth(user string) *entclient.Client {
15-
client, err := newClient(user)
14+
func requireAuth() *entclient.Client {
15+
client, err := newClient()
1616
if err != nil {
1717
flog.Fatal("%v", err)
1818
}
1919
return client
2020
}
2121

22-
func newClient(userFlag string) (*entclient.Client, error) {
22+
func newClient() (*entclient.Client, error) {
2323
sessionToken, err := config.Session.Read()
2424
if err != nil {
2525
return nil, xerrors.Errorf("read session: %v (did you run coder login?)", err)
@@ -38,16 +38,7 @@ func newClient(userFlag string) (*entclient.Client, error) {
3838
client := &entclient.Client{
3939
BaseURL: u,
4040
Token: sessionToken,
41-
UserID: entclient.Me,
4241
}
4342

44-
user, err := client.UserByEmail(userFlag)
45-
if err != nil {
46-
return nil, xerrors.Errorf("failed to find user (%v) by email: %v", userFlag, err)
47-
}
48-
49-
// perform all additional actions as this user
50-
client.UserID = user.ID
51-
5243
return client, nil
5344
}

cmd/coder/ceapi.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package main
22

33
import (
4+
"context"
5+
46
"golang.org/x/xerrors"
57

68
"go.coder.com/flog"
@@ -27,13 +29,13 @@ outer:
2729
}
2830

2931
// getEnvs returns all environments for the user.
30-
func getEnvs(client *entclient.Client) ([]entclient.Environment, error) {
31-
user, err := client.TargetUser()
32+
func getEnvs(ctx context.Context, client *entclient.Client, email string) ([]entclient.Environment, error) {
33+
user, err := client.UserByEmail(ctx, email)
3234
if err != nil {
33-
return nil, xerrors.Errorf("get self: %+v", err)
35+
return nil, xerrors.Errorf("get user: %+v", err)
3436
}
3537

36-
orgs, err := client.Orgs()
38+
orgs, err := client.Orgs(ctx)
3739
if err != nil {
3840
return nil, xerrors.Errorf("get orgs: %+v", err)
3941
}
@@ -43,7 +45,7 @@ func getEnvs(client *entclient.Client) ([]entclient.Environment, error) {
4345
var allEnvs []entclient.Environment
4446

4547
for _, org := range orgs {
46-
envs, err := client.Envs(user, org)
48+
envs, err := client.Envs(ctx, user, org)
4749
if err != nil {
4850
return nil, xerrors.Errorf("get envs for %v: %+v", org.Name, err)
4951
}
@@ -56,8 +58,8 @@ func getEnvs(client *entclient.Client) ([]entclient.Environment, error) {
5658
}
5759

5860
// findEnv returns a single environment by name (if it exists.)
59-
func findEnv(client *entclient.Client, name string) (*entclient.Environment, error) {
60-
envs, err := getEnvs(client)
61+
func findEnv(ctx context.Context, client *entclient.Client, userEmail, envName string) (*entclient.Environment, error) {
62+
envs, err := getEnvs(ctx, client, userEmail)
6163
if err != nil {
6264
return nil, xerrors.Errorf("get environments: %w", err)
6365
}
@@ -66,11 +68,11 @@ func findEnv(client *entclient.Client, name string) (*entclient.Environment, err
6668

6769
for _, env := range envs {
6870
found = append(found, env.Name)
69-
if env.Name == name {
71+
if env.Name == envName {
7072
return &env, nil
7173
}
7274
}
7375
flog.Error("found %q", found)
74-
flog.Error("%q not found", name)
76+
flog.Error("%q not found", envName)
7577
return nil, xerrors.New("environment not found")
7678
}

cmd/coder/configssh.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,19 +76,19 @@ func configSSH(filepath *string, remove *bool) func(cmd *cobra.Command, _ []stri
7676
return nil
7777
}
7878

79-
entClient := requireAuth(entclient.Me)
79+
entClient := requireAuth()
8080

8181
sshAvailable := isSSHAvailable(ctx)
8282
if !sshAvailable {
8383
return xerrors.New("SSH is disabled or not available for your Coder Enterprise deployment.")
8484
}
8585

86-
user, err := entClient.TargetUser()
86+
user, err := entClient.Me(cmd.Context())
8787
if err != nil {
8888
return xerrors.Errorf("fetch username: %w", err)
8989
}
9090

91-
envs, err := getEnvs(entClient)
91+
envs, err := getEnvs(cmd.Context(), entClient, entclient.Me)
9292
if err != nil {
9393
return err
9494
}
@@ -127,7 +127,7 @@ var (
127127
)
128128

129129
func writeSSHKey(ctx context.Context, client *entclient.Client) error {
130-
key, err := client.SSHKey()
130+
key, err := client.SSHKey(ctx)
131131
if err != nil {
132132
return err
133133
}

cmd/coder/envs.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import (
88
"cdr.dev/coder-cli/internal/x/xtabwriter"
99
"github.com/spf13/cobra"
1010
"golang.org/x/xerrors"
11+
12+
"go.coder.com/flog"
1113
)
1214

1315
func makeEnvsCommand() *cobra.Command {
@@ -25,11 +27,15 @@ func makeEnvsCommand() *cobra.Command {
2527
Short: "list all environments owned by the active user",
2628
Long: "List all Coder environments owned by the active user.",
2729
RunE: func(cmd *cobra.Command, args []string) error {
28-
entClient := requireAuth(user)
29-
envs, err := getEnvs(entClient)
30+
entClient := requireAuth()
31+
envs, err := getEnvs(cmd.Context(), entClient, user)
3032
if err != nil {
3133
return err
3234
}
35+
if len(envs) < 1 {
36+
flog.Info("no environments found")
37+
return nil
38+
}
3339

3440
switch outputFmt {
3541
case "human":

cmd/coder/main.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package main
22

33
import (
4+
"context"
45
"fmt"
56
"log"
67
"net/http"
@@ -19,6 +20,9 @@ var (
1920
)
2021

2122
func main() {
23+
ctx, cancel := context.WithCancel(context.Background())
24+
defer cancel()
25+
2226
if os.Getenv("PPROF") != "" {
2327
go func() {
2428
log.Println(http.ListenAndServe("localhost:6060", nil))
@@ -49,7 +53,7 @@ func main() {
4953
makeURLCmd(),
5054
completionCmd,
5155
)
52-
err = app.Execute()
56+
err = app.ExecuteContext(ctx)
5357
if err != nil {
5458
os.Exit(1)
5559
}

cmd/coder/secrets.go

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ coder secrets create aws-credentials --from-file ./credentials.json`,
7979
},
8080
RunE: func(cmd *cobra.Command, args []string) error {
8181
var (
82-
client = requireAuth(*user)
82+
client = requireAuth()
8383
name = args[0]
8484
value string
8585
err error
@@ -109,10 +109,12 @@ coder secrets create aws-credentials --from-file ./credentials.json`,
109109
}
110110
}
111111

112-
err = client.InsertSecret(entclient.InsertSecretReq{
112+
err = client.InsertSecret(cmd.Context(), entclient.InsertSecretReq{
113113
Name: name,
114114
Value: value,
115115
Description: description,
116+
}, &entclient.ReqOptions{
117+
User: *user,
116118
})
117119
if err != nil {
118120
return xerrors.Errorf("insert secret: %w", err)
@@ -131,9 +133,11 @@ coder secrets create aws-credentials --from-file ./credentials.json`,
131133

132134
func listSecrets(user *string) func(cmd *cobra.Command, _ []string) error {
133135
return func(cmd *cobra.Command, _ []string) error {
134-
client := requireAuth(*user)
136+
client := requireAuth()
135137

136-
secrets, err := client.Secrets()
138+
secrets, err := client.Secrets(cmd.Context(), &entclient.ReqOptions{
139+
User: *user,
140+
})
137141
if err != nil {
138142
return xerrors.Errorf("get secrets: %w", err)
139143
}
@@ -156,16 +160,18 @@ func listSecrets(user *string) func(cmd *cobra.Command, _ []string) error {
156160
}
157161

158162
func makeViewSecret(user *string) func(cmd *cobra.Command, args []string) error {
159-
return func(_ *cobra.Command, args []string) error {
163+
return func(cmd *cobra.Command, args []string) error {
160164
var (
161-
client = requireAuth(*user)
165+
client = requireAuth()
162166
name = args[0]
163167
)
164168
if name == "" {
165169
return xerrors.New("[name] is a required argument")
166170
}
167171

168-
secret, err := client.SecretByName(name)
172+
secret, err := client.SecretByName(cmd.Context(), name, &entclient.ReqOptions{
173+
User: *user,
174+
})
169175
if err != nil {
170176
return xerrors.Errorf("get secret by name: %w", err)
171177
}
@@ -179,17 +185,19 @@ func makeViewSecret(user *string) func(cmd *cobra.Command, args []string) error
179185
}
180186

181187
func makeRemoveSecrets(user *string) func(c *cobra.Command, args []string) error {
182-
return func(_ *cobra.Command, args []string) error {
188+
return func(cmd *cobra.Command, args []string) error {
183189
var (
184-
client = requireAuth(*user)
190+
client = requireAuth()
185191
)
186192
if len(args) < 1 {
187193
return xerrors.New("[...secret_name] is a required argument")
188194
}
189195

190196
errorSeen := false
191197
for _, n := range args {
192-
err := client.DeleteSecretByName(n)
198+
err := client.DeleteSecretByName(cmd.Context(), n, &entclient.ReqOptions{
199+
User: *user,
200+
})
193201
if err != nil {
194202
flog.Error("failed to delete secret %q: %v", n, err)
195203
errorSeen = true

cmd/coder/shell.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ func getEnvsForCompletion(user string) []string {
2525
return nil
2626

2727
var envNames []string
28-
client, err := newClient(user)
28+
client, err := newClient()
2929
if err != nil {
3030
return envNames
3131
}
32-
envs, err := getEnvs(client)
32+
envs, err := getEnvs(context.TODO(), client, user)
3333
if err != nil {
3434
return envNames
3535
}
@@ -98,9 +98,9 @@ func sendResizeEvents(ctx context.Context, termfd uintptr, process wsep.Process)
9898

9999
func runCommand(ctx context.Context, envName string, command string, args []string) error {
100100
var (
101-
entClient = requireAuth(entclient.Me)
101+
entClient = requireAuth()
102102
)
103-
env, err := findEnv(entClient, envName)
103+
env, err := findEnv(ctx, entClient, envName, entclient.Me)
104104
if err != nil {
105105
return err
106106
}

cmd/coder/sync.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func makeRunSync(init *bool) func(cmd *cobra.Command, args []string) error {
5252
remote = args[1]
5353
)
5454

55-
entClient := requireAuth(entclient.Me)
55+
entClient := requireAuth()
5656

5757
info, err := os.Stat(local)
5858
if err != nil {
@@ -71,7 +71,7 @@ func makeRunSync(init *bool) func(cmd *cobra.Command, args []string) error {
7171
remoteDir = remoteTokens[1]
7272
)
7373

74-
env, err := findEnv(entClient, envName)
74+
env, err := findEnv(cmd.Context(), entClient, envName, entclient.Me)
7575
if err != nil {
7676
return err
7777
}

0 commit comments

Comments
 (0)