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

Commit75205f5

Browse files
authored
feat: Implement parameters list + more template list columns (#2359)
* feat: Implement parameters list- Allow more columns on template list* Hide param list by default for now
1 parentf5e558c commit75205f5

File tree

8 files changed

+186
-30
lines changed

8 files changed

+186
-30
lines changed

‎cli/parameters.go‎

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package cli
2+
3+
import (
4+
"github.com/jedib0t/go-pretty/v6/table"
5+
"github.com/spf13/cobra"
6+
7+
"github.com/coder/coder/cli/cliui"
8+
"github.com/coder/coder/codersdk"
9+
)
10+
11+
funcparameters()*cobra.Command {
12+
cmd:=&cobra.Command{
13+
Short:"List parameters for a given scope",
14+
Example:"coder parameters list workspace my-workspace",
15+
Use:"parameters",
16+
// Currently hidden as this shows parameter values, not parameter
17+
// schemes. Until we have a good way to distinguish the two, it's better
18+
// not to add confusion or lock ourselves into a certain api.
19+
// This cmd is still valuable debugging tool for devs to avoid
20+
// constructing curl requests.
21+
Hidden:true,
22+
Aliases: []string{"params"},
23+
}
24+
cmd.AddCommand(
25+
parameterList(),
26+
)
27+
returncmd
28+
}
29+
30+
// displayParameters will return a table displaying all parameters passed in.
31+
// filterColumns must be a subset of the parameter fields and will determine which
32+
// columns to display
33+
funcdisplayParameters(filterColumns []string,params...codersdk.Parameter)string {
34+
tableWriter:=cliui.Table()
35+
header:= table.Row{"id","scope","scope id","name","source scheme","destination scheme","created at","updated at"}
36+
tableWriter.AppendHeader(header)
37+
tableWriter.SetColumnConfigs(cliui.FilterTableColumns(header,filterColumns))
38+
tableWriter.SortBy([]table.SortBy{{
39+
Name:"name",
40+
}})
41+
for_,param:=rangeparams {
42+
tableWriter.AppendRow(table.Row{
43+
param.ID.String(),
44+
param.Scope,
45+
param.ScopeID.String(),
46+
param.Name,
47+
param.SourceScheme,
48+
param.DestinationScheme,
49+
param.CreatedAt,
50+
param.UpdatedAt,
51+
})
52+
}
53+
returntableWriter.Render()
54+
}

‎cli/parameterslist.go‎

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package cli
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/google/uuid"
7+
"github.com/spf13/cobra"
8+
"golang.org/x/xerrors"
9+
10+
"github.com/coder/coder/codersdk"
11+
)
12+
13+
funcparameterList()*cobra.Command {
14+
var (
15+
columns []string
16+
)
17+
cmd:=&cobra.Command{
18+
Use:"list",
19+
Aliases: []string{"ls"},
20+
Args:cobra.ExactArgs(2),
21+
RunE:func(cmd*cobra.Command,args []string)error {
22+
scope,name:=args[0],args[1]
23+
24+
client,err:=createClient(cmd)
25+
iferr!=nil {
26+
returnerr
27+
}
28+
29+
organization,err:=currentOrganization(cmd,client)
30+
iferr!=nil {
31+
returnxerrors.Errorf("get current organization: %w",err)
32+
}
33+
34+
varscopeID uuid.UUID
35+
switchcodersdk.ParameterScope(scope) {
36+
casecodersdk.ParameterWorkspace:
37+
workspace,err:=namedWorkspace(cmd,client,name)
38+
iferr!=nil {
39+
returnerr
40+
}
41+
scopeID=workspace.ID
42+
casecodersdk.ParameterTemplate:
43+
template,err:=client.TemplateByName(cmd.Context(),organization.ID,name)
44+
iferr!=nil {
45+
returnxerrors.Errorf("get workspace template: %w",err)
46+
}
47+
scopeID=template.ID
48+
49+
casecodersdk.ParameterScopeImportJob,"template_version":
50+
scope=string(codersdk.ParameterScopeImportJob)
51+
scopeID,err=uuid.Parse(name)
52+
iferr!=nil {
53+
returnxerrors.Errorf("%q must be a uuid for this scope type",name)
54+
}
55+
default:
56+
returnxerrors.Errorf("%q is an unsupported scope, use %v",scope, []codersdk.ParameterScope{
57+
codersdk.ParameterWorkspace,codersdk.ParameterTemplate,codersdk.ParameterScopeImportJob,
58+
})
59+
}
60+
61+
params,err:=client.Parameters(cmd.Context(),codersdk.ParameterScope(scope),scopeID)
62+
iferr!=nil {
63+
returnxerrors.Errorf("fetch params: %w",err)
64+
}
65+
66+
_,err=fmt.Fprintln(cmd.OutOrStdout(),displayParameters(columns,params...))
67+
returnerr
68+
},
69+
}
70+
cmd.Flags().StringArrayVarP(&columns,"column","c", []string{"name","source_scheme","destination_scheme"},
71+
"Specify a column to filter in the table.")
72+
returncmd
73+
}

