Skip to content

Commit 223f3d5

Browse files
committed
Add template versions table
1 parent 2a95917 commit 223f3d5

File tree

4 files changed

+131
-7
lines changed

4 files changed

+131
-7
lines changed

cli/cliui/templates.go

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package cliui
2+
3+
import (
4+
"fmt"
5+
"io"
6+
7+
"github.com/coder/coder/codersdk"
8+
"github.com/jedib0t/go-pretty/v6/table"
9+
)
10+
11+
func TemplateVersions(writer io.Writer, template codersdk.Template, versions []codersdk.TemplateVersion) error {
12+
tableWriter := table.NewWriter()
13+
tableWriter.SetStyle(table.StyleLight)
14+
tableWriter.Style().Options.SeparateColumns = false
15+
tableWriter.AppendHeader(table.Row{"Name", "Status", "Duration"})
16+
for _, version := range versions {
17+
var status string
18+
switch version.Job.Status {
19+
case codersdk.ProvisionerJobCanceled:
20+
status = "Canceled"
21+
case codersdk.ProvisionerJobCanceling:
22+
status = "Canceling..."
23+
case codersdk.ProvisionerJobPending:
24+
status = Styles.Placeholder.Render("Queued")
25+
case codersdk.ProvisionerJobRunning:
26+
status = "Building"
27+
case codersdk.ProvisionerJobFailed:
28+
status = "Failed"
29+
case codersdk.ProvisionerJobSucceeded:
30+
status = "Succeeded"
31+
}
32+
33+
name := version.Name
34+
if version.ID == template.ActiveVersionID {
35+
name = Styles.Bold.Render(name)
36+
}
37+
tableWriter.AppendRow(table.Row{
38+
name,
39+
status,
40+
"Something",
41+
})
42+
}
43+
_, err := fmt.Fprintln(writer, tableWriter.Render())
44+
return err
45+
}

cli/templateversionlist.go

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package cli
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/jedib0t/go-pretty/v6/table"
7+
"github.com/spf13/cobra"
8+
)
9+
10+
func templateVersionList() *cobra.Command {
11+
return &cobra.Command{
12+
Use: "list <template>",
13+
Aliases: []string{"ls"},
14+
Args: cobra.ExactArgs(1),
15+
RunE: func(cmd *cobra.Command, args []string) error {
16+
client, err := createClient(cmd)
17+
if err != nil {
18+
return err
19+
}
20+
21+
organization, err := currentOrganization(cmd, client)
22+
if err != nil {
23+
return err
24+
}
25+
26+
template, err := client.TemplateByName(cmd.Context(), organization.ID, args[0])
27+
if err != nil {
28+
return err
29+
}
30+
31+
versions, err := client.TemplateVersionsByTemplate(cmd.Context(), template.ID)
32+
if err != nil {
33+
return err
34+
}
35+
36+
tableWriter := table.NewWriter()
37+
tableWriter.SetStyle(table.StyleLight)
38+
tableWriter.Style().Options.SeparateColumns = false
39+
tableWriter.AppendHeader(table.Row{"Name", "Status", "Duration"})
40+
for _, version := range versions {
41+
tableWriter.AppendRow(table.Row{
42+
"👑 " + version.Name,
43+
version.Job.Status,
44+
"Something",
45+
})
46+
}
47+
_, err = fmt.Fprintln(cmd.OutOrStdout(), tableWriter.Render())
48+
return err
49+
},
50+
}
51+
}

cli/templateversions.go

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
package cli
22

3-
import "github.com/spf13/cobra"
3+
import (
4+
"github.com/spf13/cobra"
5+
)
46

57
func templateVersions() *cobra.Command {
6-
return &cobra.Command{
8+
cmd := &cobra.Command{
79
Use: "versions",
810
Aliases: []string{"version"},
9-
RunE: func(cmd *cobra.Command, args []string) error {
10-
return nil
11-
},
1211
}
12+
cmd.AddCommand(
13+
templateVersionList(),
14+
)
15+
return cmd
1316
}
14-
15-
// coder template versions

cmd/cliui/main.go

+27
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import (
88
"strings"
99
"time"
1010

11+
"github.com/google/uuid"
12+
"github.com/moby/moby/pkg/namesgenerator"
1113
"github.com/spf13/cobra"
1214
"golang.org/x/xerrors"
1315

@@ -230,6 +232,31 @@ func main() {
230232
},
231233
})
232234

235+
root.AddCommand(&cobra.Command{
236+
Use: "templateversions",
237+
RunE: func(cmd *cobra.Command, args []string) error {
238+
activeID := uuid.New()
239+
return cliui.TemplateVersions(cmd.OutOrStdout(), codersdk.Template{
240+
Name: "gcp-linux",
241+
ActiveVersionID: activeID,
242+
}, []codersdk.TemplateVersion{{
243+
ID: activeID,
244+
Name: namesgenerator.GetRandomName(1),
245+
CreatedAt: database.Now(),
246+
Job: codersdk.ProvisionerJob{
247+
Status: codersdk.ProvisionerJobSucceeded,
248+
},
249+
}, {
250+
ID: uuid.New(),
251+
Name: namesgenerator.GetRandomName(1),
252+
CreatedAt: database.Now(),
253+
Job: codersdk.ProvisionerJob{
254+
Status: codersdk.ProvisionerJobFailed,
255+
},
256+
}})
257+
},
258+
})
259+
233260
err := root.Execute()
234261
if err != nil {
235262
_, _ = fmt.Println(err.Error())

0 commit comments

Comments
 (0)