From 6edfa8f9913f626075d835f846a698e71b9d3eee Mon Sep 17 00:00:00 2001 From: Anshul Khandelwal <12948312+k-anshul@users.noreply.github.com> Date: Thu, 8 Jan 2026 17:40:28 +0530 Subject: [PATCH 1/3] nits: rill project deployment cli command --- cli/cmd/project/deployment/deployment.go | 2 +- cli/cmd/project/deployment/list.go | 12 +++++++++- cli/pkg/printer/resources.go | 28 +++++++++++++++++++----- 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/cli/cmd/project/deployment/deployment.go b/cli/cmd/project/deployment/deployment.go index bb1b4a8eecd..68498fd8ee9 100644 --- a/cli/cmd/project/deployment/deployment.go +++ b/cli/cmd/project/deployment/deployment.go @@ -7,7 +7,7 @@ import ( func DeploymentsCmd(ch *cmdutil.Helper) *cobra.Command { deploymentCmd := &cobra.Command{ - Use: "deployments", + Use: "deployment", Short: "Manage project deployments", } diff --git a/cli/cmd/project/deployment/list.go b/cli/cmd/project/deployment/list.go index d96ab910ddf..779b61f486c 100644 --- a/cli/cmd/project/deployment/list.go +++ b/cli/cmd/project/deployment/list.go @@ -37,6 +37,16 @@ func ListCmd(ch *cmdutil.Helper) *cobra.Command { return fmt.Errorf("project name is required") } + // fetch the project + projResp, err := client.GetProject(cmd.Context(), &adminv1.GetProjectRequest{ + Org: ch.Org, + Project: project, + }) + if err != nil { + return err + } + + // fetch the deployments req := &adminv1.ListDeploymentsRequest{ Org: ch.Org, Project: project, @@ -49,7 +59,7 @@ func ListCmd(ch *cmdutil.Helper) *cobra.Command { return err } - ch.PrintDeployments(resp.Deployments) + ch.PrintDeployments(resp.Deployments, projResp.Project.PrimaryDeploymentId) return nil }, } diff --git a/cli/pkg/printer/resources.go b/cli/pkg/printer/resources.go index d247daac54f..5a84834194b 100644 --- a/cli/pkg/printer/resources.go +++ b/cli/pkg/printer/resources.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" "path/filepath" + "slices" "sort" "strconv" "strings" @@ -714,13 +715,13 @@ type billingIssue struct { EventTime string `header:"event_time,timestamp(ms|utc|human)" json:"event_time"` } -func (p *Printer) PrintDeployments(deployments []*adminv1.Deployment) { +func (p *Printer) PrintDeployments(deployments []*adminv1.Deployment, primaryDeploymentID string) { if len(deployments) == 0 { p.PrintfWarn("No deployments found\n") return } - p.PrintData(toDeploymentsTable(deployments)) + p.PrintData(toDeploymentsTable(deployments, primaryDeploymentID)) } func (p *Printer) PrintDeployment(d *adminv1.Deployment) { @@ -743,11 +744,28 @@ func (p *Printer) PrintDeployment(d *adminv1.Deployment) { p.Printf("Updated: %s\n", d.UpdatedOn.AsTime().Local().Format(time.RFC1123)) } -func toDeploymentsTable(deployments []*adminv1.Deployment) []*deployment { +func toDeploymentsTable(deployments []*adminv1.Deployment, primaryDeploymentID string) []*deployment { res := make([]*deployment, 0, len(deployments)) for _, d := range deployments { res = append(res, toDeploymentRow(d)) + if d.Id == primaryDeploymentID { + res[len(res)-1].Branch += " (primary)" + } } + slices.SortFunc(res, func(a, b *deployment) int { + if a.Environment < b.Environment { + return -1 + } else if a.Environment > b.Environment { + return 1 + } + // sort by branch if environment is same + if a.Branch < b.Branch { + return -1 + } else if a.Branch > b.Branch { + return 1 + } + return 0 + }) return res } @@ -757,8 +775,8 @@ func toDeploymentRow(d *adminv1.Deployment) *deployment { status = fmt.Sprintf("%s: %s", status, d.StatusMessage) } return &deployment{ - Environment: d.Environment, Branch: d.Branch, + Environment: d.Environment, Status: status, } } @@ -787,8 +805,8 @@ func formatDeploymentStatus(status adminv1.DeploymentStatus) string { } type deployment struct { - Environment string `header:"environment" json:"environment"` Branch string `header:"branch" json:"branch"` + Environment string `header:"environment" json:"environment"` Status string `header:"status" json:"status"` } From 61b8e2bd63acac3ae5784ae7c96258fae859c57b Mon Sep 17 00:00:00 2001 From: Anshul Khandelwal <12948312+k-anshul@users.noreply.github.com> Date: Thu, 8 Jan 2026 17:44:29 +0530 Subject: [PATCH 2/3] regenerate docs --- cli/cmd/project/deployment/deployment.go | 2 +- cli/cmd/project/deployment/list.go | 7 ++++- cli/cmd/project/project.go | 2 +- cli/pkg/printer/resources.go | 9 ++---- .../{deployments => deployment}/create.md | 8 +++--- .../{deployments => deployment}/delete.md | 8 +++--- .../cli/project/deployment/deployment.md | 28 +++++++++++++++++++ .../{deployments => deployment}/list.md | 8 +++--- .../{deployments => deployment}/show.md | 8 +++--- .../{deployments => deployment}/start.md | 8 +++--- .../{deployments => deployment}/stop.md | 8 +++--- .../cli/project/deployments/deployments.md | 28 ------------------- docs/docs/reference/cli/project/project.md | 2 +- 13 files changed, 64 insertions(+), 62 deletions(-) rename docs/docs/reference/cli/project/{deployments => deployment}/create.md (78%) rename docs/docs/reference/cli/project/{deployments => deployment}/delete.md (72%) create mode 100644 docs/docs/reference/cli/project/deployment/deployment.md rename docs/docs/reference/cli/project/{deployments => deployment}/list.md (76%) rename docs/docs/reference/cli/project/{deployments => deployment}/show.md (73%) rename docs/docs/reference/cli/project/{deployments => deployment}/start.md (73%) rename docs/docs/reference/cli/project/{deployments => deployment}/stop.md (73%) delete mode 100644 docs/docs/reference/cli/project/deployments/deployments.md diff --git a/cli/cmd/project/deployment/deployment.go b/cli/cmd/project/deployment/deployment.go index 68498fd8ee9..186c6d1f5fa 100644 --- a/cli/cmd/project/deployment/deployment.go +++ b/cli/cmd/project/deployment/deployment.go @@ -5,7 +5,7 @@ import ( "github.com/spf13/cobra" ) -func DeploymentsCmd(ch *cmdutil.Helper) *cobra.Command { +func DeploymentCmd(ch *cmdutil.Helper) *cobra.Command { deploymentCmd := &cobra.Command{ Use: "deployment", Short: "Manage project deployments", diff --git a/cli/cmd/project/deployment/list.go b/cli/cmd/project/deployment/list.go index 779b61f486c..782a967e129 100644 --- a/cli/cmd/project/deployment/list.go +++ b/cli/cmd/project/deployment/list.go @@ -59,7 +59,12 @@ func ListCmd(ch *cmdutil.Helper) *cobra.Command { return err } - ch.PrintDeployments(resp.Deployments, projResp.Project.PrimaryDeploymentId) + for _, d := range resp.Deployments { + if d.Id == projResp.Project.PrimaryDeploymentId { + d.Branch += " (primary)" + } + } + ch.PrintDeployments(resp.Deployments) return nil }, } diff --git a/cli/cmd/project/project.go b/cli/cmd/project/project.go index d41dfba4aac..a2d830891a2 100644 --- a/cli/cmd/project/project.go +++ b/cli/cmd/project/project.go @@ -34,7 +34,7 @@ func ProjectCmd(ch *cmdutil.Helper) *cobra.Command { projectCmd.AddCommand(GitPushCmd(ch)) projectCmd.AddCommand(DeployCmd(ch)) projectCmd.AddCommand(TablesCmd(ch)) - projectCmd.AddCommand(deployment.DeploymentsCmd(ch)) + projectCmd.AddCommand(deployment.DeploymentCmd(ch)) return projectCmd } diff --git a/cli/pkg/printer/resources.go b/cli/pkg/printer/resources.go index 5a84834194b..76180992cff 100644 --- a/cli/pkg/printer/resources.go +++ b/cli/pkg/printer/resources.go @@ -715,13 +715,13 @@ type billingIssue struct { EventTime string `header:"event_time,timestamp(ms|utc|human)" json:"event_time"` } -func (p *Printer) PrintDeployments(deployments []*adminv1.Deployment, primaryDeploymentID string) { +func (p *Printer) PrintDeployments(deployments []*adminv1.Deployment) { if len(deployments) == 0 { p.PrintfWarn("No deployments found\n") return } - p.PrintData(toDeploymentsTable(deployments, primaryDeploymentID)) + p.PrintData(toDeploymentsTable(deployments)) } func (p *Printer) PrintDeployment(d *adminv1.Deployment) { @@ -744,13 +744,10 @@ func (p *Printer) PrintDeployment(d *adminv1.Deployment) { p.Printf("Updated: %s\n", d.UpdatedOn.AsTime().Local().Format(time.RFC1123)) } -func toDeploymentsTable(deployments []*adminv1.Deployment, primaryDeploymentID string) []*deployment { +func toDeploymentsTable(deployments []*adminv1.Deployment) []*deployment { res := make([]*deployment, 0, len(deployments)) for _, d := range deployments { res = append(res, toDeploymentRow(d)) - if d.Id == primaryDeploymentID { - res[len(res)-1].Branch += " (primary)" - } } slices.SortFunc(res, func(a, b *deployment) int { if a.Environment < b.Environment { diff --git a/docs/docs/reference/cli/project/deployments/create.md b/docs/docs/reference/cli/project/deployment/create.md similarity index 78% rename from docs/docs/reference/cli/project/deployments/create.md rename to docs/docs/reference/cli/project/deployment/create.md index 7bccc27f106..17c28482ee3 100644 --- a/docs/docs/reference/cli/project/deployments/create.md +++ b/docs/docs/reference/cli/project/deployment/create.md @@ -1,13 +1,13 @@ --- note: GENERATED. DO NOT EDIT. -title: rill project deployments create +title: rill project deployment create --- -## rill project deployments create +## rill project deployment create Create a deployment for a specific branch ``` -rill project deployments create [] [flags] +rill project deployment create [] [flags] ``` ### Flags @@ -31,5 +31,5 @@ rill project deployments create [] [flags] ### SEE ALSO -* [rill project deployments](deployments.md) - Manage project deployments +* [rill project deployment](deployment.md) - Manage project deployments diff --git a/docs/docs/reference/cli/project/deployments/delete.md b/docs/docs/reference/cli/project/deployment/delete.md similarity index 72% rename from docs/docs/reference/cli/project/deployments/delete.md rename to docs/docs/reference/cli/project/deployment/delete.md index bbfc2d967c3..73b62b7a842 100644 --- a/docs/docs/reference/cli/project/deployments/delete.md +++ b/docs/docs/reference/cli/project/deployment/delete.md @@ -1,13 +1,13 @@ --- note: GENERATED. DO NOT EDIT. -title: rill project deployments delete +title: rill project deployment delete --- -## rill project deployments delete +## rill project deployment delete Delete a deployment by branch ``` -rill project deployments delete [] [flags] +rill project deployment delete [] [flags] ``` ### Flags @@ -29,5 +29,5 @@ rill project deployments delete [] [flags] ### SEE ALSO -* [rill project deployments](deployments.md) - Manage project deployments +* [rill project deployment](deployment.md) - Manage project deployments diff --git a/docs/docs/reference/cli/project/deployment/deployment.md b/docs/docs/reference/cli/project/deployment/deployment.md new file mode 100644 index 00000000000..20651a0de35 --- /dev/null +++ b/docs/docs/reference/cli/project/deployment/deployment.md @@ -0,0 +1,28 @@ +--- +note: GENERATED. DO NOT EDIT. +title: rill project deployment +--- +## rill project deployment + +Manage project deployments + +### Global flags + +``` + --api-token string Token for authenticating with the cloud API + --format string Output format (options: "human", "json", "csv") (default "human") + -h, --help Print usage + --interactive Prompt for missing required parameters (default true) + --org string Organization Name +``` + +### SEE ALSO + +* [rill project](../project.md) - Manage projects +* [rill project deployment create](create.md) - Create a deployment for a specific branch +* [rill project deployment delete](delete.md) - Delete a deployment by branch +* [rill project deployment list](list.md) - List all deployments for a project +* [rill project deployment show](show.md) - Show details of a deployment +* [rill project deployment start](start.md) - Start a deployment by branch +* [rill project deployment stop](stop.md) - Stop a deployment by branch + diff --git a/docs/docs/reference/cli/project/deployments/list.md b/docs/docs/reference/cli/project/deployment/list.md similarity index 76% rename from docs/docs/reference/cli/project/deployments/list.md rename to docs/docs/reference/cli/project/deployment/list.md index 8faaceff3a9..d6fabf70502 100644 --- a/docs/docs/reference/cli/project/deployments/list.md +++ b/docs/docs/reference/cli/project/deployment/list.md @@ -1,13 +1,13 @@ --- note: GENERATED. DO NOT EDIT. -title: rill project deployments list +title: rill project deployment list --- -## rill project deployments list +## rill project deployment list List all deployments for a project ``` -rill project deployments list [] [flags] +rill project deployment list [] [flags] ``` ### Flags @@ -30,5 +30,5 @@ rill project deployments list [] [flags] ### SEE ALSO -* [rill project deployments](deployments.md) - Manage project deployments +* [rill project deployment](deployment.md) - Manage project deployments diff --git a/docs/docs/reference/cli/project/deployments/show.md b/docs/docs/reference/cli/project/deployment/show.md similarity index 73% rename from docs/docs/reference/cli/project/deployments/show.md rename to docs/docs/reference/cli/project/deployment/show.md index 7088ab09328..150b8c60660 100644 --- a/docs/docs/reference/cli/project/deployments/show.md +++ b/docs/docs/reference/cli/project/deployment/show.md @@ -1,13 +1,13 @@ --- note: GENERATED. DO NOT EDIT. -title: rill project deployments show +title: rill project deployment show --- -## rill project deployments show +## rill project deployment show Show details of a deployment ``` -rill project deployments show [] [flags] +rill project deployment show [] [flags] ``` ### Flags @@ -29,5 +29,5 @@ rill project deployments show [] [flags] ### SEE ALSO -* [rill project deployments](deployments.md) - Manage project deployments +* [rill project deployment](deployment.md) - Manage project deployments diff --git a/docs/docs/reference/cli/project/deployments/start.md b/docs/docs/reference/cli/project/deployment/start.md similarity index 73% rename from docs/docs/reference/cli/project/deployments/start.md rename to docs/docs/reference/cli/project/deployment/start.md index 146ad2bd7e7..18ede29d4b4 100644 --- a/docs/docs/reference/cli/project/deployments/start.md +++ b/docs/docs/reference/cli/project/deployment/start.md @@ -1,13 +1,13 @@ --- note: GENERATED. DO NOT EDIT. -title: rill project deployments start +title: rill project deployment start --- -## rill project deployments start +## rill project deployment start Start a deployment by branch ``` -rill project deployments start [] [flags] +rill project deployment start [] [flags] ``` ### Flags @@ -29,5 +29,5 @@ rill project deployments start [] [flags] ### SEE ALSO -* [rill project deployments](deployments.md) - Manage project deployments +* [rill project deployment](deployment.md) - Manage project deployments diff --git a/docs/docs/reference/cli/project/deployments/stop.md b/docs/docs/reference/cli/project/deployment/stop.md similarity index 73% rename from docs/docs/reference/cli/project/deployments/stop.md rename to docs/docs/reference/cli/project/deployment/stop.md index 924e5fe1dbd..e3a3dadbd0e 100644 --- a/docs/docs/reference/cli/project/deployments/stop.md +++ b/docs/docs/reference/cli/project/deployment/stop.md @@ -1,13 +1,13 @@ --- note: GENERATED. DO NOT EDIT. -title: rill project deployments stop +title: rill project deployment stop --- -## rill project deployments stop +## rill project deployment stop Stop a deployment by branch ``` -rill project deployments stop [] [flags] +rill project deployment stop [] [flags] ``` ### Flags @@ -29,5 +29,5 @@ rill project deployments stop [] [flags] ### SEE ALSO -* [rill project deployments](deployments.md) - Manage project deployments +* [rill project deployment](deployment.md) - Manage project deployments diff --git a/docs/docs/reference/cli/project/deployments/deployments.md b/docs/docs/reference/cli/project/deployments/deployments.md deleted file mode 100644 index c8f3ec25db0..00000000000 --- a/docs/docs/reference/cli/project/deployments/deployments.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -note: GENERATED. DO NOT EDIT. -title: rill project deployments ---- -## rill project deployments - -Manage project deployments - -### Global flags - -``` - --api-token string Token for authenticating with the cloud API - --format string Output format (options: "human", "json", "csv") (default "human") - -h, --help Print usage - --interactive Prompt for missing required parameters (default true) - --org string Organization Name -``` - -### SEE ALSO - -* [rill project](../project.md) - Manage projects -* [rill project deployments create](create.md) - Create a deployment for a specific branch -* [rill project deployments delete](delete.md) - Delete a deployment by branch -* [rill project deployments list](list.md) - List all deployments for a project -* [rill project deployments show](show.md) - Show details of a deployment -* [rill project deployments start](start.md) - Start a deployment by branch -* [rill project deployments stop](stop.md) - Stop a deployment by branch - diff --git a/docs/docs/reference/cli/project/project.md b/docs/docs/reference/cli/project/project.md index 02f9d54d4ea..006f31cf163 100644 --- a/docs/docs/reference/cli/project/project.md +++ b/docs/docs/reference/cli/project/project.md @@ -28,7 +28,7 @@ Manage projects * [rill project connect-github](connect-github.md) - Deploy project to Rill Cloud by pulling project files from a git repository * [rill project delete](delete.md) - Delete the project * [rill project deploy](deploy.md) - Deploy project to Rill Cloud by using a Rill Managed Git repo -* [rill project deployments](deployments/deployments.md) - Manage project deployments +* [rill project deployment](deployment/deployment.md) - Manage project deployments * [rill project describe](describe.md) - Retrieve detailed state for a resource * [rill project edit](edit.md) - Edit the project details * [rill project hibernate](hibernate.md) - Hibernate project From de2fcc2074e70a7477d3b54c6294033dd563b314 Mon Sep 17 00:00:00 2001 From: Anshul Khandelwal <12948312+k-anshul@users.noreply.github.com> Date: Thu, 8 Jan 2026 17:45:52 +0530 Subject: [PATCH 3/3] nit --- cli/cmd/project/deployment/list.go | 1 + cli/pkg/printer/resources.go | 1 + 2 files changed, 2 insertions(+) diff --git a/cli/cmd/project/deployment/list.go b/cli/cmd/project/deployment/list.go index 782a967e129..719c6c42b71 100644 --- a/cli/cmd/project/deployment/list.go +++ b/cli/cmd/project/deployment/list.go @@ -62,6 +62,7 @@ func ListCmd(ch *cmdutil.Helper) *cobra.Command { for _, d := range resp.Deployments { if d.Id == projResp.Project.PrimaryDeploymentId { d.Branch += " (primary)" + break } } ch.PrintDeployments(resp.Deployments) diff --git a/cli/pkg/printer/resources.go b/cli/pkg/printer/resources.go index 76180992cff..df1e780133b 100644 --- a/cli/pkg/printer/resources.go +++ b/cli/pkg/printer/resources.go @@ -750,6 +750,7 @@ func toDeploymentsTable(deployments []*adminv1.Deployment) []*deployment { res = append(res, toDeploymentRow(d)) } slices.SortFunc(res, func(a, b *deployment) int { + // group by environment if a.Environment < b.Environment { return -1 } else if a.Environment > b.Environment {