From 59ad618a08fa0002095141574c4143cffe3f3a1d Mon Sep 17 00:00:00 2001 From: Leonhard Schulze <1278314+LSchu@users.noreply.github.com> Date: Tue, 28 Jul 2026 10:53:36 +0200 Subject: [PATCH 1/7] fix: login using --password and --identity-token failing --- docs/content/1_getting_started/commands.md | 8 +++---- src/cmd/catalog/login.go | 28 ++++++++++++---------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/docs/content/1_getting_started/commands.md b/docs/content/1_getting_started/commands.md index aea52299..3ffac3c7 100644 --- a/docs/content/1_getting_started/commands.md +++ b/docs/content/1_getting_started/commands.md @@ -235,21 +235,21 @@ Shows a list of commands or help for one command Log into a registry and store credentials ->kubara catalog login [flags] +>kubara catalog login [flags] . **--help, -h**: show help -**--identity-token**: Log in with identity token interactively +**--identity-token**="": identity token **--identity-token-stdin**: Log in with identity token from stdin **--insecure**: Ignore TLS certificate verification issues for registry connections. -**--password, -p**: Log in with password interactively +**--password, -p**="": registry password **--password-stdin**: Log in with password from stdin -**--username, -u**="": Log in using username and password +**--username, -u**="": registry username #### help, h diff --git a/src/cmd/catalog/login.go b/src/cmd/catalog/login.go index ed5502ce..25e9f18a 100644 --- a/src/cmd/catalog/login.go +++ b/src/cmd/catalog/login.go @@ -16,9 +16,9 @@ import ( type catalogLoginFlags struct { insecure bool username string - password bool + password string passwordStdin bool - identityToken bool + identityToken string identityTokenStdin bool } @@ -27,19 +27,19 @@ func NewCatalogLogin() *cli.Command { cmd := &cli.Command{ Name: "login", Usage: "Log into a registry and store credentials", - UsageText: "kubara catalog login [flags] ", + UsageText: "kubara catalog login [flags] .", Description: "Asks for your login credentials and stores them under $HOME/.kubara/credentials.json for future registry interactions.", Flags: []cli.Flag{ &cli.StringFlag{ Name: "username", Aliases: []string{"u"}, - Usage: "Log in using username and password", + Usage: "registry username", Destination: &flags.username, }, - &cli.BoolFlag{ + &cli.StringFlag{ Name: "password", Aliases: []string{"p"}, - Usage: "Log in with password interactively", + Usage: "registry password", Destination: &flags.password, }, &cli.BoolFlag{ @@ -47,9 +47,9 @@ func NewCatalogLogin() *cli.Command { Usage: "Log in with password from stdin", Destination: &flags.passwordStdin, }, - &cli.BoolFlag{ + &cli.StringFlag{ Name: "identity-token", - Usage: "Log in with identity token interactively", + Usage: "identity token", Destination: &flags.identityToken, }, &cli.BoolFlag{ @@ -94,15 +94,15 @@ func NewCatalogLogin() *cli.Command { func resolveCatalogLoginOptions(flags *catalogLoginFlags) (internal.LoginOptions, error) { var err error - if flags.password && flags.passwordStdin { + if (flags.password != "") && flags.passwordStdin { return internal.LoginOptions{}, fmt.Errorf("password and password-stdin cannot be used together") } - if flags.identityToken && flags.identityTokenStdin { + if (flags.identityToken != "") && flags.identityTokenStdin { return internal.LoginOptions{}, fmt.Errorf("identity-token and identity-token-stdin cannot be used together") } - usesPasswordInputs := flags.username != "" || flags.password || flags.passwordStdin - usesIdentityTokenAuth := flags.identityToken || flags.identityTokenStdin + usesPasswordInputs := flags.username != "" || flags.password != "" || flags.passwordStdin + usesIdentityTokenAuth := flags.identityToken != "" || flags.identityTokenStdin if usesPasswordInputs && usesIdentityTokenAuth { return internal.LoginOptions{}, fmt.Errorf("username/password and identity token authentication cannot be combined") @@ -112,6 +112,8 @@ func resolveCatalogLoginOptions(flags *catalogLoginFlags) (internal.LoginOptions var identityToken string switch { + case flags.identityToken != "": + identityToken = flags.identityToken case flags.identityTokenStdin: identityToken, err = readLine(io.Discard, "", false) if err != nil { @@ -141,6 +143,8 @@ func resolveCatalogLoginOptions(flags *catalogLoginFlags) (internal.LoginOptions var password string switch { + case flags.password != "": + password = flags.password case flags.passwordStdin: password, err = readLine(io.Discard, "", false) if err != nil { From 3c87f65d3183e154476cd37049eefa329d7601b3 Mon Sep 17 00:00:00 2001 From: Leonhard Schulze <1278314+LSchu@users.noreply.github.com> Date: Tue, 28 Jul 2026 11:01:25 +0200 Subject: [PATCH 2/7] fix: dot --- src/cmd/catalog/login.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cmd/catalog/login.go b/src/cmd/catalog/login.go index 25e9f18a..6df49ca4 100644 --- a/src/cmd/catalog/login.go +++ b/src/cmd/catalog/login.go @@ -27,7 +27,7 @@ func NewCatalogLogin() *cli.Command { cmd := &cli.Command{ Name: "login", Usage: "Log into a registry and store credentials", - UsageText: "kubara catalog login [flags] .", + UsageText: "kubara catalog login [flags] ", Description: "Asks for your login credentials and stores them under $HOME/.kubara/credentials.json for future registry interactions.", Flags: []cli.Flag{ &cli.StringFlag{ From 969984ade0167d05e339dac1c6e4bb25859ae6a9 Mon Sep 17 00:00:00 2001 From: Leonhard Schulze <1278314+LSchu@users.noreply.github.com> Date: Tue, 28 Jul 2026 11:18:26 +0200 Subject: [PATCH 3/7] fix: docs --- docs/content/1_getting_started/commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/1_getting_started/commands.md b/docs/content/1_getting_started/commands.md index 3ffac3c7..7debc7a4 100644 --- a/docs/content/1_getting_started/commands.md +++ b/docs/content/1_getting_started/commands.md @@ -235,7 +235,7 @@ Shows a list of commands or help for one command Log into a registry and store credentials ->kubara catalog login [flags] . +>kubara catalog login [flags] **--help, -h**: show help From fd0453b1bba93b3870603b5844d4fd54a4b396b7 Mon Sep 17 00:00:00 2001 From: Leonhard Schulze <1278314+LSchu@users.noreply.github.com> Date: Wed, 12 Aug 2026 10:49:30 +0200 Subject: [PATCH 4/7] feat: fix login --- src/cmd/catalog/login.go | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/cmd/catalog/login.go b/src/cmd/catalog/login.go index 6df49ca4..c0f4e91e 100644 --- a/src/cmd/catalog/login.go +++ b/src/cmd/catalog/login.go @@ -111,22 +111,15 @@ func resolveCatalogLoginOptions(flags *catalogLoginFlags) (internal.LoginOptions if usesIdentityTokenAuth { var identityToken string - switch { - case flags.identityToken != "": + if flags.identityToken != "" { identityToken = flags.identityToken - case flags.identityTokenStdin: + } + if flags.identityTokenStdin { identityToken, err = readLine(io.Discard, "", false) if err != nil { return internal.LoginOptions{}, fmt.Errorf("read identity token from stdin: %w", err) } - - default: - identityToken, err = readLine(os.Stdout, "Identity Token: ", true) - if err != nil { - return internal.LoginOptions{}, fmt.Errorf("read identity token: %w", err) - } } - return internal.LoginOptions{ IdentityToken: identityToken, Insecure: flags.insecure, From aef911999299ca30eae485b288b9f7016b38e6a7 Mon Sep 17 00:00:00 2001 From: Leonhard Schulze <1278314+LSchu@users.noreply.github.com> Date: Wed, 12 Aug 2026 10:56:47 +0200 Subject: [PATCH 5/7] feat: update docs --- docs/content/2_concepts/catalog_distribution.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/content/2_concepts/catalog_distribution.md b/docs/content/2_concepts/catalog_distribution.md index 90d7c2a1..dfd2935a 100644 --- a/docs/content/2_concepts/catalog_distribution.md +++ b/docs/content/2_concepts/catalog_distribution.md @@ -109,7 +109,13 @@ Only plain `major.minor.patch` is accepted. If your registry needs authentication, log in once: ```bash -kubara catalog login -u my-github-user --password ghcr.io +kubara catalog login -u my-github-user --password my-password ghcr.io +``` + +or alternatively + +```bash +kubara catalog login -u my-github-user --password-stdin ghcr.io ``` kubara stores registry credentials in: From b8cc93e9ade303a73e2a2e1923e73ac925233e86 Mon Sep 17 00:00:00 2001 From: LSchu Date: Wed, 12 Aug 2026 11:30:27 +0200 Subject: [PATCH 6/7] Apply suggestion from @Matthiator Co-authored-by: Matthias Bregenzer <33330325+Matthiator@users.noreply.github.com> --- docs/content/2_concepts/catalog_distribution.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/2_concepts/catalog_distribution.md b/docs/content/2_concepts/catalog_distribution.md index dfd2935a..a10b6b87 100644 --- a/docs/content/2_concepts/catalog_distribution.md +++ b/docs/content/2_concepts/catalog_distribution.md @@ -115,7 +115,7 @@ kubara catalog login -u my-github-user --password my-password ghcr.io or alternatively ```bash -kubara catalog login -u my-github-user --password-stdin ghcr.io +printf '%s' "$GITHUB_TOKEN" | kubara catalog login -u my-github-user --password-stdin ghcr.io ``` kubara stores registry credentials in: From 5242cbcd7fcf858b8acf5adf367e026d3d25df36 Mon Sep 17 00:00:00 2001 From: Matthias Bregenzer <33330325+Matthiator@users.noreply.github.com> Date: Wed, 12 Aug 2026 11:36:31 +0200 Subject: [PATCH 7/7] docs: update identity token login method --- docs/content/2_concepts/catalog_distribution.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/2_concepts/catalog_distribution.md b/docs/content/2_concepts/catalog_distribution.md index a10b6b87..952115d4 100644 --- a/docs/content/2_concepts/catalog_distribution.md +++ b/docs/content/2_concepts/catalog_distribution.md @@ -128,7 +128,7 @@ You can use: - username/password (interactive) - password from stdin -- identity token (interactive) +- identity token from flag - identity token from stdin ## Step 4: Push the cached catalog