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

feat: Implement parameters list + more template list columns#2359

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
Emyrk merged 6 commits intomainfromstevenmasley/param_list
Jun 15, 2022
Merged
Show file tree
Hide file tree
Changes fromall commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletionscli/parameters.go
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
package cli

import (
"github.com/jedib0t/go-pretty/v6/table"
"github.com/spf13/cobra"

"github.com/coder/coder/cli/cliui"
"github.com/coder/coder/codersdk"
)

funcparameters()*cobra.Command {
cmd:=&cobra.Command{
Short:"List parameters for a given scope",
Example:"coder parameters list workspace my-workspace",
Use:"parameters",
// Currently hidden as this shows parameter values, not parameter
// schemes. Until we have a good way to distinguish the two, it's better
// not to add confusion or lock ourselves into a certain api.
// This cmd is still valuable debugging tool for devs to avoid
// constructing curl requests.
Hidden:true,
Aliases: []string{"params"},
}
cmd.AddCommand(
parameterList(),
)
returncmd
}

// displayParameters will return a table displaying all parameters passed in.
// filterColumns must be a subset of the parameter fields and will determine which
// columns to display
funcdisplayParameters(filterColumns []string,params...codersdk.Parameter)string {
tableWriter:=cliui.Table()
header:= table.Row{"id","scope","scope id","name","source scheme","destination scheme","created at","updated at"}
tableWriter.AppendHeader(header)
tableWriter.SetColumnConfigs(cliui.FilterTableColumns(header,filterColumns))
tableWriter.SortBy([]table.SortBy{{
Name:"name",
}})
for_,param:=rangeparams {
tableWriter.AppendRow(table.Row{
param.ID.String(),
param.Scope,
param.ScopeID.String(),
param.Name,
param.SourceScheme,
param.DestinationScheme,
param.CreatedAt,
param.UpdatedAt,
})
}
returntableWriter.Render()
}
Comment on lines +33 to +54
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

I like this approach of abstracting the presentation logic from the command logic; makes it more re-usable later.

Emyrk reacted with thumbs up emoji
73 changes: 73 additions & 0 deletionscli/parameterslist.go
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
package cli

import (
"fmt"

"github.com/google/uuid"
"github.com/spf13/cobra"
"golang.org/x/xerrors"

"github.com/coder/coder/codersdk"
)

func parameterList() *cobra.Command {
var (
columns []string
)
cmd := &cobra.Command{
Use: "list",
Aliases: []string{"ls"},
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
scope, name := args[0], args[1]

client, err := createClient(cmd)
if err != nil {
return err
}

organization, err := currentOrganization(cmd, client)
if err != nil {
return xerrors.Errorf("get current organization: %w", err)
}

var scopeID uuid.UUID
switch codersdk.ParameterScope(scope) {
case codersdk.ParameterWorkspace:
workspace, err := namedWorkspace(cmd, client, name)
if err != nil {
return err
}
scopeID = workspace.ID
case codersdk.ParameterTemplate:
template, err := client.TemplateByName(cmd.Context(), organization.ID, name)
if err != nil {
return xerrors.Errorf("get workspace template: %w", err)
}
scopeID = template.ID

case codersdk.ParameterScopeImportJob, "template_version":
scope = string(codersdk.ParameterScopeImportJob)
scopeID, err = uuid.Parse(name)
if err != nil {
return xerrors.Errorf("%q must be a uuid for this scope type", name)
}
default:
return xerrors.Errorf("%q is an unsupported scope, use %v", scope, []codersdk.ParameterScope{
codersdk.ParameterWorkspace, codersdk.ParameterTemplate, codersdk.ParameterScopeImportJob,
})
}

params, err := client.Parameters(cmd.Context(), codersdk.ParameterScope(scope), scopeID)
if err != nil {
return xerrors.Errorf("fetch params: %w", err)
}

_, err = fmt.Fprintln(cmd.OutOrStdout(), displayParameters(columns, params...))
return err
},
}
cmd.Flags().StringArrayVarP(&columns, "column", "c", []string{"name", "source_scheme", "destination_scheme"},
"Specify a column to filter in the table.")
return cmd
}
1 change: 1 addition & 0 deletionscli/root.go
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -90,6 +90,7 @@ func Root() *cobra.Command {
portForward(),
workspaceAgent(),
versionCmd(),
parameters(),
)

cmd.SetUsageTemplate(usageTemplate())
Expand Down
27 changes: 8 additions & 19 deletionscli/templatelist.go
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,14 +4,14 @@ import (
"fmt"

"github.com/fatih/color"
"github.com/jedib0t/go-pretty/v6/table"
"github.com/spf13/cobra"

"github.com/coder/coder/cli/cliui"
)

