Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package harbor-cli for openSUSE:Factory checked in at 2026-08-04 23:28:40 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/harbor-cli (Old) and /work/SRC/openSUSE:Factory/.harbor-cli.new.16738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "harbor-cli" Tue Aug 4 23:28:40 2026 rev:19 rq:1369444 version:0.0.25 Changes: -------- --- /work/SRC/openSUSE:Factory/harbor-cli/harbor-cli.changes 2026-07-08 17:48:20.686081549 +0200 +++ /work/SRC/openSUSE:Factory/.harbor-cli.new.16738/harbor-cli.changes 2026-08-04 23:28:43.902455174 +0200 @@ -1,0 +2,9 @@ +Tue Aug 04 08:33:40 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 0.0.25: + * feat: add logout command (#1016) + * fix: set XIsResourceName for immutable rule APIs so numeric + project names resolve correctly during force delete (#990) + * Update harbor-cli manifest + +------------------------------------------------------------------- Old: ---- harbor-cli-0.0.24.obscpio New: ---- harbor-cli-0.0.25.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ harbor-cli.spec ++++++ --- /var/tmp/diff_new_pack.5OBwxf/_old 2026-08-04 23:28:45.098497468 +0200 +++ /var/tmp/diff_new_pack.5OBwxf/_new 2026-08-04 23:28:45.102497610 +0200 @@ -19,7 +19,7 @@ %define executable_name harbor Name: harbor-cli -Version: 0.0.24 +Version: 0.0.25 Release: 0 Summary: CLI for the Harbor cloud native registry License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.5OBwxf/_old 2026-08-04 23:28:45.138498883 +0200 +++ /var/tmp/diff_new_pack.5OBwxf/_new 2026-08-04 23:28:45.142499024 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/goharbor/harbor-cli.git</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">refs/tags/v0.0.24</param> + <param name="revision">refs/tags/v0.0.25</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.5OBwxf/_old 2026-08-04 23:28:45.166499873 +0200 +++ /var/tmp/diff_new_pack.5OBwxf/_new 2026-08-04 23:28:45.170500015 +0200 @@ -3,6 +3,6 @@ <param name="url">https://github.com/goharbor/harbor-cli</param> <param name="changesrevision">19e9a10c142ab3bb44e234f8862981a423cfc37c</param></service><service name="tar_scm"> <param name="url">https://github.com/goharbor/harbor-cli.git</param> - <param name="changesrevision">61dd0ce3b252ff4a69f9beee8bbf4ea3d12ea38c</param></service></servicedata> + <param name="changesrevision">2ecf0d8fabe32f189fcd93c167648af6644fc1d9</param></service></servicedata> (No newline at EOF) ++++++ harbor-cli-0.0.24.obscpio -> harbor-cli-0.0.25.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harbor-cli-0.0.24/bucket/harbor-cli.json new/harbor-cli-0.0.25/bucket/harbor-cli.json --- old/harbor-cli-0.0.24/bucket/harbor-cli.json 2026-07-07 15:46:05.000000000 +0200 +++ new/harbor-cli-0.0.25/bucket/harbor-cli.json 2026-07-28 15:18:35.000000000 +0200 @@ -1,5 +1,5 @@ { - "version": "0.0.23", + "version": "0.0.24", "description": "A command-line interface for Harbor container registry.", "homepage": "https://github.com/goharbor/harbor-cli", "license": "Apache-2.0", @@ -8,13 +8,13 @@ }, "architecture": { "64bit": { - "url": "https://github.com/goharbor/harbor-cli/releases/download/v0.0.23/harbor-cli_0.0.23_windows_amd64.zip", - "hash": "87d6a5045fb0d492ca9fbd5f1c95ebcc3e9b6060d5d0a99abe21f792a769e18c", + "url": "https://github.com/goharbor/harbor-cli/releases/download/v0.0.24/harbor-cli_0.0.24_windows_amd64.zip", + "hash": "787bbac8cc40c8c96d83f0676b16c89d33057ae67aeec0ceac5584203b168274", "bin": "harbor-cli.exe" }, "arm64": { - "url": "https://github.com/goharbor/harbor-cli/releases/download/v0.0.23/harbor-cli_0.0.23_windows_arm64.zip", - "hash": "8b093ffeabd2622fc58d3416bbd006febb732190465263bf8caed33bfe17578c", + "url": "https://github.com/goharbor/harbor-cli/releases/download/v0.0.24/harbor-cli_0.0.24_windows_arm64.zip", + "hash": "02b673e6775d5fb32c88235d7c16794e252301f0fed644ebfa1d9e94389803f5", "bin": "harbor-cli.exe" } }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harbor-cli-0.0.24/cmd/harbor/root/cmd.go new/harbor-cli-0.0.25/cmd/harbor/root/cmd.go --- old/harbor-cli-0.0.24/cmd/harbor/root/cmd.go 2026-07-07 15:46:05.000000000 +0200 +++ new/harbor-cli-0.0.25/cmd/harbor/root/cmd.go 2026-07-28 15:18:35.000000000 +0200 @@ -155,6 +155,10 @@ cmd.GroupID = "access" root.AddCommand(cmd) + cmd = LogoutCommand() + cmd.GroupID = "access" + root.AddCommand(cmd) + cmd = user.User() cmd.GroupID = "access" root.AddCommand(cmd) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harbor-cli-0.0.24/cmd/harbor/root/logout.go new/harbor-cli-0.0.25/cmd/harbor/root/logout.go --- old/harbor-cli-0.0.24/cmd/harbor/root/logout.go 1970-01-01 01:00:00.000000000 +0100 +++ new/harbor-cli-0.0.25/cmd/harbor/root/logout.go 2026-07-28 15:18:35.000000000 +0200 @@ -0,0 +1,87 @@ +// Copyright Project Harbor Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package root + +import ( + "bufio" + "fmt" + "os" + "strings" + + "github.com/goharbor/harbor-cli/pkg/utils" + "github.com/spf13/cobra" +) + +// LogoutCommand creates a new `harbor logout` command +func LogoutCommand() *cobra.Command { + var skipConfirm bool + + cmd := &cobra.Command{ + Use: "logout", + Short: "Log out from Harbor registry", + Long: "Remove the current credential from the local CLI config.", + Args: cobra.NoArgs, + Example: ` harbor logout`, + RunE: func(cmd *cobra.Command, args []string) error { + config, err := utils.GetCurrentHarborConfig() + if err != nil { + return fmt.Errorf("failed to get current harbor config: %s", err) + } + + if config.CurrentCredentialName == "" { + fmt.Println("Not logged in.") + return nil + } + + currentName := config.CurrentCredentialName + + if !skipConfirm { + fmt.Printf("Log out from '%s'? [y/N]: ", currentName) + + reader := bufio.NewReader(os.Stdin) + answer, err := reader.ReadString('\n') + if err != nil { + return fmt.Errorf("failed to read user input: %v", err) + } + + answer = strings.TrimSpace(strings.ToLower(answer)) + if answer != "y" && answer != "yes" { + fmt.Println("Logout cancelled.") + return nil + } + } + + for i, cred := range config.Credentials { + if cred.Name == currentName { + config.Credentials = append(config.Credentials[:i], config.Credentials[i+1:]...) + break + } + } + + config.CurrentCredentialName = "" + + if err := utils.UpdateConfigFile(config); err != nil { + return fmt.Errorf("failed to save config: %w", err) + } + + fmt.Printf("Logged out from '%s'.\n", currentName) + + return nil + }, + } + + cmd.Flags().BoolVarP(&skipConfirm, "yes", "y", false, "Skip confirmation prompt") + + return cmd +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harbor-cli-0.0.24/doc/cli-docs/harbor-logout.md new/harbor-cli-0.0.25/doc/cli-docs/harbor-logout.md --- old/harbor-cli-0.0.24/doc/cli-docs/harbor-logout.md 1970-01-01 01:00:00.000000000 +0100 +++ new/harbor-cli-0.0.25/doc/cli-docs/harbor-logout.md 2026-07-28 15:18:35.000000000 +0200 @@ -0,0 +1,43 @@ +--- +title: harbor logout +weight: 60 +--- +## harbor logout + +### Description + +##### Log out from Harbor registry + +### Synopsis + +Remove the current credential from the local CLI config. + +```sh +harbor logout [flags] +``` + +### Examples + +```sh + harbor logout +``` + +### Options + +```sh + -h, --help help for logout + -y, --yes Skip confirmation prompt +``` + +### Options inherited from parent commands + +```sh + -c, --config string config file (default is $HOME/.config/harbor-cli/config.yaml) + -o, --output-format string Output format. One of: json|yaml|csv + -v, --verbose verbose output +``` + +### SEE ALSO + +* [harbor](harbor.md) - Official Harbor CLI + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harbor-cli-0.0.24/doc/cli-docs/harbor.md new/harbor-cli-0.0.25/doc/cli-docs/harbor.md --- old/harbor-cli-0.0.24/doc/cli-docs/harbor.md 2026-07-07 15:46:05.000000000 +0200 +++ new/harbor-cli-0.0.25/doc/cli-docs/harbor.md 2026-07-28 15:18:35.000000000 +0200 @@ -46,6 +46,7 @@ * [harbor label](harbor-label.md) - Manage labels in Harbor * [harbor ldap](harbor-ldap.md) - Manage ldap users and groups * [harbor login](harbor-login.md) - Log in to Harbor registry +* [harbor logout](harbor-logout.md) - Log out from Harbor registry * [harbor logs](harbor-logs.md) - Get recent logs of the projects which the user is a member of * [harbor password](harbor-password.md) - Change your password * [harbor project](harbor-project.md) - Manage projects and assign resources to them diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harbor-cli-0.0.24/doc/man-docs/man1/harbor-logout.1 new/harbor-cli-0.0.25/doc/man-docs/man1/harbor-logout.1 --- old/harbor-cli-0.0.24/doc/man-docs/man1/harbor-logout.1 1970-01-01 01:00:00.000000000 +0100 +++ new/harbor-cli-0.0.25/doc/man-docs/man1/harbor-logout.1 2026-07-28 15:18:35.000000000 +0200 @@ -0,0 +1,45 @@ +.nh +.TH "HARBOR" "1" "Harbor Community" "Harbor User Manuals" + +.SH NAME +harbor-logout - Log out from Harbor registry + + +.SH SYNOPSIS +\fBharbor logout [flags]\fP + + +.SH DESCRIPTION +Remove the current credential from the local CLI config. + + +.SH OPTIONS +\fB-h\fP, \fB--help\fP[=false] + help for logout + +.PP +\fB-y\fP, \fB--yes\fP[=false] + Skip confirmation prompt + + +.SH OPTIONS INHERITED FROM PARENT COMMANDS +\fB-c\fP, \fB--config\fP="" + config file (default is $HOME/.config/harbor-cli/config.yaml) + +.PP +\fB-o\fP, \fB--output-format\fP="" + Output format. One of: json|yaml|csv + +.PP +\fB-v\fP, \fB--verbose\fP[=false] + verbose output + + +.SH EXAMPLE +.EX + harbor logout +.EE + + +.SH SEE ALSO +\fBharbor(1)\fP \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harbor-cli-0.0.24/doc/man-docs/man1/harbor.1 new/harbor-cli-0.0.25/doc/man-docs/man1/harbor.1 --- old/harbor-cli-0.0.24/doc/man-docs/man1/harbor.1 2026-07-07 15:46:05.000000000 +0200 +++ new/harbor-cli-0.0.25/doc/man-docs/man1/harbor.1 2026-07-28 15:18:35.000000000 +0200 @@ -43,4 +43,4 @@ .SH SEE ALSO -\fBharbor-artifact(1)\fP, \fBharbor-config(1)\fP, \fBharbor-context(1)\fP, \fBharbor-cve-allowlist(1)\fP, \fBharbor-health(1)\fP, \fBharbor-info(1)\fP, \fBharbor-instance(1)\fP, \fBharbor-jobservice(1)\fP, \fBharbor-label(1)\fP, \fBharbor-ldap(1)\fP, \fBharbor-login(1)\fP, \fBharbor-logs(1)\fP, \fBharbor-password(1)\fP, \fBharbor-project(1)\fP, \fBharbor-quota(1)\fP, \fBharbor-registry(1)\fP, \fBharbor-replication(1)\fP, \fBharbor-repo(1)\fP, \fBharbor-robot(1)\fP, \fBharbor-scan-all(1)\fP, \fBharbor-scanner(1)\fP, \fBharbor-schedule(1)\fP, \fBharbor-tag(1)\fP, \fBharbor-user(1)\fP, \fBharbor-version(1)\fP, \fBharbor-vulnerability(1)\fP, \fBharbor-webhook(1)\fP \ No newline at end of file +\fBharbor-artifact(1)\fP, \fBharbor-config(1)\fP, \fBharbor-context(1)\fP, \fBharbor-cve-allowlist(1)\fP, \fBharbor-health(1)\fP, \fBharbor-info(1)\fP, \fBharbor-instance(1)\fP, \fBharbor-jobservice(1)\fP, \fBharbor-label(1)\fP, \fBharbor-ldap(1)\fP, \fBharbor-login(1)\fP, \fBharbor-logout(1)\fP, \fBharbor-logs(1)\fP, \fBharbor-password(1)\fP, \fBharbor-project(1)\fP, \fBharbor-quota(1)\fP, \fBharbor-registry(1)\fP, \fBharbor-replication(1)\fP, \fBharbor-repo(1)\fP, \fBharbor-robot(1)\fP, \fBharbor-scan-all(1)\fP, \fBharbor-scanner(1)\fP, \fBharbor-schedule(1)\fP, \fBharbor-tag(1)\fP, \fBharbor-user(1)\fP, \fBharbor-version(1)\fP, \fBharbor-vulnerability(1)\fP, \fBharbor-webhook(1)\fP \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harbor-cli-0.0.24/pkg/api/immutable_handler.go new/harbor-cli-0.0.25/pkg/api/immutable_handler.go --- old/harbor-cli-0.0.24/pkg/api/immutable_handler.go 2026-07-07 15:46:05.000000000 +0200 +++ new/harbor-cli-0.0.25/pkg/api/immutable_handler.go 2026-07-28 15:18:35.000000000 +0200 @@ -56,7 +56,8 @@ if err != nil { return immutable.ListImmuRulesOK{}, err } - response, err := client.Immutable.ListImmuRules(ctx, &immutable.ListImmuRulesParams{ProjectNameOrID: projectName}) + XIsResourceName := true + response, err := client.Immutable.ListImmuRules(ctx, &immutable.ListImmuRulesParams{ProjectNameOrID: projectName, XIsResourceName: &XIsResourceName}) if err != nil { return immutable.ListImmuRulesOK{}, err } @@ -69,7 +70,8 @@ if err != nil { return err } - _, err = client.Immutable.DeleteImmuRule(ctx, &immutable.DeleteImmuRuleParams{ProjectNameOrID: projectName, ImmutableRuleID: ImmutableID}) + XIsResourceName := true + _, err = client.Immutable.DeleteImmuRule(ctx, &immutable.DeleteImmuRuleParams{ProjectNameOrID: projectName, ImmutableRuleID: ImmutableID, XIsResourceName: &XIsResourceName}) if err != nil { return err } ++++++ harbor-cli.obsinfo ++++++ --- /var/tmp/diff_new_pack.5OBwxf/_old 2026-08-04 23:28:45.958527881 +0200 +++ /var/tmp/diff_new_pack.5OBwxf/_new 2026-08-04 23:28:45.974528446 +0200 @@ -1,5 +1,5 @@ name: harbor-cli -version: 0.0.24 -mtime: 1783431965 -commit: 61dd0ce3b252ff4a69f9beee8bbf4ea3d12ea38c +version: 0.0.25 +mtime: 1785244715 +commit: 2ecf0d8fabe32f189fcd93c167648af6644fc1d9 ++++++ vendor.tar.gz ++++++
