detached 39076ab

cli(routes): allow image as positional argument instead of --image flag

commit
39076abf04000fa5a313660c3029c74c2dddb248
author
bnema · · 2026-01-28 20:51 UTC
committer
bnema · · 2026-01-28 21:02 UTC
parent
339400c
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
1 file · +6 -8
M internal/adapters/in/cli/routes.go +6 -8
@@ -250,21 +250,20 @@ func newRoutesAddCmd() *cobra.Command {
250250 var image string
251251
252252 cmd := &cobra.Command{
253- Use: "add <domain>",
253+ Use: "add <domain> <image>",
254254 Short: "Add a new route",
255255 Long: `Add a new route mapping a domain to a container image.
256256
257257 Examples:
258- gordon routes add app.mydomain.com --image myapp:latest
259- gordon --remote https://gordon.mydomain.com routes add api.mydomain.com --image api:v2`,
260- Args: cobra.ExactArgs(1),
258+ gordon routes add app.mydomain.com myapp:latest
259+ gordon --remote https://gordon.mydomain.com routes add api.mydomain.com api:v2`,
260+ Args: cobra.ExactArgs(2),
261261 RunE: func(cmd *cobra.Command, args []string) error {
262262 ctx := context.Background()
263263 routeDomain := args[0]
264264
265265 if image == "" {
266- fmt.Println(styles.RenderError("--image flag is required"))
267- return nil
266+ image = args[1]
268267 }
269268
270269 route := domain.Route{
@@ -292,8 +291,7 @@ Examples:
292291 },
293292 }
294293
295- cmd.Flags().StringVarP(&image, "image", "i", "", "Container image (required)")
296- _ = cmd.MarkFlagRequired("image")
294+ cmd.Flags().StringVarP(&image, "image", "i", "", "Container image")
297295
298296 return cmd
299297 }
@@ -250,21 +250,20 @@ func newRoutesAddCmd() *cobra.Command {
250 var image string250 var image string
251 251
252 cmd := &cobra.Command{252 cmd := &cobra.Command{
253- Use: "add <domain>",253+ Use: "add <domain> <image>",
254 Short: "Add a new route",254 Short: "Add a new route",
255 Long: `Add a new route mapping a domain to a container image.255 Long: `Add a new route mapping a domain to a container image.
256 256
257 Examples:257 Examples:
258- gordon routes add app.mydomain.com --image myapp:latest258+ gordon routes add app.mydomain.com myapp:latest
259- gordon --remote https://gordon.mydomain.com routes add api.mydomain.com --image api:v2`,259+ gordon --remote https://gordon.mydomain.com routes add api.mydomain.com api:v2`,
260- Args: cobra.ExactArgs(1),260+ Args: cobra.ExactArgs(2),
261 RunE: func(cmd *cobra.Command, args []string) error {261 RunE: func(cmd *cobra.Command, args []string) error {
262 ctx := context.Background()262 ctx := context.Background()
263 routeDomain := args[0]263 routeDomain := args[0]
264 264
265 if image == "" {265 if image == "" {
266- fmt.Println(styles.RenderError("--image flag is required"))266+ image = args[1]
267- return nil
268 }267 }
269 268
270 route := domain.Route{269 route := domain.Route{
@@ -292,8 +291,7 @@ Examples:
292 },291 },
293 }292 }
294 293
295- cmd.Flags().StringVarP(&image, "image", "i", "", "Container image (required)")294+ cmd.Flags().StringVarP(&image, "image", "i", "", "Container image")
296- _ = cmd.MarkFlagRequired("image")
297 295
298 return cmd296 return cmd
299 }297 }

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 7

Tags 106

↑↓ moveenter openesc close