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

Commit8a7f0e9

Browse files
authored
refactor(cli): extract workspace list parameters (#10605)
Extracts the --search and --all parameters to a separate struct in cliui.
1 parent473585d commit8a7f0e9

File tree

2 files changed

+66
-27
lines changed

2 files changed

+66
-27
lines changed

‎cli/cliui/filter.go

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package cliui
2+
3+
import (
4+
"github.com/coder/coder/v2/cli/clibase"
5+
"github.com/coder/coder/v2/codersdk"
6+
)
7+
8+
vardefaultQuery="owner:me"
9+
10+
// WorkspaceFilter wraps codersdk.WorkspaceFilter
11+
// and allows easy integration to a CLI command.
12+
// Example usage:
13+
//
14+
//func (r *RootCmd) MyCmd() *clibase.Cmd {
15+
// var (
16+
// filter cliui.WorkspaceFilter
17+
// ...
18+
// )
19+
// cmd := &clibase.Cmd{
20+
// ...
21+
// }
22+
// filter.AttachOptions(&cmd.Options)
23+
// ...
24+
// return cmd
25+
//}
26+
//
27+
// The above will add the following flags to the command:
28+
// --all
29+
// --search
30+
typeWorkspaceFilterstruct {
31+
searchQuerystring
32+
allbool
33+
}
34+
35+
func (w*WorkspaceFilter)Filter() codersdk.WorkspaceFilter {
36+
varf codersdk.WorkspaceFilter
37+
ifw.all {
38+
returnf
39+
}
40+
f.FilterQuery=w.searchQuery
41+
iff.FilterQuery=="" {
42+
f.FilterQuery=defaultQuery
43+
}
44+
returnf
45+
}
46+
47+
func (w*WorkspaceFilter)AttachOptions(opts*clibase.OptionSet) {
48+
*opts=append(*opts,
49+
clibase.Option{
50+
Flag:"all",
51+
FlagShorthand:"a",
52+
Description:"Specifies whether all workspaces will be listed or not.",
53+
54+
Value:clibase.BoolOf(&w.all),
55+
},
56+
clibase.Option{
57+
Flag:"search",
58+
Description:"Search for a workspace with a query.",
59+
Default:defaultQuery,
60+
Value:clibase.StringOf(&w.searchQuery),
61+
},
62+
)
63+
}

‎cli/list.go

Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,7 @@ func workspaceListRowFromWorkspace(now time.Time, usersByID map[uuid.UUID]coders
7777

7878
func (r*RootCmd)list()*clibase.Cmd {
7979
var (
80-
allbool
81-
defaultQuery="owner:me"
82-
searchQuerystring
80+
filter cliui.WorkspaceFilter
8381
displayWorkspaces []workspaceListRow
8482
formatter=cliui.NewOutputFormatter(
8583
cliui.TableFormat(
@@ -109,14 +107,7 @@ func (r *RootCmd) list() *clibase.Cmd {
109107
r.InitClient(client),
110108
),
111109
Handler:func(inv*clibase.Invocation)error {
112-
filter:= codersdk.WorkspaceFilter{
113-
FilterQuery:searchQuery,
114-
}
115-
ifall&&searchQuery==defaultQuery {
116-
filter.FilterQuery=""
117-
}
118-
119-
res,err:=client.Workspaces(inv.Context(),filter)
110+
res,err:=client.Workspaces(inv.Context(),filter.Filter())
120111
iferr!=nil {
121112
returnerr
122113
}
@@ -153,22 +144,7 @@ func (r *RootCmd) list() *clibase.Cmd {
153144
returnerr
154145
},
155146
}
156-
cmd.Options= clibase.OptionSet{
157-
{
158-
Flag:"all",
159-
FlagShorthand:"a",
160-
Description:"Specifies whether all workspaces will be listed or not.",
161-
162-
Value:clibase.BoolOf(&all),
163-
},
164-
{
165-
Flag:"search",
166-
Description:"Search for a workspace with a query.",
167-
Default:defaultQuery,
168-
Value:clibase.StringOf(&searchQuery),
169-
},
170-
}
171-
147+
filter.AttachOptions(&cmd.Options)
172148
formatter.AttachOptions(&cmd.Options)
173149
returncmd
174150
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp