Skip to content

Commit 6a9d322

Browse files
committed
Add workspace config CLI
1 parent ed41450 commit 6a9d322

20 files changed

Lines changed: 1184 additions & 467 deletions

cmd/afs/afs_commands_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ func (s stubAFSControlPlane) GetWorkspace(context.Context, string) (controlplane
2828
return controlplane.WorkspaceDetail{}, fmt.Errorf("unexpected GetWorkspace call")
2929
}
3030

31+
func (s stubAFSControlPlane) GetWorkspaceConfig(context.Context, string) (controlplane.WorkspaceConfig, error) {
32+
return controlplane.WorkspaceConfig{}, fmt.Errorf("unexpected GetWorkspaceConfig call")
33+
}
34+
3135
func (s stubAFSControlPlane) GetWorkspaceVersioningPolicy(context.Context, string) (controlplane.WorkspaceVersioningPolicy, error) {
3236
return controlplane.WorkspaceVersioningPolicy{}, fmt.Errorf("unexpected GetWorkspaceVersioningPolicy call")
3337
}
@@ -68,6 +72,10 @@ func (s stubAFSControlPlane) ImportWorkspace(context.Context, controlplane.Impor
6872
return controlplane.ImportWorkspaceResponse{}, fmt.Errorf("unexpected ImportWorkspace call")
6973
}
7074

75+
func (s stubAFSControlPlane) UpdateWorkspaceConfig(context.Context, string, controlplane.WorkspaceConfig) (controlplane.WorkspaceConfig, error) {
76+
return controlplane.WorkspaceConfig{}, fmt.Errorf("unexpected UpdateWorkspaceConfig call")
77+
}
78+
7179
func (s stubAFSControlPlane) UpdateWorkspaceVersioningPolicy(context.Context, string, controlplane.WorkspaceVersioningPolicy) (controlplane.WorkspaceVersioningPolicy, error) {
7280
return controlplane.WorkspaceVersioningPolicy{}, fmt.Errorf("unexpected UpdateWorkspaceVersioningPolicy call")
7381
}

