Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Aug 30, 2024. It is now read-only.
/coder-v1-cliPublic archive

Commit8f41aa3

Browse files
committed
Add --user flag to "secrets" and "envs"
1 parent56a76c4 commit8f41aa3

File tree

22 files changed

+271
-158
lines changed

22 files changed

+271
-158
lines changed

‎cmd/coder/auth.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,10 @@ func newClient() (*entclient.Client, error) {
3535
returnnil,xerrors.Errorf("url misformatted: %v (try runing coder login)",err)
3636
}
3737

38-
return&entclient.Client{
38+
client:=&entclient.Client{
3939
BaseURL:u,
4040
Token:sessionToken,
41-
},nil
41+
}
42+
43+
returnclient,nil
4244
}

‎cmd/coder/ceapi.go

Lines changed: 12 additions & 10 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,23 +29,23 @@ outer:
2729
}
2830

2931
// getEnvs returns all environments for the user.
30-
funcgetEnvs(client*entclient.Client) ([]entclient.Environment,error) {
31-
me,err:=client.Me()
32+
funcgetEnvs(ctx context.Context,client*entclient.Client,emailstring) ([]entclient.Environment,error) {
33+
user,err:=client.UserByEmail(ctx,email)
3234
iferr!=nil {
33-
returnnil,xerrors.Errorf("getself: %+v",err)
35+
returnnil,xerrors.Errorf("getuser: %+v",err)
3436
}
3537

36-
orgs,err:=client.Orgs()
38+
orgs,err:=client.Orgs(ctx)
3739
iferr!=nil {
3840
returnnil,xerrors.Errorf("get orgs: %+v",err)
3941
}
4042

41-
orgs=userOrgs(me,orgs)
43+
orgs=userOrgs(user,orgs)
4244

4345
varallEnvs []entclient.Environment
4446

4547
for_,org:=rangeorgs {
46-
envs,err:=client.Envs(me,org)
48+
envs,err:=client.Envs(ctx,user,org)
4749
iferr!=nil {
4850
returnnil,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-
funcfindEnv(client*entclient.Client,namestring) (*entclient.Environment,error) {
60-
envs,err:=getEnvs(client)
61+
funcfindEnv(ctx context.Context,client*entclient.Client,envName,userEmailstring) (*entclient.Environment,error) {
62+
envs,err:=getEnvs(ctx,client,userEmail)
6163
iferr!=nil {
6264
returnnil,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:=rangeenvs {
6870
found=append(found,env.Name)
69-
ifenv.Name==name {
71+
ifenv.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
returnnil,xerrors.New("environment not found")
7678
}

‎cmd/coder/configssh.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,19 +83,19 @@ func configSSH(filepath *string, remove *bool) func(cmd *cobra.Command, _ []stri
8383
returnxerrors.New("SSH is disabled or not available for your Coder Enterprise deployment.")
8484
}
8585

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

91-
envs,err:=getEnvs(entClient)
91+
envs,err:=getEnvs(cmd.Context(),entClient,entclient.Me)
9292
iferr!=nil {
9393
returnerr
9494
}
9595
iflen(envs)<1 {
9696
returnxerrors.New("no environments found")
9797
}
98-
newConfig,err:=makeNewConfigs(me.Username,envs,startToken,startMessage,endToken)
98+
newConfig,err:=makeNewConfigs(user.Username,envs,startToken,startMessage,endToken)
9999
iferr!=nil {
100100
returnxerrors.Errorf("make new ssh configurations: %w",err)
101101
}
@@ -127,7 +127,7 @@ var (
127127
)
128128

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

‎cmd/coder/envs.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,38 @@ import (
44
"encoding/json"
55
"os"
66

7+
"cdr.dev/coder-cli/internal/entclient"
78
"cdr.dev/coder-cli/internal/x/xtabwriter"
89
"github.com/spf13/cobra"
910
"golang.org/x/xerrors"
11+
12+
"go.coder.com/flog"
1013
)
1114

1215
funcmakeEnvsCommand()*cobra.Command {
1316
varoutputFmtstring
17+
varuserstring
1418
cmd:=&cobra.Command{
1519
Use:"envs",
1620
Short:"Interact with Coder environments",
1721
Long:"Perform operations on the Coder environments owned by the active user.",
1822
}
23+
cmd.PersistentFlags().StringVar(&user,"user",entclient.Me,"Specify the user whose resources to target")
1924

2025
lsCmd:=&cobra.Command{
2126
Use:"ls",
2227
Short:"list all environments owned by the active user",
2328
Long:"List all Coder environments owned by the active user.",
2429
RunE:func(cmd*cobra.Command,args []string)error {
2530
entClient:=requireAuth()
26-
envs,err:=getEnvs(entClient)
31+
envs,err:=getEnvs(cmd.Context(),entClient,user)
2732
iferr!=nil {
2833
returnerr
2934
}
35+
iflen(envs)<1 {
36+
flog.Info("no environments found")
37+
returnnil
38+
}
3039

3140
switchoutputFmt {
3241
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
funcmain() {
23+
ctx,cancel:=context.WithCancel(context.Background())
24+
defercancel()
25+
2226
ifos.Getenv("PPROF")!="" {
2327
gofunc() {
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
iferr!=nil {
5458
os.Exit(1)
5559
}

‎cmd/coder/secrets.go

Lines changed: 75 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -15,37 +15,39 @@ import (
1515
)
1616

1717
funcmakeSecretsCmd()*cobra.Command {
18+
varuserstring
1819
cmd:=&cobra.Command{
1920
Use:"secrets",
2021
Short:"Interact with Coder Secrets",
2122
Long:"Interact with secrets objects owned by the active user.",
2223
}
24+
cmd.PersistentFlags().StringVar(&user,"user",entclient.Me,"Specify the user whose resources to target")
2325
cmd.AddCommand(
2426
&cobra.Command{
2527
Use:"ls",
2628
Short:"List all secrets owned by the active user",
27-
RunE:listSecrets,
29+
RunE:listSecrets(&user),
2830
},
29-
makeCreateSecret(),
31+
makeCreateSecret(&user),
3032
&cobra.Command{
3133
Use:"rm [...secret_name]",
3234
Short:"Remove one or more secrets by name",
3335
Args:cobra.MinimumNArgs(1),
34-
RunE:removeSecrets,
36+
RunE:makeRemoveSecrets(&user),
3537
Example:"coder secrets rm mysql-password mysql-user",
3638
},
3739
&cobra.Command{
3840
Use:"view [secret_name]",
3941
Short:"View a secret by name",
4042
Args:cobra.ExactArgs(1),
41-
RunE:viewSecret,
43+
RunE:makeViewSecret(&user),
4244
Example:"coder secrets view mysql-password",
4345
},
4446
)
4547
returncmd
4648
}
4749

48-
funcmakeCreateSecret()*cobra.Command {
50+
funcmakeCreateSecret(user*string)*cobra.Command {
4951
var (
5052
fromFilestring
5153
fromLiteralstring
@@ -107,10 +109,12 @@ coder secrets create aws-credentials --from-file ./credentials.json`,
107109
}
108110
}
109111

110-
err=client.InsertSecret(entclient.InsertSecretReq{
112+
err=client.InsertSecret(cmd.Context(),entclient.InsertSecretReq{
111113
Name:name,
112114
Value:value,
113115
Description:description,
116+
},&entclient.ReqOptions{
117+
User:*user,
114118
})
115119
iferr!=nil {
116120
returnxerrors.Errorf("insert secret: %w",err)
@@ -127,71 +131,83 @@ coder secrets create aws-credentials --from-file ./credentials.json`,
127131
returncmd
128132
}
129133

130-
funclistSecrets(cmd*cobra.Command,_ []string)error {
131-
client:=requireAuth()
134+
funclistSecrets(user*string)func(cmd*cobra.Command,_ []string)error {
135+
returnfunc(cmd*cobra.Command,_ []string)error {
136+
client:=requireAuth()
132137

133-
secrets,err:=client.Secrets()
134-
iferr!=nil {
135-
returnxerrors.Errorf("get secrets: %w",err)
136-
}
138+
secrets,err:=client.Secrets(cmd.Context(),&entclient.ReqOptions{
139+
User:*user,
140+
})
141+
iferr!=nil {
142+
returnxerrors.Errorf("get secrets: %w",err)
143+
}
137144

138-
iflen(secrets)<1 {
139-
flog.Info("No secrets found")
140-
returnnil
141-
}
145+
iflen(secrets)<1 {
146+
flog.Info("No secrets found")
147+
returnnil
148+
}
142149

143-
err=xtabwriter.WriteTable(len(secrets),func(iint)interface{} {
144-
s:=secrets[i]
145-
s.Value="******"// value is omitted from bulk responses
146-
returns
147-
})
148-
iferr!=nil {
149-
returnxerrors.Errorf("write table of secrets: %w",err)
150+
err=xtabwriter.WriteTable(len(secrets),func(iint)interface{} {
151+
s:=secrets[i]
152+
s.Value="******"// value is omitted from bulk responses
153+
returns
154+
})
155+
iferr!=nil {
156+
returnxerrors.Errorf("write table of secrets: %w",err)
157+
}
158+
returnnil
150159
}
151-
returnnil
152160
}
153161

154-
funcviewSecret(_*cobra.Command,args []string)error {
155-
var (
156-
client=requireAuth()
157-
name=args[0]
158-
)
159-
ifname=="" {
160-
returnxerrors.New("[name] is a required argument")
161-
}
162+
funcmakeViewSecret(user*string)func(cmd*cobra.Command,args []string)error {
163+
returnfunc(cmd*cobra.Command,args []string)error {
164+
var (
165+
client=requireAuth()
166+
name=args[0]
167+
)
168+
ifname=="" {
169+
returnxerrors.New("[name] is a required argument")
170+
}
162171

163-
secret,err:=client.SecretByName(name)
164-
iferr!=nil {
165-
returnxerrors.Errorf("get secret by name: %w",err)
166-
}
172+
secret,err:=client.SecretByName(cmd.Context(),name,&entclient.ReqOptions{
173+
User:*user,
174+
})
175+
iferr!=nil {
176+
returnxerrors.Errorf("get secret by name: %w",err)
177+
}
167178

168-
_,err=fmt.Fprintln(os.Stdout,secret.Value)
169-
iferr!=nil {
170-
returnxerrors.Errorf("write secret value: %w",err)
179+
_,err=fmt.Fprintln(os.Stdout,secret.Value)
180+
iferr!=nil {
181+
returnxerrors.Errorf("write secret value: %w",err)
182+
}
183+
returnnil
171184
}
172-
returnnil
173185
}
174186

175-
funcremoveSecrets(_*cobra.Command,args []string)error {
176-
var (
177-
client=requireAuth()
178-
)
179-
iflen(args)<1 {
180-
returnxerrors.New("[...secret_name] is a required argument")
181-
}
187+
funcmakeRemoveSecrets(user*string)func(c*cobra.Command,args []string)error {
188+
returnfunc(cmd*cobra.Command,args []string)error {
189+
var (
190+
client=requireAuth()
191+
)
192+
iflen(args)<1 {
193+
returnxerrors.New("[...secret_name] is a required argument")
194+
}
182195

183-
errorSeen:=false
184-
for_,n:=rangeargs {
185-
err:=client.DeleteSecretByName(n)
186-
iferr!=nil {
187-
flog.Error("failed to delete secret %q: %v",n,err)
188-
errorSeen=true
189-
}else {
190-
flog.Success("successfully deleted secret %q",n)
196+
errorSeen:=false
197+
for_,n:=rangeargs {
198+
err:=client.DeleteSecretByName(cmd.Context(),n,&entclient.ReqOptions{
199+
User:*user,
200+
})
201+
iferr!=nil {
202+
flog.Error("failed to delete secret %q: %v",n,err)
203+
errorSeen=true
204+
}else {
205+
flog.Success("successfully deleted secret %q",n)
206+
}
191207
}
208+
iferrorSeen {
209+
os.Exit(1)
210+
}
211+
returnnil
192212
}
193-
iferrorSeen {
194-
os.Exit(1)
195-
}
196-
returnnil
197213
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp