Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package seidl for openSUSE:Factory checked in at 2026-07-22 19:03:50 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/seidl (Old) and /work/SRC/openSUSE:Factory/.seidl.new.24530 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "seidl" Wed Jul 22 19:03:50 2026 rev:4 rq:1367073 version:0.3 Changes: -------- --- /work/SRC/openSUSE:Factory/seidl/seidl.changes 2025-05-27 18:43:32.663970243 +0200 +++ /work/SRC/openSUSE:Factory/.seidl.new.24530/seidl.changes 2026-07-22 19:05:57.166791326 +0200 @@ -1,0 +2,12 @@ +Wed Jul 22 06:51:47 UTC 2026 - Felix Niederwanger <[email protected]> + +- Update to version 0.3: + * Update version + * Add release target + * Update screenshot + * Refactor Print functions + * Reformat README.md + * Update README + * Add Install section + +------------------------------------------------------------------- Old: ---- seidl-0.2.obscpio New: ---- seidl-0.3.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ seidl.spec ++++++ --- /var/tmp/diff_new_pack.6DXDj9/_old 2026-07-22 19:05:57.666808555 +0200 +++ /var/tmp/diff_new_pack.6DXDj9/_new 2026-07-22 19:05:57.666808555 +0200 @@ -1,7 +1,7 @@ # # spec file for package seidl # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ Name: seidl Summary: Complementary light pint client URL: https://github.com/grisu48/seidl -Version: 0.2 +Version: 0.3 Release: 0 License: MIT Group: Metapackages ++++++ _service ++++++ --- /var/tmp/diff_new_pack.6DXDj9/_old 2026-07-22 19:05:57.702809796 +0200 +++ /var/tmp/diff_new_pack.6DXDj9/_new 2026-07-22 19:05:57.710810071 +0200 @@ -2,7 +2,7 @@ <service name="obs_scm" mode="manual"> <param name="url">https://github.com/grisu48/seidl.git</param> <param name="scm">git</param> - <param name="revision">v0.2</param> + <param name="revision">v0.3</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.6DXDj9/_old 2026-07-22 19:05:57.734810899 +0200 +++ /var/tmp/diff_new_pack.6DXDj9/_new 2026-07-22 19:05:57.738811036 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/grisu48/seidl.git</param> - <param name="changesrevision">dadf49612513af98e6736de4fca3c7f856eaa2e9</param></service></servicedata> + <param name="changesrevision">57e0294d863951f4e5c703407ba680dff13f7225</param></service></servicedata> (No newline at EOF) ++++++ seidl-0.2.obscpio -> seidl-0.3.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seidl-0.2/Makefile new/seidl-0.3/Makefile --- old/seidl-0.2/Makefile 2022-06-30 14:02:19.000000000 +0200 +++ new/seidl-0.3/Makefile 2026-07-22 08:49:14.000000000 +0200 @@ -5,8 +5,10 @@ seidl: cmd/seidl/seidl.go go build -o $@ $^ -seidl-static: cmd/seidl/seidl.go - CGO_ENABLED=0 go build -ldflags="-w -s" -o seidl $^ +release: + CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o seidl_x86_64 ./... + CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="-w -s" -o seidl_arm64 ./... + CGO_ENABLED=0 GOOS=linux GOARCH=riscv64 go build -ldflags="-w -s" -o seidl_riscv64 ./... install: seidl install seidl ~/bin/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seidl-0.2/README.md new/seidl-0.3/README.md --- old/seidl-0.2/README.md 2022-06-30 14:02:19.000000000 +0200 +++ new/seidl-0.3/README.md 2026-07-22 08:49:14.000000000 +0200 @@ -1,43 +1,69 @@ # seidl -`seidl` is a lightweight [pint](https://pint.suse.com/) query utility designed for easy usage. It displays the current SUSE publiccloud images according to customizable filter rules. - -In aims at complementing the [public-cloud-info-client](https://github.com/SUSE-Enceladus/public-cloud-info-client) by the feature to display all current not-deleted and not-deprecated images in a nice table on the console. +`seidl` is a lightweight [pint](https://pint.suse.com/) query utility which +displays the current SUSE publiccloud images according to customizable filter +rules. + +The primary goal is to provide a easy-to-use complement to +[public-cloud-info-client](https://github.com/SUSE-Enceladus/public-cloud-info-client), +more specifically to display all current images on the console.  -Image information are fetched from `https://susepubliccloudinfo.suse.com/v1/[microsoft|amazon|google]/images.json` and then parsed accordingly. +Image information are fetched from +`https://susepubliccloudinfo.suse.com/v1/[microsoft|amazon|google]/images.json`. -`seidl` is named after a small beer quantity in Austria because it's slightly smaller than a pint (typically 0.3 liters). +`seidl` is named after a small beer quantity in Austria because it's slightly smaller than a pint. ## Usage - seidl -h # Print help - - seidl gce # Query current GCE images - seidl --region eu-west-1 aws # Query current AWS images - seidl azure # Query current Azure images - -You can also filter results using the `-f` arguments. It supports a comma separated list of strings, where every entry of that list must be present in the image name +``` +seidl -h # Print help - seidl -f sles,15-sp3 gce # List GCE images, filter for SLES 15-SP3 images - seidl -f sles,15-sp3 azure gce # List Azure and GCE images, filter for SLES 15-SP3 images +seidl gce # Query current GCE images +seidl --region eu-west-1 aws # Query current AWS images +seidl azure # Query current Azure images +```` + +You can also filter results using the `-f` arguments. It supports a comma separated list of strings, +where every entry of that list must be present in the image name. + +``` +seidl -f sles,16-0 gce # List GCE images, filter for SLES 15-SP3 images +seidl -f sles,15-sp7 azure gce # List Azure and GCE images, filter for SLES 15-SP3 images +```` Additional commands are: - seidl --list-aws-regions # List available AWS regions - seidl --list-az-envs # List possible Azure environments +``` +seidl --list-aws-regions # List available AWS regions +seidl --list-az-envs # List possible Azure environments +seidl --noformat ... # Don't format the output as a table +``` -## Build +## Install -The lazy way: +Check the [Releases](https://github.com/grisu48/seidl/releases) page of this repository. - make +## openSUSE - make seidl install # the very lazy way. Build and install to ~/bin +`seidl` is part of openSUSE Tumbleweed and can be installed there via `zypper in seidl`. -Canonical go way: +Since at least Leap 16.0 it is also part of the main Leap repositories. + +## Build + +The lazy way: - go build ./... +``` +make +make seidl install # the very lazy way. Build and install to ~/bin +``` + +The `go` way: + +``` +go build ./... +``` -Requirements: Pure `go`, no external dependencies required here. +Requirements: Pure `go`, no external dependencies required. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seidl-0.2/cmd/seidl/seidl.go new/seidl-0.3/cmd/seidl/seidl.go --- old/seidl-0.2/cmd/seidl/seidl.go 2022-06-30 14:02:19.000000000 +0200 +++ new/seidl-0.3/cmd/seidl/seidl.go 2026-07-22 08:49:14.000000000 +0200 @@ -10,7 +10,7 @@ "strings" ) -const VERSION = "0.2" +const VERSION = "0.3" type Config struct { Region string @@ -76,6 +76,80 @@ i.Images = i.Images[:n] } +func HashSeparator(n int) string { + var sb strings.Builder + for i := 0; i < n; i++ { + sb.WriteRune('#') + } + return sb.String() +} + +// Print all images as a Table +func (images *Images) PrintGCETable() { + separator := HashSeparator(90) + fmt.Println(separator) + fmt.Printf("# %-54s # %-18s # %-8s #\n", "Name", "Project", "State") + for _, image := range images.Images { + fmt.Printf("| %-55s| %-18s | %-8s |\n", image.Name, image.Project, image.State) + } + fmt.Println(separator) +} + +// Print all images as a List +func (images *Images) PrintGCE() { + for _, image := range images.Images { + fmt.Printf("%-55s %-18s %-8s\n", image.Name, image.Project, image.State) + } +} + +func (images *Images) PrintAWSTable(region string) { + if region == "" { + separator := HashSeparator(114) + fmt.Println(separator) + fmt.Printf("# %-22s # %-55s # %-15s # %-9s #\n", "ID", "Name", "Region", "State") + for _, image := range images.Images { + fmt.Printf("| %-22s | %-55s | %-15s | %9s |\n", image.Id, image.Name, image.Region, image.State) + } + fmt.Println(separator) + } else { + separator := HashSeparator(114) + fmt.Println(96) + fmt.Printf("# %-22s # %-55s # %-9s #\n", "ID", "Name", "State") + for _, image := range images.Images { + fmt.Printf("| %-22s | %-55s | %9s |\n", image.Id, image.Name, image.State) + } + fmt.Println(separator) + } +} + +func (images *Images) PrintAWS(region string) { + if region == "" { + for _, image := range images.Images { + fmt.Printf("%-22s %-55s %-15s %9s\n", image.Id, image.Name, image.Region, image.State) + } + } else { + for _, image := range images.Images { + fmt.Printf("%-22s %-55s %9s\n", image.Id, image.Name, image.State) + } + } +} + +func (images *Images) PrintAzureTable() { + separator := HashSeparator(85) + fmt.Println(separator) + fmt.Printf("# %-58s # %-20s #\n", "URN", "State") + for _, image := range images.Images { + fmt.Printf("| %-58s | %20s |\n", image.URN, image.State) + } + fmt.Println(separator) +} + +func (images *Images) PrintAzure() { + for _, image := range images.Images { + fmt.Printf("%-48s %20s\n", image.URN, image.State) + } +} + func (i *Image) filter(filter string) bool { if filter == "" { return true @@ -218,21 +292,22 @@ continue } if arg[0] == '-' { // Configuration parameter - if arg == "-h" || arg == "--help" { + switch arg { + case "-h", "--help": usage() return - } else if arg == "--version" { + case "--version": fmt.Printf("seidl v%s -- https://github.com/grisu48/seidl/\n", VERSION) return - } else if arg == "-f" || arg == "--filter" { + case "-f", "--filter": i += 1 config.Filter = args[i] - } else if arg == "-r" || arg == "--region" { + case "-r", "--region": i += 1 config.Region = args[i] - } else if arg == "-n" || arg == "--noformat" { + case "-n", "--noformat": config.format = "" - } else if arg == "--list-az-envs" { + case "--list-az-envs": envs, err := GetAzureEnvironments() if err != nil { fmt.Fprintf(os.Stderr, "error fetching environments: %s\n", err) @@ -241,7 +316,7 @@ for _, env := range envs { fmt.Printf("%s\n", env.Name) } - } else if arg == "--list-aws-regions" { + case "--list-aws-regions": envs, err := GetAWSRegions() if err != nil { fmt.Fprintf(os.Stderr, "error fetching regions: %s\n", err) @@ -250,7 +325,7 @@ for _, env := range envs.Regions { fmt.Printf("%s\n", env.Name) } - } else { + default: fmt.Fprintf(os.Stderr, "invalid parameter: %s\n", arg) os.Exit(1) } @@ -272,16 +347,9 @@ os.Exit(1) } if config.format == "table" { - fmt.Println("################################################################################") - fmt.Printf("# %-44s # %-18s # %-8s #\n", "Name", "Project", "State") - for _, image := range images.Images { - fmt.Printf("| %-45s| %-18s | %-8s |\n", image.Name, image.Project, image.State) - } - fmt.Println("################################################################################") + images.PrintGCETable() } else { - for _, image := range images.Images { - fmt.Printf("%-45s %-18s %-8s\n", image.Name, image.Project, image.State) - } + images.PrintGCE() } } else if isAWS(arg) { images, err := FetchImages("amazon") @@ -309,32 +377,9 @@ } if config.format == "table" { - // Note: I tried but because of the amount of information it's impossible to reduce it to 80 characters per line - if config.Region == "" { - fmt.Println("################################################################################################################") - fmt.Printf("# %-22s # %-55s # %-15s # %-9s #\n", "ID", "Name", "Region", "State") - for _, image := range images.Images { - fmt.Printf("| %-22s | %-55s | %-15s | %9s |\n", image.Id, image.Name, image.Region, image.State) - } - fmt.Println("################################################################################################################") - } else { - fmt.Println("################################################################################################") - fmt.Printf("# %-22s # %-55s # %-9s #\n", "ID", "Name", "State") - for _, image := range images.Images { - fmt.Printf("| %-22s | %-55s | %9s |\n", image.Id, image.Name, image.State) - } - fmt.Println("################################################################################################") - } + images.PrintAWSTable(config.Region) } else { - if config.Region == "" { - for _, image := range images.Images { - fmt.Printf("%-22s %-55s %-15s %9s\n", image.Id, image.Name, image.Region, image.State) - } - } else { - for _, image := range images.Images { - fmt.Printf("%-22s %-55s %9s\n", image.Id, image.Name, image.State) - } - } + images.PrintAWS(config.Region) } } else if isAzure(arg) { images, err := FetchImages("microsoft") @@ -353,16 +398,9 @@ } if config.format == "table" { - fmt.Println("###########################################################################") - fmt.Printf("# %-48s # %-20s #\n", "URN", "State") - for _, image := range images.Images { - fmt.Printf("| %-48s | %20s |\n", image.URN, image.State) - } - fmt.Println("###########################################################################") + images.PrintAzureTable() } else { - for _, image := range images.Images { - fmt.Printf("%-48s %20s\n", image.URN, image.State) - } + images.PrintAzure() } } else { fmt.Fprintf(os.Stderr, "error: invalid CSP\n") Binary files old/seidl-0.2/usage.png and new/seidl-0.3/usage.png differ ++++++ seidl.obsinfo ++++++ --- /var/tmp/diff_new_pack.6DXDj9/_old 2026-07-22 19:05:57.906816825 +0200 +++ /var/tmp/diff_new_pack.6DXDj9/_new 2026-07-22 19:05:57.914817101 +0200 @@ -1,5 +1,5 @@ name: seidl -version: 0.2 -mtime: 1656590539 -commit: dadf49612513af98e6736de4fca3c7f856eaa2e9 +version: 0.3 +mtime: 1784702954 +commit: 57e0294d863951f4e5c703407ba680dff13f7225