cmd/afs/afs_surface_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@ func TestWorkspaceRootShortcutsAreDocumentedAliases(t *testing.T) {
3131
for _, command := range []string{
3232
"mount", "unmount", "create", "list", "clone", "default",
3333
"set-default", "unset-default", "info", "import", "fork",
34-
"versioning", "delete",
34+
"delete",
3535
} {
3636
if !isWorkspaceRootShortcut(command) {
3737
t.Fatalf("isWorkspaceRootShortcut(%q) = false, want true", command)
3838
}
3939
}
40-
for _, command := range []string{"status", "fs", "cp", "log", "config", "reset"} {
40+
for _, command := range []string{"status", "fs", "cp", "log", "config", "reset", "versioning"} {
4141
if isWorkspaceRootShortcut(command) {
4242
t.Fatalf("isWorkspaceRootShortcut(%q) = true, want false", command)
4343
}
@@ -53,7 +53,7 @@ func TestWorkspaceRootShortcutsAreDocumentedAliases(t *testing.T) {
5353
for _, documented := range []string{
5454
"Workspace Shortcuts", "mount", "unmount", "create", "list", "clone",
5555
"default", "set-default", "unset-default", "info", "import", "fork",
56-
"versioning", "delete",
56+
"delete",
5757
} {
5858
if !strings.Contains(out, documented) {
5959
t.Fatalf("top-level help should document workspace shortcut %q:\n%s", documented, out)

cmd/afs/backend.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ func rewriteManagedRedisAddrForLocalhost(controlPlaneURL, redisAddr string) stri
119119
type afsControlPlane interface {
120120
ListWorkspaceSummaries(ctx context.Context) (controlplane.WorkspaceListResponse, error)
121121
GetWorkspace(ctx context.Context, workspace string) (controlplane.WorkspaceDetail, error)
122+
GetWorkspaceConfig(ctx context.Context, workspace string) (controlplane.WorkspaceConfig, error)
122123
GetWorkspaceVersioningPolicy(ctx context.Context, workspace string) (controlplane.WorkspaceVersioningPolicy, error)
123124
GetFileHistory(ctx context.Context, workspace, rawPath string, newestFirst bool) (controlplane.FileHistoryResponse, error)
124125
GetFileHistoryPage(ctx context.Context, workspace string, req controlplane.FileHistoryRequest) (controlplane.FileHistoryResponse, error)
@@ -129,6 +130,7 @@ type afsControlPlane interface {
129130
UndeleteFileVersion(ctx context.Context, workspace, rawPath string, selector controlplane.FileVersionSelector) (controlplane.FileVersionUndeleteResponse, error)
130131
CreateWorkspace(ctx context.Context, input controlplane.CreateWorkspaceRequest) (controlplane.WorkspaceDetail, error)
131132
ImportWorkspace(ctx context.Context, input controlplane.ImportWorkspaceRequest) (controlplane.ImportWorkspaceResponse, error)
133+
UpdateWorkspaceConfig(ctx context.Context, workspace string, cfg controlplane.WorkspaceConfig) (controlplane.WorkspaceConfig, error)
132134
UpdateWorkspaceVersioningPolicy(ctx context.Context, workspace string, policy controlplane.WorkspaceVersioningPolicy) (controlplane.WorkspaceVersioningPolicy, error)
133135
DeleteWorkspace(ctx context.Context, workspace string) error
134136
CreateWorkspaceSession(ctx context.Context, workspace string, input controlplane.CreateWorkspaceSessionRequest) (controlplane.WorkspaceSession, error)

cmd/afs/config_commands_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -925,7 +925,7 @@ func TestCmdWorkspaceHelpListsSubcommands(t *testing.T) {
925925

926926
for _, want := range []string{
927927
"workspace <subcommand>",
928-
"versioning <get|set>",
928+
"config <workspace> <get|set|unset|list>",
929929
"default",
930930
"set-default <workspace>",
931931
"unset-default",
@@ -941,7 +941,7 @@ func TestCmdWorkspaceHelpListsSubcommands(t *testing.T) {
941941
if strings.Contains(out, "run [workspace]") {
942942
t.Fatalf("workspace help output = %q, did not expect removed run subcommand", out)
943943
}
944-
for _, removed := range []string{"use <workspace>", "current Show"} {
944+
for _, removed := range []string{"use <workspace>", "current Show", "versioning <get|set>"} {
945945
if strings.Contains(out, removed) {
946946
t.Fatalf("workspace help output = %q, did not expect removed subcommand %q", out, removed)
947947
}
@@ -968,7 +968,7 @@ func TestCmdWorkspaceRunReportsRemovedCommand(t *testing.T) {
968968
func TestCmdWorkspaceUseAndCurrentAreNotSupported(t *testing.T) {
969969
t.Helper()
970970

971-
for _, subcommand := range []string{"use", "current"} {
971+
for _, subcommand := range []string{"use", "current", "versioning"} {
972972
err := cmdWorkspace([]string{"workspace", subcommand})
973973
if err == nil {
974974
t.Fatalf("cmdWorkspace(%s) returned nil error, want unsupported-command error", subcommand)

cmd/afs/controlplane_http_client.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,12 @@ func (c *httpControlPlaneClient) GetWorkspace(ctx context.Context, workspace str
150150
return out, err
151151
}
152152

153+
func (c *httpControlPlaneClient) GetWorkspaceConfig(ctx context.Context, workspace string) (controlplane.WorkspaceConfig, error) {
154+
var out controlplane.WorkspaceConfig
155+
err := c.doJSON(ctx, http.MethodGet, c.workspacePath(workspace, "config"), nil, &out, http.StatusOK)
156+
return out, err
157+
}
158+
153159
func (c *httpControlPlaneClient) GetWorkspaceVersioningPolicy(ctx context.Context, workspace string) (controlplane.WorkspaceVersioningPolicy, error) {
154160
var out controlplane.WorkspaceVersioningPolicy
155161
err := c.doJSON(ctx, http.MethodGet, c.workspacePath(workspace, "versioning"), nil, &out, http.StatusOK)
@@ -250,6 +256,12 @@ func (c *httpControlPlaneClient) ImportWorkspace(ctx context.Context, input cont
250256
return out, err
251257
}
252258

259+
func (c *httpControlPlaneClient) UpdateWorkspaceConfig(ctx context.Context, workspace string, cfg controlplane.WorkspaceConfig) (controlplane.WorkspaceConfig, error) {
260+
var out controlplane.WorkspaceConfig
261+
err := c.doJSON(ctx, http.MethodPut, c.workspacePath(workspace, "config"), cfg, &out, http.StatusOK)
262+
return out, err
263+
}
264+
253265
func (c *httpControlPlaneClient) UpdateWorkspaceVersioningPolicy(ctx context.Context, workspace string, policy controlplane.WorkspaceVersioningPolicy) (controlplane.WorkspaceVersioningPolicy, error) {
254266
var out controlplane.WorkspaceVersioningPolicy
255267
err := c.doJSON(ctx, http.MethodPut, c.workspacePath(workspace, "versioning"), policy, &out, http.StatusOK)

cmd/afs/main.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func isWorkspaceRootShortcut(command string) bool {
109109
switch command {
110110
case "mount", "unmount", "create", "list", "clone", "default",
111111
"set-default", "unset-default", "info", "import", "fork",
112-
"versioning", "delete":
112+
"delete":
113113
return true
114114
default:
115115
return false
@@ -142,7 +142,7 @@ func printUsage() {
142142
fmt.Fprintf(w, "%sCommands:%s\n", bold, reset)
143143
fmt.Fprintf(w, " %sstatus%s %sshow AFS status and local workspace mounts%s\n\n", bold, reset, dim, reset)
144144

145-
fmt.Fprintf(w, " %sws%s (workspace) %smount, create, list, clone, defaults, import, fork, versioning%s\n", bold, reset, dim, reset)
145+
fmt.Fprintf(w, " %sws%s (workspace) %smount, create, list, clone, defaults, import, fork, config%s\n", bold, reset, dim, reset)
146146
fmt.Fprintf(w, " %sfs%s (filesystem) %sread, search, and safely write workspace files%s\n", bold, reset, dim, reset)
147147
fmt.Fprintf(w, " %scp%s (checkpoint) %screate, list, show, diff, restore%s\n", bold, reset, dim, reset)
148148
fmt.Fprintf(w, " %slog%s %sWorkspace file-change log%s\n\n", bold, reset, dim, reset)
@@ -155,7 +155,7 @@ func printUsage() {
155155

156156
fmt.Fprintf(w, "%sWorkspace Shortcuts:%s\n", bold, reset)
157157
fmt.Fprintf(w, " %sOmit \"ws\" for:%s mount, unmount, create, list, clone, default, set-default,\n", dim, reset)
158-
fmt.Fprintf(w, " unset-default, info, import, fork, versioning, delete\n")
158+
fmt.Fprintf(w, " unset-default, info, import, fork, delete\n")
159159
fmt.Fprintf(w, " %sExample:%s %s%s mount demo ~/demo%s %s(same as %s ws mount demo ~/demo)%s\n\n", dim, reset, orange, bin, reset, dim, bin, reset)
160160

161161
fmt.Fprintf(w, "%sExamples:%s\n", bold, reset)

0 commit comments

Comments
 (0)