Skip to content

Commit b8712a6

Browse files
feat: implement create command
1 parent ac8b0b6 commit b8712a6

File tree

3 files changed

+67
-3
lines changed

3 files changed

+67
-3
lines changed

cli/root.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ func (r *RootCmd) CoreSubcommands() []*serpent.Command {
9999
r.portForward(),
100100
r.publickey(),
101101
r.resetPassword(),
102+
r.secrets(),
102103
r.state(),
103104
r.templates(),
104105
r.tokens(),

cli/user_secrets.go

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package cli
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/coder/coder/v2/codersdk"
7+
"github.com/coder/serpent"
8+
)
9+
10+
func (r *RootCmd) secrets() *serpent.Command {
11+
return &serpent.Command{
12+
Use: "secrets",
13+
Short: "Manage your user secrets",
14+
Handler: func(inv *serpent.Invocation) error {
15+
return inv.Command.HelpHandler(inv)
16+
},
17+
Children: []*serpent.Command{
18+
r.secretCreate(),
19+
},
20+
}
21+
}
22+
23+
func (r *RootCmd) secretCreate() *serpent.Command {
24+
client := new(codersdk.Client)
25+
var value string
26+
var description string
27+
cmd := &serpent.Command{
28+
Use: "create <name>",
29+
Short: "Create a new user secret",
30+
Middleware: serpent.Chain(
31+
serpent.RequireNArgs(1),
32+
r.InitClient(client),
33+
),
34+
Handler: func(inv *serpent.Invocation) error {
35+
name := inv.Args[0]
36+
if value == "" {
37+
return fmt.Errorf("--value is required")
38+
}
39+
secret, err := client.CreateUserSecret(inv.Context(), codersdk.CreateUserSecretRequest{
40+
Name: name,
41+
Value: value,
42+
Description: description,
43+
})
44+
if err != nil {
45+
return err
46+
}
47+
fmt.Fprintf(inv.Stdout, "Created user secret %q (ID: %s)\n", secret.Name, secret.ID)
48+
return nil
49+
},
50+
}
51+
cmd.Options = serpent.OptionSet{
52+
{
53+
Flag: "value",
54+
Description: "Value of the secret (required).",
55+
Value: serpent.StringOf(&value),
56+
},
57+
{
58+
Flag: "description",
59+
Description: "Description of the secret.",
60+
Value: serpent.StringOf(&description),
61+
},
62+
}
63+
return cmd
64+
}

codersdk/user_secrets.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package codersdk
33
import (
44
"context"
55
"encoding/json"
6-
"fmt"
76
"net/http"
87
"time"
98

@@ -45,7 +44,7 @@ type ListUserSecretsResponse struct {
4544

4645
func (c *Client) CreateUserSecret(ctx context.Context, req CreateUserSecretRequest) (UserSecret, error) {
4746
res, err := c.Request(ctx, http.MethodPost,
48-
fmt.Sprintf("/api/v2/users/secrets"),
47+
"/api/v2/users/secrets",
4948
req,
5049
)
5150
if err != nil {
@@ -63,7 +62,7 @@ func (c *Client) CreateUserSecret(ctx context.Context, req CreateUserSecretReque
6362

6463
func (c *Client) ListUserSecrets(ctx context.Context) (ListUserSecretsResponse, error) {
6564
res, err := c.Request(ctx, http.MethodGet,
66-
fmt.Sprintf("/api/v2/users/secrets"),
65+
"/api/v2/users/secrets",
6766
nil,
6867
)
6968
if err != nil {

0 commit comments

Comments
 (0)