func templateList() *cobra.Command {
return &cobra.Command{
var (
columns []string
)
cmd := &cobra.Command{
Use: "list",
Aliases: []string{"ls"},
RunE: func(cmd *cobra.Command, args []string) error {
Expand All@@ -34,22 +34,11 @@ func templateList() *cobra.Command {
return nil
}

tableWriter := cliui.Table()
tableWriter.AppendHeader(table.Row{"Name", "Last updated", "Used by"})

for _, template := range templates {
suffix := ""
if template.WorkspaceOwnerCount != 1 {
suffix = "s"
}
tableWriter.AppendRow(table.Row{
template.Name,
template.UpdatedAt.Format("January 2, 2006"),
cliui.Styles.Fuschia.Render(fmt.Sprintf("%d developer%s", template.WorkspaceOwnerCount, suffix)),
})
}
_, err = fmt.Fprintln(cmd.OutOrStdout(), tableWriter.Render())
_, err = fmt.Fprintln(cmd.OutOrStdout(), displayTemplates(columns, templates...))
return err
},
}
cmd.Flags().StringArrayVarP(&columns, "column", "c", []string{"name", "last_updated", "used_by"},
"Specify a column to filter in the table.")
return cmd
}
40 changes: 39 additions & 1 deletioncli/templates.go
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
package cli

import (
"fmt"
"time"

"github.com/jedib0t/go-pretty/v6/table"
"github.com/spf13/cobra"

"github.com/coder/coder/cli/cliui"
"github.com/coder/coder/codersdk"
)

func templates() *cobra.Command {
Expand All@@ -17,7 +22,7 @@ func templates() *cobra.Command {
` + cliui.Styles.Code.Render("$ coder templates create") + `

- Make changes to your template, and plan the changes

` + cliui.Styles.Code.Render("$ coder templates plan <name>") + `

- Update the template. Your developers can update their workspaces
Expand All@@ -37,3 +42,36 @@ func templates() *cobra.Command {

return cmd
}

// displayTemplates will return a table displaying all templates passed in.
// filterColumns must be a subset of the template fields and will determine which
// columns to display
func displayTemplates(filterColumns []string, templates ...codersdk.Template) string {
tableWriter := cliui.Table()
header := table.Row{
"Name", "Created At", "Last Updated", "Organization ID", "Provisioner",
"Active Version ID", "Used By", "Max TTL", "Min Autostart"}
tableWriter.AppendHeader(header)
tableWriter.SetColumnConfigs(cliui.FilterTableColumns(header, filterColumns))
tableWriter.SortBy([]table.SortBy{{
Name: "name",
}})
for _, template := range templates {
suffix := ""
if template.WorkspaceOwnerCount != 1 {
suffix = "s"
}
tableWriter.AppendRow(table.Row{
template.Name,
template.CreatedAt.Format("January 2, 2006"),
template.UpdatedAt.Format("January 2, 2006"),
template.OrganizationID.String(),
template.Provisioner,
template.ActiveVersionID.String(),
cliui.Styles.Fuschia.Render(fmt.Sprintf("%d developer%s", template.WorkspaceOwnerCount, suffix)),
(time.Duration(template.MaxTTLMillis) * time.Millisecond).String(),
(time.Duration(template.MinAutostartIntervalMillis) * time.Millisecond).String(),
})
}
return tableWriter.Render()
}
Comment on lines +49 to +77
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

👍

2 changes: 1 addition & 1 deletioncli/users.go
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -30,7 +30,7 @@ func users() *cobra.Command {
// columns to display
func displayUsers(filterColumns []string, users ...codersdk.User) string {
tableWriter := cliui.Table()
header := table.Row{"id", "username", "email", "created_at", "status"}
header := table.Row{"id", "username", "email", "created at", "status"}
tableWriter.AppendHeader(header)
tableWriter.SetColumnConfigs(cliui.FilterTableColumns(header, filterColumns))
tableWriter.SortBy([]table.SortBy{{
Expand Down
5 changes: 3 additions & 2 deletionscodersdk/parameters.go
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,8 +14,9 @@ import (
type ParameterScope string

const (
ParameterTemplate ParameterScope = "template"
ParameterWorkspace ParameterScope = "workspace"
ParameterTemplate ParameterScope = "template"
ParameterWorkspace ParameterScope = "workspace"
ParameterScopeImportJob ParameterScope = "import_job"
)

type ParameterSourceScheme string
Expand Down
14 changes: 7 additions & 7 deletionssite/src/api/typesGenerated.ts
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -49,7 +49,7 @@ export interface CreateOrganizationRequest {
readonly name: string
}

// From codersdk/parameters.go:79:6
// From codersdk/parameters.go:80:6
export interface CreateParameterRequest {
readonly name: string
readonly source_value: string
Expand DownExpand Up@@ -160,7 +160,7 @@ export interface Pagination {
readonly offset?: number
}

// From codersdk/parameters.go:44:6
// From codersdk/parameters.go:45:6
export interface Parameter {
readonly id: string
readonly created_at: string
Expand All@@ -172,7 +172,7 @@ export interface Parameter {
readonly destination_scheme: ParameterDestinationScheme
}

// From codersdk/parameters.go:55:6
// From codersdk/parameters.go:56:6
export interface ParameterSchema {
readonly id: string
readonly created_at: string
Expand DownExpand Up@@ -493,16 +493,16 @@ export type LogLevel = "debug" | "error" | "info" | "trace" | "warn"
// From codersdk/provisionerdaemons.go:16:6
export type LogSource = "provisioner" | "provisioner_daemon"

// From codersdk/parameters.go:28:6
// From codersdk/parameters.go:29:6
export type ParameterDestinationScheme = "environment_variable" | "none" | "provisioner_variable"

// From codersdk/parameters.go:14:6
export type ParameterScope = "template" | "workspace"
export type ParameterScope = "import_job" | "template" | "workspace"

// From codersdk/parameters.go:21:6
// From codersdk/parameters.go:22:6
export type ParameterSourceScheme = "data" | "none"

// From codersdk/parameters.go:36:6
// From codersdk/parameters.go:37:6
export type ParameterTypeSystem = "hcl" | "none"

// From codersdk/provisionerdaemons.go:42:6
Expand Down

[8]ページ先頭

©2009-2025 Movatter.jp