Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package spicetify-cli for openSUSE:Factory checked in at 2025-06-11 16:22:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/spicetify-cli (Old) and /work/SRC/openSUSE:Factory/.spicetify-cli.new.19631 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "spicetify-cli" Wed Jun 11 16:22:42 2025 rev:16 rq:1284425 version:2.40.11 Changes: -------- --- /work/SRC/openSUSE:Factory/spicetify-cli/spicetify-cli.changes 2025-06-03 17:56:32.461073513 +0200 +++ /work/SRC/openSUSE:Factory/.spicetify-cli.new.19631/spicetify-cli.changes 2025-06-11 16:23:44.221490563 +0200 @@ -1,0 +2,9 @@ +Tue Jun 10 11:10:34 UTC 2025 - Jan Kužílek <jan.kuzi...@suse.com> + +- Update to version 2.40.11: + * fix(preprocess): ignore mini-player's css on `1.2.64` and higher + * chore(deps): bump github.com/pterm/pterm from 0.12.80 to 0.12.81 (#3432) + * chore(deps): bump golang.org/x/net from 0.40.0 to 0.41.0 (#3428) + * chore(css-map): add `exploreButton` (#3430) + +------------------------------------------------------------------- Old: ---- cli-2.40.10.obscpio New: ---- cli-2.40.11.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ spicetify-cli.spec ++++++ --- /var/tmp/diff_new_pack.Gbghgd/_old 2025-06-11 16:23:45.541545649 +0200 +++ /var/tmp/diff_new_pack.Gbghgd/_new 2025-06-11 16:23:45.553546150 +0200 @@ -19,7 +19,7 @@ %define sname cli %define binname spicetify Name: spicetify-cli -Version: 2.40.10 +Version: 2.40.11 Release: 0 Summary: Command-line tool to customize Spotify client License: LGPL-2.1-or-later ++++++ _service ++++++ --- /var/tmp/diff_new_pack.Gbghgd/_old 2025-06-11 16:23:45.577547152 +0200 +++ /var/tmp/diff_new_pack.Gbghgd/_new 2025-06-11 16:23:45.581547318 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/spicetify/cli</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v2.40.10</param> + <param name="revision">v2.40.11</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">enable</param> <param name="versionrewrite-pattern">v(.*)</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.Gbghgd/_old 2025-06-11 16:23:45.613548654 +0200 +++ /var/tmp/diff_new_pack.Gbghgd/_new 2025-06-11 16:23:45.613548654 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/spicetify/cli</param> - <param name="changesrevision">0b70a046f97c6792a3a6342b03f1cccd370c597a</param></service></servicedata> + <param name="changesrevision">5146df55e7fcea247e43aa1b0e33f3ba36cd205d</param></service></servicedata> (No newline at EOF) ++++++ cli-2.40.10.obscpio -> cli-2.40.11.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cli-2.40.10/css-map.json new/cli-2.40.11/css-map.json --- old/cli-2.40.10/css-map.json 2025-05-27 20:53:44.000000000 +0200 +++ new/cli-2.40.11/css-map.json 2025-06-09 23:57:08.000000000 +0200 @@ -159,6 +159,7 @@ "SruqsAzX8rUtY2isUZDF": "lyrics-lyricsContent-unsynced", "E4q8ogfdWtye7YgotBlN": "main-actionBar-ActionBar", "eSg4ntPU2KQLfpLGXAww": "main-actionBar-ActionBarRow", + "K06ol8ltPT_atXE_JjUP": "main-actionBar-exploreButton", "CoLO4pdSl8LGWyVZA00t": "main-actionBarBackground-background", "PkOz5g82CaoKk1J3GX0e": "main-actionBarBackground-background", "GTAFfOA_w5vh_bDaGJAG": "main-actionButtons", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cli-2.40.10/go.mod new/cli-2.40.11/go.mod --- old/cli-2.40.10/go.mod 2025-05-27 20:53:44.000000000 +0200 +++ new/cli-2.40.11/go.mod 2025-06-09 23:57:08.000000000 +0200 @@ -5,8 +5,8 @@ require ( github.com/go-ini/ini v1.67.0 github.com/mattn/go-colorable v0.1.14 - github.com/pterm/pterm v0.12.80 - golang.org/x/net v0.40.0 + github.com/pterm/pterm v0.12.81 + golang.org/x/net v0.41.0 golang.org/x/sys v0.33.0 ) @@ -14,7 +14,7 @@ atomicgo.dev/cursor v0.2.0 // indirect atomicgo.dev/keyboard v0.2.9 // indirect atomicgo.dev/schedule v0.1.0 // indirect - github.com/containerd/console v1.0.3 // indirect + github.com/containerd/console v1.0.5 // indirect github.com/gookit/color v1.5.4 // indirect github.com/lithammer/fuzzysearch v1.1.8 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -23,5 +23,5 @@ github.com/stretchr/testify v1.9.0 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect golang.org/x/term v0.32.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/text v0.26.0 // indirect ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cli-2.40.10/go.sum new/cli-2.40.11/go.sum --- old/cli-2.40.10/go.sum 2025-05-27 20:53:44.000000000 +0200 +++ new/cli-2.40.11/go.sum 2025-06-09 23:57:08.000000000 +0200 @@ -16,8 +16,9 @@ github.com/MarvinJWendt/testza v0.5.2 h1:53KDo64C1z/h/d/stCYCPY69bt/OSwjq5KpFNwi+zB4= github.com/MarvinJWendt/testza v0.5.2/go.mod h1:xu53QFE5sCdjtMCKk8YMQ2MnymimEctc4n3EjyIYvEY= github.com/atomicgo/cursor v0.0.1/go.mod h1:cBON2QmmrysudxNBFthvMtN32r3jxVRIvzkUiF/RuIk= -github.com/containerd/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw= github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= +github.com/containerd/console v1.0.5 h1:R0ymNeydRqH2DmakFNdmjR2k0t7UPuiOV/N/27/qqsc= +github.com/containerd/console v1.0.5/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -53,8 +54,8 @@ github.com/pterm/pterm v0.12.33/go.mod h1:x+h2uL+n7CP/rel9+bImHD5lF3nM9vJj80k9ybiiTTE= github.com/pterm/pterm v0.12.36/go.mod h1:NjiL09hFhT/vWjQHSj1athJpx6H8cjpHXNAK5bUw8T8= github.com/pterm/pterm v0.12.40/go.mod h1:ffwPLwlbXxP+rxT0GsgDTzS3y3rmpAO1NMjUkGTYf8s= -github.com/pterm/pterm v0.12.80 h1:mM55B+GnKUnLMUSqhdINe4s6tOuVQIetQ3my8JGyAIg= -github.com/pterm/pterm v0.12.80/go.mod h1:c6DeF9bSnOSeFPZlfs4ZRAFcf5SCoTwvwQ5xaKGQlHo= +github.com/pterm/pterm v0.12.81 h1:ju+j5I2++FO1jBKMmscgh5h5DPFDFMB7epEjSoKehKA= +github.com/pterm/pterm v0.12.81/go.mod h1:TyuyrPjnxfwP+ccJdBTeWHtd/e0ybQHkOS/TakajZCw= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= @@ -80,8 +81,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -94,6 +95,7 @@ golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= @@ -110,8 +112,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cli-2.40.10/src/preprocess/preprocess.go new/cli-2.40.11/src/preprocess/preprocess.go --- old/cli-2.40.10/src/preprocess/preprocess.go 2025-05-27 20:53:44.000000000 +0200 +++ new/cli-2.40.11/src/preprocess/preprocess.go 2025-06-09 23:57:08.000000000 +0200 @@ -283,7 +283,7 @@ appPath := filepath.Join(extractedAppsPath, "xpui") filepath.Walk(appPath, func(path string, info os.FileInfo, err error) error { // temp so text won't be black ._. - if info.Name() == "pip-mini-player.css" { + if strings.HasPrefix(info.Name(), "pip-mini-player") && strings.HasSuffix(info.Name(), ".css") { return nil } ++++++ cli.obsinfo ++++++ --- /var/tmp/diff_new_pack.Gbghgd/_old 2025-06-11 16:23:45.821557334 +0200 +++ /var/tmp/diff_new_pack.Gbghgd/_new 2025-06-11 16:23:45.825557501 +0200 @@ -1,5 +1,5 @@ name: cli -version: 2.40.10 -mtime: 1748372024 -commit: 0b70a046f97c6792a3a6342b03f1cccd370c597a +version: 2.40.11 +mtime: 1749506228 +commit: 5146df55e7fcea247e43aa1b0e33f3ba36cd205d ++++++ vendor.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/.golangci.yml new/vendor/github.com/containerd/console/.golangci.yml --- old/vendor/github.com/containerd/console/.golangci.yml 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/.golangci.yml 2025-06-09 23:57:08.000000000 +0200 @@ -1,16 +1,16 @@ linters: enable: - - structcheck - - varcheck - - staticcheck - - unconvert - gofmt - goimports - - golint - ineffassign - - vet - - unused - misspell + - revive + - staticcheck + - structcheck + - unconvert + - unused + - varcheck + - vet disable: - errcheck diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/README.md new/vendor/github.com/containerd/console/README.md --- old/vendor/github.com/containerd/console/README.md 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/README.md 2025-06-09 23:57:08.000000000 +0200 @@ -22,8 +22,8 @@ console is a containerd sub-project, licensed under the [Apache 2.0 license](./LICENSE). As a containerd sub-project, you will find the: - * [Project governance](https://github.com/containerd/project/blob/master/GOVERNANCE.md), - * [Maintainers](https://github.com/containerd/project/blob/master/MAINTAINERS), - * and [Contributing guidelines](https://github.com/containerd/project/blob/master/CONTRIBUTING.md) + * [Project governance](https://github.com/containerd/project/blob/main/GOVERNANCE.md), + * [Maintainers](https://github.com/containerd/project/blob/main/MAINTAINERS), + * and [Contributing guidelines](https://github.com/containerd/project/blob/main/CONTRIBUTING.md) information in our [`containerd/project`](https://github.com/containerd/project) repository. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/console.go new/vendor/github.com/containerd/console/console.go --- old/vendor/github.com/containerd/console/console.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/console.go 2025-06-09 23:57:08.000000000 +0200 @@ -22,7 +22,10 @@ "os" ) -var ErrNotAConsole = errors.New("provided file is not a console") +var ( + ErrNotAConsole = errors.New("provided file is not a console") + ErrNotImplemented = errors.New("not implemented") +) type File interface { io.ReadWriteCloser @@ -45,7 +48,7 @@ SetRaw() error // DisableEcho disables echo on the console DisableEcho() error - // Reset restores the console to its orignal state + // Reset restores the console to its original state Reset() error // Size returns the window size of the console Size() (WinSize, error) @@ -78,7 +81,7 @@ } // ConsoleFromFile returns a console using the provided file -// nolint:golint +// nolint:revive func ConsoleFromFile(f File) (Console, error) { if err := checkConsole(f); err != nil { return nil, err diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/console_linux.go new/vendor/github.com/containerd/console/console_linux.go --- old/vendor/github.com/containerd/console/console_linux.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/console_linux.go 2025-06-09 23:57:08.000000000 +0200 @@ -1,3 +1,4 @@ +//go:build linux // +build linux /* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/console_other.go new/vendor/github.com/containerd/console/console_other.go --- old/vendor/github.com/containerd/console/console_other.go 1970-01-01 01:00:00.000000000 +0100 +++ new/vendor/github.com/containerd/console/console_other.go 2025-06-09 23:57:08.000000000 +0200 @@ -0,0 +1,36 @@ +//go:build !darwin && !freebsd && !linux && !netbsd && !openbsd && !windows && !zos +// +build !darwin,!freebsd,!linux,!netbsd,!openbsd,!windows,!zos + +/* + Copyright The containerd 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 console + +// NewPty creates a new pty pair +// The master is returned as the first console and a string +// with the path to the pty slave is returned as the second +func NewPty() (Console, string, error) { + return nil, "", ErrNotImplemented +} + +// checkConsole checks if the provided file is a console +func checkConsole(f File) error { + return ErrNotAConsole +} + +func newMaster(f File) (Console, error) { + return nil, ErrNotImplemented +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/console_unix.go new/vendor/github.com/containerd/console/console_unix.go --- old/vendor/github.com/containerd/console/console_unix.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/console_unix.go 2025-06-09 23:57:08.000000000 +0200 @@ -1,4 +1,5 @@ -// +build darwin freebsd linux netbsd openbsd solaris +//go:build darwin || freebsd || linux || netbsd || openbsd || zos +// +build darwin freebsd linux netbsd openbsd zos /* Copyright The containerd Authors. @@ -30,6 +31,15 @@ if err != nil { return nil, "", err } + return NewPtyFromFile(f) +} + +// NewPtyFromFile creates a new pty pair, just like [NewPty] except that the +// provided [os.File] is used as the master rather than automatically creating +// a new master from /dev/ptmx. The ownership of [os.File] is passed to the +// returned [Console], so the caller must be careful to not call Close on the +// underlying file. +func NewPtyFromFile(f File) (Console, string, error) { slave, err := ptsname(f) if err != nil { return nil, "", err diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/console_windows.go new/vendor/github.com/containerd/console/console_windows.go --- old/vendor/github.com/containerd/console/console_windows.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/console_windows.go 2025-06-09 23:57:08.000000000 +0200 @@ -24,12 +24,13 @@ "golang.org/x/sys/windows" ) -var ( - vtInputSupported bool - ErrNotImplemented = errors.New("not implemented") -) +var vtInputSupported bool func (m *master) initStdios() { + // Note: We discard console mode warnings, because in/out can be redirected. + // + // TODO: Investigate opening CONOUT$/CONIN$ to handle this correctly + m.in = windows.Handle(os.Stdin.Fd()) if err := windows.GetConsoleMode(m.in, &m.inMode); err == nil { // Validate that windows.ENABLE_VIRTUAL_TERMINAL_INPUT is supported, but do not set it. @@ -39,8 +40,6 @@ // Unconditionally set the console mode back even on failure because SetConsoleMode // remembers invalid bits on input handles. windows.SetConsoleMode(m.in, m.inMode) - } else { - fmt.Printf("failed to get console mode for stdin: %v\n", err) } m.out = windows.Handle(os.Stdout.Fd()) @@ -50,8 +49,6 @@ } else { windows.SetConsoleMode(m.out, m.outMode) } - } else { - fmt.Printf("failed to get console mode for stdout: %v\n", err) } m.err = windows.Handle(os.Stderr.Fd()) @@ -61,8 +58,6 @@ } else { windows.SetConsoleMode(m.err, m.errMode) } - } else { - fmt.Printf("failed to get console mode for stderr: %v\n", err) } } @@ -94,6 +89,8 @@ } func (m *master) Reset() error { + var errs []error + for _, s := range []struct { fd windows.Handle mode uint32 @@ -103,10 +100,16 @@ {m.err, m.errMode}, } { if err := windows.SetConsoleMode(s.fd, s.mode); err != nil { - return fmt.Errorf("unable to restore console mode: %w", err) + // we can't just abort on the first error, otherwise we might leave + // the console in an unexpected state. + errs = append(errs, fmt.Errorf("unable to restore console mode: %w", err)) } } + if len(errs) > 0 { + return errs[0] + } + return nil } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/console_zos.go new/vendor/github.com/containerd/console/console_zos.go --- old/vendor/github.com/containerd/console/console_zos.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/console_zos.go 1970-01-01 01:00:00.000000000 +0100 @@ -1,163 +0,0 @@ -// +build zos - -/* - Copyright The containerd 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 console - -import ( - "fmt" - "os" - - "golang.org/x/sys/unix" -) - -// NewPty creates a new pty pair -// The master is returned as the first console and a string -// with the path to the pty slave is returned as the second -func NewPty() (Console, string, error) { - var f File - var err error - var slave string - for i := 0;; i++ { - ptyp := fmt.Sprintf("/dev/ptyp%04d", i) - f, err = os.OpenFile(ptyp, os.O_RDWR, 0600) - if err == nil { - slave = fmt.Sprintf("/dev/ttyp%04d", i) - break - } - if os.IsNotExist(err) { - return nil, "", err - } - // else probably Resource Busy - } - m, err := newMaster(f) - if err != nil { - return nil, "", err - } - return m, slave, nil -} - -type master struct { - f File - original *unix.Termios -} - -func (m *master) Read(b []byte) (int, error) { - return m.f.Read(b) -} - -func (m *master) Write(b []byte) (int, error) { - return m.f.Write(b) -} - -func (m *master) Close() error { - return m.f.Close() -} - -func (m *master) Resize(ws WinSize) error { - return tcswinsz(m.f.Fd(), ws) -} - -func (m *master) ResizeFrom(c Console) error { - ws, err := c.Size() - if err != nil { - return err - } - return m.Resize(ws) -} - -func (m *master) Reset() error { - if m.original == nil { - return nil - } - return tcset(m.f.Fd(), m.original) -} - -func (m *master) getCurrent() (unix.Termios, error) { - var termios unix.Termios - if err := tcget(m.f.Fd(), &termios); err != nil { - return unix.Termios{}, err - } - return termios, nil -} - -func (m *master) SetRaw() error { - rawState, err := m.getCurrent() - if err != nil { - return err - } - rawState = cfmakeraw(rawState) - rawState.Oflag = rawState.Oflag | unix.OPOST - return tcset(m.f.Fd(), &rawState) -} - -func (m *master) DisableEcho() error { - rawState, err := m.getCurrent() - if err != nil { - return err - } - rawState.Lflag = rawState.Lflag &^ unix.ECHO - return tcset(m.f.Fd(), &rawState) -} - -func (m *master) Size() (WinSize, error) { - return tcgwinsz(m.f.Fd()) -} - -func (m *master) Fd() uintptr { - return m.f.Fd() -} - -func (m *master) Name() string { - return m.f.Name() -} - -// checkConsole checks if the provided file is a console -func checkConsole(f File) error { - var termios unix.Termios - if tcget(f.Fd(), &termios) != nil { - return ErrNotAConsole - } - return nil -} - -func newMaster(f File) (Console, error) { - m := &master{ - f: f, - } - t, err := m.getCurrent() - if err != nil { - return nil, err - } - m.original = &t - return m, nil -} - -// ClearONLCR sets the necessary tty_ioctl(4)s to ensure that a pty pair -// created by us acts normally. In particular, a not-very-well-known default of -// Linux unix98 ptys is that they have +onlcr by default. While this isn't a -// problem for terminal emulators, because we relay data from the terminal we -// also relay that funky line discipline. -func ClearONLCR(fd uintptr) error { - return setONLCR(fd, false) -} - -// SetONLCR sets the necessary tty_ioctl(4)s to ensure that a pty pair -// created by us acts as intended for a terminal emulator. -func SetONLCR(fd uintptr) error { - return setONLCR(fd, true) -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/pty_freebsd_cgo.go new/vendor/github.com/containerd/console/pty_freebsd_cgo.go --- old/vendor/github.com/containerd/console/pty_freebsd_cgo.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/pty_freebsd_cgo.go 2025-06-09 23:57:08.000000000 +0200 @@ -1,3 +1,4 @@ +//go:build freebsd && cgo // +build freebsd,cgo /* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/pty_freebsd_nocgo.go new/vendor/github.com/containerd/console/pty_freebsd_nocgo.go --- old/vendor/github.com/containerd/console/pty_freebsd_nocgo.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/pty_freebsd_nocgo.go 2025-06-09 23:57:08.000000000 +0200 @@ -1,3 +1,4 @@ +//go:build freebsd && !cgo // +build freebsd,!cgo /* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/pty_unix.go new/vendor/github.com/containerd/console/pty_unix.go --- old/vendor/github.com/containerd/console/pty_unix.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/pty_unix.go 2025-06-09 23:57:08.000000000 +0200 @@ -1,4 +1,5 @@ -// +build darwin linux netbsd openbsd solaris +//go:build darwin || linux || netbsd || openbsd +// +build darwin linux netbsd openbsd /* Copyright The containerd Authors. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/pty_zos.go new/vendor/github.com/containerd/console/pty_zos.go --- old/vendor/github.com/containerd/console/pty_zos.go 1970-01-01 01:00:00.000000000 +0100 +++ new/vendor/github.com/containerd/console/pty_zos.go 2025-06-09 23:57:08.000000000 +0200 @@ -0,0 +1,43 @@ +//go:build zos +// +build zos + +/* + Copyright The containerd 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 console + +import ( + "fmt" + "os" +) + +// openpt allocates a new pseudo-terminal by opening the first available /dev/ptypXX device +func openpt() (*os.File, error) { + var f *os.File + var err error + for i := 0; ; i++ { + ptyp := fmt.Sprintf("/dev/ptyp%04d", i) + f, err = os.OpenFile(ptyp, os.O_RDWR, 0600) + if err == nil { + break + } + if os.IsNotExist(err) { + return nil, err + } + // else probably Resource Busy + } + return f, nil +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/tc_darwin.go new/vendor/github.com/containerd/console/tc_darwin.go --- old/vendor/github.com/containerd/console/tc_darwin.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/tc_darwin.go 2025-06-09 23:57:08.000000000 +0200 @@ -18,7 +18,6 @@ import ( "fmt" - "os" "golang.org/x/sys/unix" ) @@ -30,12 +29,12 @@ // unlockpt unlocks the slave pseudoterminal device corresponding to the master pseudoterminal referred to by f. // unlockpt should be called before opening the slave side of a pty. -func unlockpt(f *os.File) error { +func unlockpt(f File) error { return unix.IoctlSetPointerInt(int(f.Fd()), unix.TIOCPTYUNLK, 0) } // ptsname retrieves the name of the first available pts for the given master. -func ptsname(f *os.File) (string, error) { +func ptsname(f File) (string, error) { n, err := unix.IoctlGetInt(int(f.Fd()), unix.TIOCPTYGNAME) if err != nil { return "", err diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/tc_freebsd_cgo.go new/vendor/github.com/containerd/console/tc_freebsd_cgo.go --- old/vendor/github.com/containerd/console/tc_freebsd_cgo.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/tc_freebsd_cgo.go 2025-06-09 23:57:08.000000000 +0200 @@ -1,3 +1,4 @@ +//go:build freebsd && cgo // +build freebsd,cgo /* @@ -20,7 +21,6 @@ import ( "fmt" - "os" "golang.org/x/sys/unix" ) @@ -38,7 +38,7 @@ // unlockpt unlocks the slave pseudoterminal device corresponding to the master pseudoterminal referred to by f. // unlockpt should be called before opening the slave side of a pty. -func unlockpt(f *os.File) error { +func unlockpt(f File) error { fd := C.int(f.Fd()) if _, err := C.unlockpt(fd); err != nil { C.close(fd) @@ -48,7 +48,7 @@ } // ptsname retrieves the name of the first available pts for the given master. -func ptsname(f *os.File) (string, error) { +func ptsname(f File) (string, error) { n, err := unix.IoctlGetInt(int(f.Fd()), unix.TIOCGPTN) if err != nil { return "", err diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/tc_freebsd_nocgo.go new/vendor/github.com/containerd/console/tc_freebsd_nocgo.go --- old/vendor/github.com/containerd/console/tc_freebsd_nocgo.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/tc_freebsd_nocgo.go 2025-06-09 23:57:08.000000000 +0200 @@ -1,3 +1,4 @@ +//go:build freebsd && !cgo // +build freebsd,!cgo /* @@ -20,7 +21,6 @@ import ( "fmt" - "os" "golang.org/x/sys/unix" ) @@ -41,12 +41,12 @@ // unlockpt unlocks the slave pseudoterminal device corresponding to the master pseudoterminal referred to by f. // unlockpt should be called before opening the slave side of a pty. -func unlockpt(f *os.File) error { +func unlockpt(f File) error { panic("unlockpt() support requires cgo.") } // ptsname retrieves the name of the first available pts for the given master. -func ptsname(f *os.File) (string, error) { +func ptsname(f File) (string, error) { n, err := unix.IoctlGetInt(int(f.Fd()), unix.TIOCGPTN) if err != nil { return "", err diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/tc_linux.go new/vendor/github.com/containerd/console/tc_linux.go --- old/vendor/github.com/containerd/console/tc_linux.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/tc_linux.go 2025-06-09 23:57:08.000000000 +0200 @@ -18,7 +18,6 @@ import ( "fmt" - "os" "unsafe" "golang.org/x/sys/unix" @@ -31,7 +30,7 @@ // unlockpt unlocks the slave pseudoterminal device corresponding to the master pseudoterminal referred to by f. // unlockpt should be called before opening the slave side of a pty. -func unlockpt(f *os.File) error { +func unlockpt(f File) error { var u int32 // XXX do not use unix.IoctlSetPointerInt here, see commit dbd69c59b81. if _, _, err := unix.Syscall(unix.SYS_IOCTL, f.Fd(), unix.TIOCSPTLCK, uintptr(unsafe.Pointer(&u))); err != 0 { @@ -41,7 +40,7 @@ } // ptsname retrieves the name of the first available pts for the given master. -func ptsname(f *os.File) (string, error) { +func ptsname(f File) (string, error) { var u uint32 // XXX do not use unix.IoctlGetInt here, see commit dbd69c59b81. if _, _, err := unix.Syscall(unix.SYS_IOCTL, f.Fd(), unix.TIOCGPTN, uintptr(unsafe.Pointer(&u))); err != 0 { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/tc_netbsd.go new/vendor/github.com/containerd/console/tc_netbsd.go --- old/vendor/github.com/containerd/console/tc_netbsd.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/tc_netbsd.go 2025-06-09 23:57:08.000000000 +0200 @@ -18,7 +18,6 @@ import ( "bytes" - "os" "golang.org/x/sys/unix" ) @@ -31,12 +30,12 @@ // unlockpt unlocks the slave pseudoterminal device corresponding to the master pseudoterminal referred to by f. // unlockpt should be called before opening the slave side of a pty. // This does not exist on NetBSD, it does not allocate controlling terminals on open -func unlockpt(f *os.File) error { +func unlockpt(f File) error { return nil } // ptsname retrieves the name of the first available pts for the given master. -func ptsname(f *os.File) (string, error) { +func ptsname(f File) (string, error) { ptm, err := unix.IoctlGetPtmget(int(f.Fd()), unix.TIOCPTSNAME) if err != nil { return "", err diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/tc_openbsd_cgo.go new/vendor/github.com/containerd/console/tc_openbsd_cgo.go --- old/vendor/github.com/containerd/console/tc_openbsd_cgo.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/tc_openbsd_cgo.go 2025-06-09 23:57:08.000000000 +0200 @@ -1,3 +1,4 @@ +//go:build openbsd && cgo // +build openbsd,cgo /* @@ -19,8 +20,6 @@ package console import ( - "os" - "golang.org/x/sys/unix" ) @@ -33,7 +32,7 @@ ) // ptsname retrieves the name of the first available pts for the given master. -func ptsname(f *os.File) (string, error) { +func ptsname(f File) (string, error) { ptspath, err := C.ptsname(C.int(f.Fd())) if err != nil { return "", err @@ -43,7 +42,7 @@ // unlockpt unlocks the slave pseudoterminal device corresponding to the master pseudoterminal referred to by f. // unlockpt should be called before opening the slave side of a pty. -func unlockpt(f *os.File) error { +func unlockpt(f File) error { if _, err := C.grantpt(C.int(f.Fd())); err != nil { return err } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/tc_openbsd_nocgo.go new/vendor/github.com/containerd/console/tc_openbsd_nocgo.go --- old/vendor/github.com/containerd/console/tc_openbsd_nocgo.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/tc_openbsd_nocgo.go 2025-06-09 23:57:08.000000000 +0200 @@ -1,3 +1,4 @@ +//go:build openbsd && !cgo // +build openbsd,!cgo /* @@ -28,8 +29,6 @@ package console import ( - "os" - "golang.org/x/sys/unix" ) @@ -38,10 +37,10 @@ cmdTcSet = unix.TIOCSETA ) -func ptsname(f *os.File) (string, error) { +func ptsname(f File) (string, error) { panic("ptsname() support requires cgo.") } -func unlockpt(f *os.File) error { +func unlockpt(f File) error { panic("unlockpt() support requires cgo.") } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/tc_solaris_cgo.go new/vendor/github.com/containerd/console/tc_solaris_cgo.go --- old/vendor/github.com/containerd/console/tc_solaris_cgo.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/tc_solaris_cgo.go 1970-01-01 01:00:00.000000000 +0100 @@ -1,51 +0,0 @@ -// +build solaris,cgo - -/* - Copyright The containerd 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 console - -import ( - "os" - - "golang.org/x/sys/unix" -) - -//#include <stdlib.h> -import "C" - -const ( - cmdTcGet = unix.TCGETS - cmdTcSet = unix.TCSETS -) - -// ptsname retrieves the name of the first available pts for the given master. -func ptsname(f *os.File) (string, error) { - ptspath, err := C.ptsname(C.int(f.Fd())) - if err != nil { - return "", err - } - return C.GoString(ptspath), nil -} - -// unlockpt unlocks the slave pseudoterminal device corresponding to the master pseudoterminal referred to by f. -// unlockpt should be called before opening the slave side of a pty. -func unlockpt(f *os.File) error { - if _, err := C.grantpt(C.int(f.Fd())); err != nil { - return err - } - return nil -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/tc_solaris_nocgo.go new/vendor/github.com/containerd/console/tc_solaris_nocgo.go --- old/vendor/github.com/containerd/console/tc_solaris_nocgo.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/tc_solaris_nocgo.go 1970-01-01 01:00:00.000000000 +0100 @@ -1,47 +0,0 @@ -// +build solaris,!cgo - -/* - Copyright The containerd 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. -*/ - -// -// Implementing the functions below requires cgo support. Non-cgo stubs -// versions are defined below to enable cross-compilation of source code -// that depends on these functions, but the resultant cross-compiled -// binaries cannot actually be used. If the stub function(s) below are -// actually invoked they will display an error message and cause the -// calling process to exit. -// - -package console - -import ( - "os" - - "golang.org/x/sys/unix" -) - -const ( - cmdTcGet = unix.TCGETS - cmdTcSet = unix.TCSETS -) - -func ptsname(f *os.File) (string, error) { - panic("ptsname() support requires cgo.") -} - -func unlockpt(f *os.File) error { - panic("unlockpt() support requires cgo.") -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/tc_unix.go new/vendor/github.com/containerd/console/tc_unix.go --- old/vendor/github.com/containerd/console/tc_unix.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/tc_unix.go 2025-06-09 23:57:08.000000000 +0200 @@ -1,4 +1,5 @@ -// +build darwin freebsd linux netbsd openbsd solaris zos +//go:build darwin || freebsd || linux || netbsd || openbsd || zos +// +build darwin freebsd linux netbsd openbsd zos /* Copyright The containerd Authors. @@ -83,7 +84,7 @@ t.Oflag &^= unix.OPOST t.Lflag &^= (unix.ECHO | unix.ECHONL | unix.ICANON | unix.ISIG | unix.IEXTEN) t.Cflag &^= (unix.CSIZE | unix.PARENB) - t.Cflag &^= unix.CS8 + t.Cflag |= unix.CS8 t.Cc[unix.VMIN] = 1 t.Cc[unix.VTIME] = 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/containerd/console/tc_zos.go new/vendor/github.com/containerd/console/tc_zos.go --- old/vendor/github.com/containerd/console/tc_zos.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/containerd/console/tc_zos.go 2025-06-09 23:57:08.000000000 +0200 @@ -17,6 +17,8 @@ package console import ( + "strings" + "golang.org/x/sys/unix" ) @@ -24,3 +26,13 @@ cmdTcGet = unix.TCGETS cmdTcSet = unix.TCSETS ) + +// unlockpt is a no-op on zos. +func unlockpt(File) error { + return nil +} + +// ptsname retrieves the name of the first available pts for the given master. +func ptsname(f File) (string, error) { + return "/dev/ttyp" + strings.TrimPrefix(f.Name(), "/dev/ptyp"), nil +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/pterm/pterm/README.md new/vendor/github.com/pterm/pterm/README.md --- old/vendor/github.com/pterm/pterm/README.md 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/pterm/pterm/README.md 2025-06-09 23:57:08.000000000 +0200 @@ -1,8 +1,11 @@ +<!-- GitAds-Verify: O8664I3XY9IA9QKAP4I9UHV4ZKFKZCT3 --> <!--suppress HtmlDeprecatedAttribute --> <h1 align="center">💻 PTerm | Pretty Terminal Printer</h1> <p align="center">A modern Go framework to make beautiful CLIs</p> + + <p align="center"> <a href="https://github.com/pterm/pterm/releases" style="text-decoration: none"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/pterm/pterm/box_printer.go new/vendor/github.com/pterm/pterm/box_printer.go --- old/vendor/github.com/pterm/pterm/box_printer.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/pterm/pterm/box_printer.go 2025-06-09 23:57:08.000000000 +0200 @@ -195,6 +195,16 @@ return &p } +// WithVerticalPadding returns a new box with a specific TopPadding and BottomPadding. +func (p BoxPrinter) WithVerticalPadding(padding int) *BoxPrinter { + if padding < 0 { + padding = 0 + } + p.TopPadding = padding + p.BottomPadding = padding + return &p +} + // WithRightPadding returns a new box with a specific RightPadding. func (p BoxPrinter) WithRightPadding(padding int) *BoxPrinter { if padding < 0 { @@ -213,6 +223,28 @@ return &p } +// WithHorizontalPadding returns a new box with a specific LeftPadding and RightPadding. +func (p BoxPrinter) WithHorizontalPadding(padding int) *BoxPrinter { + if padding < 0 { + padding = 0 + } + p.LeftPadding = padding + p.RightPadding = padding + return &p +} + +// WithPadding returns a new box with a specific padding on all directions. +func (p BoxPrinter) WithPadding(padding int) *BoxPrinter { + if padding < 0 { + padding = 0 + } + p.TopPadding = padding + p.BottomPadding = padding + p.LeftPadding = padding + p.RightPadding = padding + return &p +} + // WithWriter sets the custom Writer. func (p BoxPrinter) WithWriter(writer io.Writer) *BoxPrinter { p.Writer = writer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/pterm/pterm/interactive_multiselect_printer.go new/vendor/github.com/pterm/pterm/interactive_multiselect_printer.go --- old/vendor/github.com/pterm/pterm/interactive_multiselect_printer.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/pterm/pterm/interactive_multiselect_printer.go 2025-06-09 23:57:08.000000000 +0200 @@ -33,17 +33,18 @@ // InteractiveMultiselectPrinter is a printer for interactive multiselect menus. type InteractiveMultiselectPrinter struct { - DefaultText string - TextStyle *Style - Options []string - OptionStyle *Style - DefaultOptions []string - MaxHeight int - Selector string - SelectorStyle *Style - Filter bool - Checkmark *Checkmark - OnInterruptFunc func() + DefaultText string + TextStyle *Style + Options []string + OptionStyle *Style + DefaultOptions []string + MaxHeight int + Selector string + SelectorStyle *Style + Filter bool + Checkmark *Checkmark + OnInterruptFunc func() + ShowSelectedOptions bool selectedOption int selectedOptions []int @@ -111,12 +112,18 @@ return &p } -// OnInterrupt sets the function to execute on exit of the input reader +// WithOnInterruptFunc sets the function to execute on exit of the input reader func (p InteractiveMultiselectPrinter) WithOnInterruptFunc(exitFunc func()) *InteractiveMultiselectPrinter { p.OnInterruptFunc = exitFunc return &p } +// WithShowSelectedOptions shows the selected options at the bottom if the menu +func (p InteractiveMultiselectPrinter) WithShowSelectedOptions(b ...bool) *InteractiveMultiselectPrinter { + p.ShowSelectedOptions = internal.WithBoolean(b) + return &p +} + // Show shows the interactive multiselect menu and returns the selected entry. func (p *InteractiveMultiselectPrinter) Show(text ...string) ([]string, error) { // should be the first defer statement to make sure it is executed last @@ -380,9 +387,19 @@ help := fmt.Sprintf("%s: %s | %s: %s | left: %s | right: %s", p.KeySelect, Bold.Sprint("select"), p.KeyConfirm, Bold.Sprint("confirm"), Bold.Sprint("none"), Bold.Sprint("all")) if p.Filter { - help += fmt.Sprintf("| type to %s", Bold.Sprint("filter")) + help += fmt.Sprintf(" | type to %s", Bold.Sprint("filter")) + } + content.WriteString(ThemeDefault.SecondaryStyle.Sprintfln(help)) + + // Optionally, add selected options to the menu + if p.ShowSelectedOptions && len(p.selectedOptions) > 0 { + selected := make([]string, len(p.selectedOptions)) + for i, optIdx := range p.selectedOptions { + selected[i] = p.Options[optIdx] + } + + content.WriteString(ThemeDefault.SecondaryStyle.Sprint("Selected: ") + Green(strings.Join(selected, Gray(", "))) + "\n") } - content.WriteString(ThemeDefault.SecondaryStyle.Sprintfln("%s", help)) return content.String() } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/pterm/pterm/logger.go new/vendor/github.com/pterm/pterm/logger.go --- old/vendor/github.com/pterm/pterm/logger.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/pterm/pterm/logger.go 2025-06-09 23:57:08.000000000 +0200 @@ -3,6 +3,7 @@ import ( "encoding/json" "io" + "log/slog" "os" "path/filepath" "runtime" @@ -394,7 +395,11 @@ m := make(map[string]any) for _, arg := range args { - m[arg.Key] = arg.Value + v := arg.Value + if sv, ok := arg.Value.(slog.Value); ok { + v = sv.Any() + } + m[arg.Key] = v } return m diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/pterm/pterm/multi_live_printer.go new/vendor/github.com/pterm/pterm/multi_live_printer.go --- old/vendor/github.com/pterm/pterm/multi_live_printer.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/pterm/pterm/multi_live_printer.go 2025-06-09 23:57:08.000000000 +0200 @@ -1,12 +1,13 @@ package pterm import ( - "atomicgo.dev/schedule" "bytes" "io" "os" "strings" "time" + + "atomicgo.dev/schedule" ) var DefaultMultiPrinter = MultiPrinter{ @@ -59,18 +60,20 @@ s = strings.Trim(s, "\n") parts := strings.Split(s, "\r") // only get the last override - s = parts[len(parts)-1] - // check if s is empty, if so get one part before, repeat until not empty - for s == "" { + // check if the last part is empty, if so remove it, repeat until not + // empty. If there is no part left, don't do anything + for len(parts) > 0 && parts[len(parts)-1] == "" { parts = parts[:len(parts)-1] - s = parts[len(parts)-1] } - s = strings.Trim(s, "\n\r") - buffer.WriteString(s) - buffer.WriteString("\n") + if len(parts) > 0 { + s = strings.Trim(parts[len(parts)-1], "\n\r") + buffer.WriteString(s) + buffer.WriteString("\n") + } } + return buffer.String() } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/pterm/pterm/print.go new/vendor/github.com/pterm/pterm/print.go --- old/vendor/github.com/pterm/pterm/print.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/pterm/pterm/print.go 2025-06-09 23:57:08.000000000 +0200 @@ -120,6 +120,7 @@ for _, spinner := range activeSpinnerPrinters { if spinner.IsActive && (spinner.Writer == writer || spinner.Writer == os.Stderr) { ret += sClearLine() + ret += Sprinto(a...) printed = true } @@ -162,6 +163,11 @@ return } + if RawOutput { + Sprint(a...) + return + } + color.Print("\r" + Sprint(a...)) } @@ -170,6 +176,7 @@ if !Output { return } + if w != nil { color.Fprint(w, "\r", Sprint(a...)) } else { @@ -183,9 +190,17 @@ } func fClearLine(writer io.Writer) { + if RawOutput || writer == nil || !Output { + return + } + Fprinto(writer, strings.Repeat(" ", GetTerminalWidth())) } func sClearLine() string { + if RawOutput || !Output { + return "" + } + return Sprinto(strings.Repeat(" ", GetTerminalWidth())) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/pterm/pterm/spinner_printer.go new/vendor/github.com/pterm/pterm/spinner_printer.go --- old/vendor/github.com/pterm/pterm/spinner_printer.go 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/github.com/pterm/pterm/spinner_printer.go 2025-06-09 23:57:08.000000000 +0200 @@ -138,7 +138,7 @@ func (s *SpinnerPrinter) UpdateText(text string) { s.Text = text if !RawOutput { - Fprinto(s.Writer, s.Style.Sprint(s.currentSequence)+" "+s.MessageStyle.Sprint(s.Text)) + Fprinto(s.Writer, "\033[K"+s.Style.Sprint(s.currentSequence)+" "+s.MessageStyle.Sprint(s.Text)) } else { Fprintln(s.Writer, s.Text) } @@ -154,9 +154,7 @@ s.Text = Sprint(text...) } - if RawOutput { - Fprintln(s.Writer, s.Text) - } + Fprintln(s.Writer, s.Text) go func() { for s.IsActive { @@ -185,7 +183,7 @@ // Stop terminates the SpinnerPrinter immediately. // The SpinnerPrinter will not resolve into anything. func (s *SpinnerPrinter) Stop() error { - if !s.IsActive { + if !s.IsActive || RawOutput { return nil } s.IsActive = false @@ -226,7 +224,9 @@ if len(message) == 0 { message = []any{s.Text} } + fClearLine(s.Writer) + Fprinto(s.Writer, s.InfoPrinter.Sprint(message...)) _ = s.Stop() } @@ -241,7 +241,9 @@ if len(message) == 0 { message = []any{s.Text} } + fClearLine(s.Writer) + Fprinto(s.Writer, s.SuccessPrinter.Sprint(message...)) _ = s.Stop() } @@ -256,7 +258,9 @@ if len(message) == 0 { message = []any{s.Text} } + fClearLine(s.Writer) + Fprinto(s.Writer, s.FailPrinter.Sprint(message...)) _ = s.Stop() } @@ -271,7 +275,9 @@ if len(message) == 0 { message = []any{s.Text} } + fClearLine(s.Writer) + Fprinto(s.Writer, s.WarningPrinter.Sprint(message...)) _ = s.Stop() } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/modules.txt new/vendor/modules.txt --- old/vendor/modules.txt 2025-05-19 16:52:09.000000000 +0200 +++ new/vendor/modules.txt 2025-06-09 23:57:08.000000000 +0200 @@ -9,7 +9,7 @@ # atomicgo.dev/schedule v0.1.0 ## explicit; go 1.18 atomicgo.dev/schedule -# github.com/containerd/console v1.0.3 +# github.com/containerd/console v1.0.5 ## explicit; go 1.13 github.com/containerd/console # github.com/go-ini/ini v1.67.0 @@ -30,8 +30,8 @@ # github.com/mattn/go-runewidth v0.0.16 ## explicit; go 1.9 github.com/mattn/go-runewidth -# github.com/pterm/pterm v0.12.80 -## explicit; go 1.21 +# github.com/pterm/pterm v0.12.81 +## explicit; go 1.23.0 github.com/pterm/pterm github.com/pterm/pterm/internal # github.com/rivo/uniseg v0.4.7 @@ -42,7 +42,7 @@ # github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e ## explicit; go 1.19 github.com/xo/terminfo -# golang.org/x/net v0.40.0 +# golang.org/x/net v0.41.0 ## explicit; go 1.23.0 golang.org/x/net/websocket # golang.org/x/sys v0.33.0 @@ -53,7 +53,7 @@ # golang.org/x/term v0.32.0 ## explicit; go 1.23.0 golang.org/x/term -# golang.org/x/text v0.25.0 +# golang.org/x/text v0.26.0 ## explicit; go 1.23.0 golang.org/x/text/cases golang.org/x/text/internal