‎cli/root.go‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ func Root() *cobra.Command {
9090
portForward(),
9191
workspaceAgent(),
9292
versionCmd(),
93+
parameters(),
9394
)
9495

9596
cmd.SetUsageTemplate(usageTemplate())

‎cli/templatelist.go‎

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ import (
44
"fmt"
55

66
"github.com/fatih/color"
7-
"github.com/jedib0t/go-pretty/v6/table"
87
"github.com/spf13/cobra"
9-
10-
"github.com/coder/coder/cli/cliui"
118
)
129

1310
functemplateList()*cobra.Command {
14-
return&cobra.Command{
11+
var (
12+
columns []string
13+
)
14+
cmd:=&cobra.Command{
1515
Use:"list",
1616
Aliases: []string{"ls"},
1717
RunE:func(cmd*cobra.Command,args []string)error {
@@ -34,22 +34,11 @@ func templateList() *cobra.Command {
3434
returnnil
3535
}
3636

37-
tableWriter:=cliui.Table()
38-
tableWriter.AppendHeader(table.Row{"Name","Last updated","Used by"})
39-
40-
for_,template:=rangetemplates {
41-
suffix:=""
42-
iftemplate.WorkspaceOwnerCount!=1 {
43-
suffix="s"
44-
}
45-
tableWriter.AppendRow(table.Row{
46-
template.Name,
47-
template.UpdatedAt.Format("January 2, 2006"),
48-
cliui.Styles.Fuschia.Render(fmt.Sprintf("%d developer%s",template.WorkspaceOwnerCount,suffix)),
49-
})
50-
}
51-
_,err=fmt.Fprintln(cmd.OutOrStdout(),tableWriter.Render())
37+
_,err=fmt.Fprintln(cmd.OutOrStdout(),displayTemplates(columns,templates...))
5238
returnerr
5339
},
5440
}
41+
cmd.Flags().StringArrayVarP(&columns,"column","c", []string{"name","last_updated","used_by"},
42+
"Specify a column to filter in the table.")
43+
returncmd
5544
}

‎cli/templates.go‎

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
package cli
22

33
import (
4+
"fmt"
5+
"time"
6+
7+
"github.com/jedib0t/go-pretty/v6/table"
48
"github.com/spf13/cobra"
59

610
"github.com/coder/coder/cli/cliui"
11+
"github.com/coder/coder/codersdk"
712
)
813

914
functemplates()*cobra.Command {
@@ -17,7 +22,7 @@ func templates() *cobra.Command {
1722
`+cliui.Styles.Code.Render("$ coder templates create")+`
1823
1924
- Make changes to your template, and plan the changes
20-
25+
2126
`+cliui.Styles.Code.Render("$ coder templates plan <name>")+`
2227
2328
- Update the template. Your developers can update their workspaces
@@ -38,3 +43,36 @@ func templates() *cobra.Command {
3843

3944
returncmd
4045
}
46+
47+
// displayTemplates will return a table displaying all templates passed in.
48+
// filterColumns must be a subset of the template fields and will determine which
49+
// columns to display
50+
funcdisplayTemplates(filterColumns []string,templates...codersdk.Template)string {
51+
tableWriter:=cliui.Table()
52+
header:= table.Row{
53+
"Name","Created At","Last Updated","Organization ID","Provisioner",
54+
"Active Version ID","Used By","Max TTL","Min Autostart"}
55+
tableWriter.AppendHeader(header)
56+
tableWriter.SetColumnConfigs(cliui.FilterTableColumns(header,filterColumns))
57+
tableWriter.SortBy([]table.SortBy{{
58+
Name:"name",
59+
}})
60+
for_,template:=rangetemplates {
61+
suffix:=""
62+
iftemplate.WorkspaceOwnerCount!=1 {
63+
suffix="s"
64+
}
65+
tableWriter.AppendRow(table.Row{
66+
template.Name,
67+
template.CreatedAt.Format("January 2, 2006"),
68+
template.UpdatedAt.Format("January 2, 2006"),
69+
template.OrganizationID.String(),
70+
template.Provisioner,
71+
template.ActiveVersionID.String(),
72+
cliui.Styles.Fuschia.Render(fmt.Sprintf("%d developer%s",template.WorkspaceOwnerCount,suffix)),
73+
(time.Duration(template.MaxTTLMillis)*time.Millisecond).String(),
74+
(time.Duration(template.MinAutostartIntervalMillis)*time.Millisecond).String(),
75+
})
76+
}
77+
returntableWriter.Render()
78+
}

‎cli/users.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func users() *cobra.Command {
3030
// columns to display
3131
funcdisplayUsers(filterColumns []string,users...codersdk.User)string {
3232
tableWriter:=cliui.Table()
33-
header:= table.Row{"id","username","email","created_at","status"}
33+
header:= table.Row{"id","username","email","created at","status"}
3434
tableWriter.AppendHeader(header)
3535
tableWriter.SetColumnConfigs(cliui.FilterTableColumns(header,filterColumns))
3636
tableWriter.SortBy([]table.SortBy{{

‎codersdk/parameters.go‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ import (
1414
typeParameterScopestring
1515

1616
const (
17-
ParameterTemplateParameterScope="template"
18-
ParameterWorkspaceParameterScope="workspace"
17+
ParameterTemplateParameterScope="template"
18+
ParameterWorkspaceParameterScope="workspace"
19+
ParameterScopeImportJobParameterScope="import_job"
1920
)
2021

2122
typeParameterSourceSchemestring

‎site/src/api/typesGenerated.ts‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ export interface CreateOrganizationRequest {
4949
readonlyname:string
5050
}
5151

52-
// From codersdk/parameters.go:79:6
52+
// From codersdk/parameters.go:80:6
5353
exportinterfaceCreateParameterRequest{
5454
readonlyname:string
5555
readonlysource_value:string
@@ -160,7 +160,7 @@ export interface Pagination {
160160
readonlyoffset?:number
161161
}
162162

163-
// From codersdk/parameters.go:44:6
163+
// From codersdk/parameters.go:45:6
164164
exportinterfaceParameter{
165165
readonlyid:string
166166
readonlycreated_at:string
@@ -172,7 +172,7 @@ export interface Parameter {
172172
readonlydestination_scheme:ParameterDestinationScheme
173173
}
174174

175-
// From codersdk/parameters.go:55:6
175+
// From codersdk/parameters.go:56:6
176176
exportinterfaceParameterSchema{
177177
readonlyid:string
178178
readonlycreated_at:string
@@ -494,16 +494,16 @@ export type LogLevel = "debug" | "error" | "info" | "trace" | "warn"
494494
// From codersdk/provisionerdaemons.go:16:6
495495
exporttypeLogSource="provisioner"|"provisioner_daemon"
496496

497-
// From codersdk/parameters.go:28:6
497+
// From codersdk/parameters.go:29:6
498498
exporttypeParameterDestinationScheme="environment_variable"|"none"|"provisioner_variable"
499499

500500
// From codersdk/parameters.go:14:6
501-
exporttypeParameterScope="template"|"workspace"
501+
exporttypeParameterScope="import_job"|"template"|"workspace"
502502

503-
// From codersdk/parameters.go:21:6
503+
// From codersdk/parameters.go:22:6
504504
exporttypeParameterSourceScheme="data"|"none"
505505

506-
// From codersdk/parameters.go:36:6
506+
// From codersdk/parameters.go:37:6
507507
exporttypeParameterTypeSystem="hcl"|"none"
508508

509509
// From codersdk/provisionerdaemons.go:42:6

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp