Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package buildpacks-cli for openSUSE:Factory checked in at 2025-03-24 13:29:18 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/buildpacks-cli (Old) and /work/SRC/openSUSE:Factory/.buildpacks-cli.new.2696 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "buildpacks-cli" Mon Mar 24 13:29:18 2025 rev:8 rq:1255129 version:0.37.0 Changes: -------- --- /work/SRC/openSUSE:Factory/buildpacks-cli/buildpacks-cli.changes 2025-01-18 13:23:10.130028271 +0100 +++ /work/SRC/openSUSE:Factory/.buildpacks-cli.new.2696/buildpacks-cli.changes 2025-03-24 13:29:21.668579982 +0100 @@ -1,0 +2,36 @@ +Fri Mar 21 21:03:07 UTC 2025 - opensuse_buildserv...@ojkastl.de + +- Update to version 0.37.0: + * build(deps): bump golang.org/x/net from 0.35.0 to 0.36.0 + * build(deps): bump the go-dependencies group across 1 directory + with 4 updates + * doc: adjusting documentation to include extension + * fix: using the KindBuildpack and KindExtension variable instead + of hardcoded values + * Use unix build constraint + * build(deps): bump github.com/spf13/cobra in the go-dependencies + group + * Remove obsolete // +build lines + * build(deps): bump the go-dependencies group across 1 directory + with 10 updates + * remove unnecessary variable in unit test + * remove unnecessary version assignment in unit test + * remove negation that was causing tests to fail + * fix unit test + * add version check + * move version check to `before` block + * fix acceptance tests + * pick up where pglushko left off + * build(deps): bump buildpacks/github-actions from 5.8.5 to 5.8.8 + * running go mod tidy + * fix:linting and typos + * fix: intentation + * feat: Adding targets and path flags when packaging an extension + * feat: adding targets on the extension descriptor + * feat: Adding functionality on CopyConfigFiles function to copy + an extension .toml file + * fix: typo on targets description + * build(deps): bump the go-dependencies group across 1 directory + with 4 updates + +------------------------------------------------------------------- Old: ---- buildpacks-cli-0.36.4.obscpio New: ---- buildpacks-cli-0.37.0.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ buildpacks-cli.spec ++++++ --- /var/tmp/diff_new_pack.OCSphj/_old 2025-03-24 13:29:22.512615415 +0100 +++ /var/tmp/diff_new_pack.OCSphj/_new 2025-03-24 13:29:22.512615415 +0100 @@ -19,7 +19,7 @@ %define executable_name pack Name: buildpacks-cli -Version: 0.36.4 +Version: 0.37.0 Release: 0 Summary: CLI for building apps using Cloud Native Buildpacks License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.OCSphj/_old 2025-03-24 13:29:22.576618101 +0100 +++ /var/tmp/diff_new_pack.OCSphj/_new 2025-03-24 13:29:22.584618438 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/buildpacks/pack</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v0.36.4</param> + <param name="revision">v0.37.0</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.OCSphj/_old 2025-03-24 13:29:22.616619781 +0100 +++ /var/tmp/diff_new_pack.OCSphj/_new 2025-03-24 13:29:22.620619949 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/buildpacks/pack</param> - <param name="changesrevision">c7f5b1cc88cae6599463a98dcd9fd35c0ca5d67c</param></service></servicedata> + <param name="changesrevision">bf1bd85682ed57e6015cc5faeb9e97a1aa7139fe</param></service></servicedata> (No newline at EOF) ++++++ buildpacks-cli-0.36.4.obscpio -> buildpacks-cli-0.37.0.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/.github/workflows/delivery-docker.yml new/buildpacks-cli-0.37.0/.github/workflows/delivery-docker.yml --- old/buildpacks-cli-0.36.4/.github/workflows/delivery-docker.yml 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/.github/workflows/delivery-docker.yml 2025-03-14 12:58:18.000000000 +0100 @@ -61,7 +61,7 @@ password: ${{ secrets.DOCKER_PASSWORD }} - uses: docker/setup-qemu-action@v3 - uses: docker/setup-buildx-action@v3 - - uses: buildpacks/github-actions/setup-tools@v5.8.5 + - uses: buildpacks/github-actions/setup-tools@v5.8.8 - name: Buildx Build/Publish run: | docker buildx build . \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/acceptance_test.go new/buildpacks-cli-0.37.0/acceptance/acceptance_test.go --- old/buildpacks-cli-0.36.4/acceptance/acceptance_test.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/acceptance_test.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package acceptance @@ -2185,20 +2184,45 @@ imageManager.CleanupImages(runImageName) }) - it("fails with a message", func() { - output, err := pack.Run( - "build", repoName, - "-p", filepath.Join("testdata", "mock_app"), - "--run-image", runImageName, - ) - assert.NotNil(err) + when("should validate stack", func() { + it.Before(func() { + h.SkipIf(t, pack.SupportsFeature(invoke.StackWarning), "stack is validated in prior versions") + }) + it("fails with a message", func() { - assertOutput := assertions.NewOutputAssertionManager(t, output) - assertOutput.ReportsRunImageStackNotMatchingBuilder( - "other.stack.id", - "pack.test.stack", - ) + output, err := pack.Run( + "build", repoName, + "-p", filepath.Join("testdata", "mock_app"), + "--run-image", runImageName, + ) + assert.NotNil(err) + + assertOutput := assertions.NewOutputAssertionManager(t, output) + assertOutput.ReportsRunImageStackNotMatchingBuilder( + "other.stack.id", + "pack.test.stack", + ) + }) }) + + when("should not validate stack", func() { + it.Before(func() { + h.SkipIf(t, !pack.SupportsFeature(invoke.StackWarning), "stack is no longer validated") + }) + it("succeeds with a warning", func() { + + output, err := pack.Run( + "build", repoName, + "-p", filepath.Join("testdata", "mock_app"), + "--run-image", runImageName, + ) + assert.Nil(err) + + assertOutput := assertions.NewOutputAssertionManager(t, output) + assertOutput.ReportsDeprecatedUseOfStack() + }) + }) + }) }) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/assertions/image.go new/buildpacks-cli-0.37.0/acceptance/assertions/image.go --- old/buildpacks-cli-0.36.4/acceptance/assertions/image.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/assertions/image.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package assertions diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/assertions/lifecycle_output.go new/buildpacks-cli-0.37.0/acceptance/assertions/lifecycle_output.go --- old/buildpacks-cli-0.36.4/acceptance/assertions/lifecycle_output.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/assertions/lifecycle_output.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package assertions diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/assertions/output.go new/buildpacks-cli-0.37.0/acceptance/assertions/output.go --- old/buildpacks-cli-0.36.4/acceptance/assertions/output.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/assertions/output.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package assertions @@ -118,6 +117,12 @@ ) } +func (o OutputAssertionManager) ReportsDeprecatedUseOfStack() { + o.testObject.Helper() + + o.assert.Contains(o.output, "Warning: deprecated usage of stack") +} + func (o OutputAssertionManager) WithoutColors() { o.testObject.Helper() o.testObject.Log("has no color") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/assertions/test_buildpack_output.go new/buildpacks-cli-0.37.0/acceptance/assertions/test_buildpack_output.go --- old/buildpacks-cli-0.36.4/acceptance/assertions/test_buildpack_output.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/assertions/test_buildpack_output.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package assertions diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/buildpacks/archive_buildpack.go new/buildpacks-cli-0.37.0/acceptance/buildpacks/archive_buildpack.go --- old/buildpacks-cli-0.36.4/acceptance/buildpacks/archive_buildpack.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/buildpacks/archive_buildpack.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package buildpacks diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/buildpacks/folder_buildpack.go new/buildpacks-cli-0.37.0/acceptance/buildpacks/folder_buildpack.go --- old/buildpacks-cli-0.36.4/acceptance/buildpacks/folder_buildpack.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/buildpacks/folder_buildpack.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package buildpacks diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/buildpacks/manager.go new/buildpacks-cli-0.37.0/acceptance/buildpacks/manager.go --- old/buildpacks-cli-0.36.4/acceptance/buildpacks/manager.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/buildpacks/manager.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package buildpacks diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/buildpacks/package_file_buildpack.go new/buildpacks-cli-0.37.0/acceptance/buildpacks/package_file_buildpack.go --- old/buildpacks-cli-0.36.4/acceptance/buildpacks/package_file_buildpack.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/buildpacks/package_file_buildpack.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package buildpacks diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/buildpacks/package_image_buildpack.go new/buildpacks-cli-0.37.0/acceptance/buildpacks/package_image_buildpack.go --- old/buildpacks-cli-0.36.4/acceptance/buildpacks/package_image_buildpack.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/buildpacks/package_image_buildpack.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package buildpacks diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/config/asset_manager.go new/buildpacks-cli-0.37.0/acceptance/config/asset_manager.go --- old/buildpacks-cli-0.36.4/acceptance/config/asset_manager.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/config/asset_manager.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package config diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/config/github_asset_fetcher.go new/buildpacks-cli-0.37.0/acceptance/config/github_asset_fetcher.go --- old/buildpacks-cli-0.36.4/acceptance/config/github_asset_fetcher.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/config/github_asset_fetcher.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package config diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/config/input_configuration_manager.go new/buildpacks-cli-0.37.0/acceptance/config/input_configuration_manager.go --- old/buildpacks-cli-0.36.4/acceptance/config/input_configuration_manager.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/config/input_configuration_manager.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package config diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/config/lifecycle_asset.go new/buildpacks-cli-0.37.0/acceptance/config/lifecycle_asset.go --- old/buildpacks-cli-0.36.4/acceptance/config/lifecycle_asset.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/config/lifecycle_asset.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package config diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/config/pack_assets.go new/buildpacks-cli-0.37.0/acceptance/config/pack_assets.go --- old/buildpacks-cli-0.36.4/acceptance/config/pack_assets.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/config/pack_assets.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package config diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/config/run_combination.go new/buildpacks-cli-0.37.0/acceptance/config/run_combination.go --- old/buildpacks-cli-0.36.4/acceptance/config/run_combination.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/config/run_combination.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package config diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/invoke/pack.go new/buildpacks-cli-0.37.0/acceptance/invoke/pack.go --- old/buildpacks-cli-0.36.4/acceptance/invoke/pack.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/invoke/pack.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package invoke @@ -241,6 +240,7 @@ ManifestCommands PlatformOption MultiPlatformBuildersAndBuildPackages + StackWarning ) var featureTests = map[Feature]func(i *PackInvoker) bool{ @@ -286,6 +286,9 @@ MultiPlatformBuildersAndBuildPackages: func(i *PackInvoker) bool { return i.atLeast("v0.34.0") }, + StackWarning: func(i *PackInvoker) bool { + return i.atLeast("v0.37.0") + }, } func (i *PackInvoker) SupportsFeature(f Feature) bool { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/invoke/pack_fixtures.go new/buildpacks-cli-0.37.0/acceptance/invoke/pack_fixtures.go --- old/buildpacks-cli-0.36.4/acceptance/invoke/pack_fixtures.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/invoke/pack_fixtures.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package invoke diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/managers/image_manager.go new/buildpacks-cli-0.37.0/acceptance/managers/image_manager.go --- old/buildpacks-cli-0.36.4/acceptance/managers/image_manager.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/managers/image_manager.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package managers diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/os/variables.go new/buildpacks-cli-0.37.0/acceptance/os/variables.go --- old/buildpacks-cli-0.36.4/acceptance/os/variables.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/os/variables.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance && !windows -// +build acceptance,!windows package os diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/os/variables_darwin.go new/buildpacks-cli-0.37.0/acceptance/os/variables_darwin.go --- old/buildpacks-cli-0.36.4/acceptance/os/variables_darwin.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/os/variables_darwin.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance && darwin && amd64 -// +build acceptance,darwin,amd64 package os diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/os/variables_darwin_arm64.go new/buildpacks-cli-0.37.0/acceptance/os/variables_darwin_arm64.go --- old/buildpacks-cli-0.36.4/acceptance/os/variables_darwin_arm64.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/os/variables_darwin_arm64.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance && darwin && arm64 -// +build acceptance,darwin,arm64 package os diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/os/variables_linux.go new/buildpacks-cli-0.37.0/acceptance/os/variables_linux.go --- old/buildpacks-cli-0.36.4/acceptance/os/variables_linux.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/os/variables_linux.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance && linux -// +build acceptance,linux package os diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/os/variables_windows.go new/buildpacks-cli-0.37.0/acceptance/os/variables_windows.go --- old/buildpacks-cli-0.36.4/acceptance/os/variables_windows.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/os/variables_windows.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance && windows -// +build acceptance,windows package os diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/acceptance/suite_manager.go new/buildpacks-cli-0.37.0/acceptance/suite_manager.go --- old/buildpacks-cli-0.36.4/acceptance/suite_manager.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/acceptance/suite_manager.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build acceptance -// +build acceptance package acceptance diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/benchmarks/build_test.go new/buildpacks-cli-0.37.0/benchmarks/build_test.go --- old/buildpacks-cli-0.36.4/benchmarks/build_test.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/benchmarks/build_test.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build benchmarks -// +build benchmarks package benchmarks diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/go.mod new/buildpacks-cli-0.37.0/go.mod --- old/buildpacks-cli-0.36.4/go.mod 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/go.mod 2025-03-14 12:58:18.000000000 +0100 @@ -8,15 +8,15 @@ github.com/apex/log v1.9.0 github.com/buildpacks/imgutil v0.0.0-20240605145725-186f89b2d168 github.com/buildpacks/lifecycle v0.20.4 - github.com/docker/cli v27.4.1+incompatible - github.com/docker/docker v27.4.1+incompatible + github.com/docker/cli v27.5.1+incompatible + github.com/docker/docker v27.5.1+incompatible github.com/docker/go-connections v0.5.0 github.com/dustin/go-humanize v1.0.1 - github.com/gdamore/tcell/v2 v2.8.0 - github.com/go-git/go-git/v5 v5.13.1 + github.com/gdamore/tcell/v2 v2.8.1 + github.com/go-git/go-git/v5 v5.14.0 github.com/golang/mock v1.6.0 - github.com/google/go-cmp v0.6.0 - github.com/google/go-containerregistry v0.20.2 + github.com/google/go-cmp v0.7.0 + github.com/google/go-containerregistry v0.20.3 github.com/google/go-github/v30 v30.1.0 github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 github.com/heroku/color v0.0.6 @@ -29,14 +29,14 @@ github.com/rivo/tview v0.0.0-20220307222120-9994674d60a8 github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 github.com/sclevine/spec v1.4.0 - github.com/spf13/cobra v1.8.1 - golang.org/x/crypto v0.32.0 - golang.org/x/mod v0.22.0 - golang.org/x/oauth2 v0.25.0 - golang.org/x/sync v0.10.0 - golang.org/x/sys v0.29.0 - golang.org/x/term v0.28.0 - golang.org/x/text v0.21.0 + github.com/spf13/cobra v1.9.1 + golang.org/x/crypto v0.35.0 + golang.org/x/mod v0.23.0 + golang.org/x/oauth2 v0.27.0 + golang.org/x/sync v0.11.0 + golang.org/x/sys v0.30.0 + golang.org/x/term v0.29.0 + golang.org/x/text v0.22.0 gopkg.in/yaml.v3 v3.0.1 ) @@ -52,7 +52,7 @@ github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect github.com/Azure/go-autorest/logger v0.2.1 // indirect github.com/Azure/go-autorest/tracing v0.6.0 // indirect - github.com/ProtonMail/go-crypto v1.1.3 // indirect + github.com/ProtonMail/go-crypto v1.1.5 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/aws/aws-sdk-go-v2 v1.30.1 // indirect github.com/aws/aws-sdk-go-v2/config v1.27.24 // indirect @@ -73,28 +73,28 @@ github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589 // indirect - github.com/cloudflare/circl v1.3.7 // indirect + github.com/cloudflare/circl v1.6.0 // indirect github.com/containerd/log v0.1.0 // indirect - github.com/containerd/stargz-snapshotter/estargz v0.15.1 // indirect + github.com/containerd/stargz-snapshotter/estargz v0.16.3 // indirect github.com/containerd/typeurl/v2 v2.1.1 // indirect - github.com/cyphar/filepath-securejoin v0.3.6 // indirect + github.com/cyphar/filepath-securejoin v0.4.1 // indirect github.com/dimchansky/utfbom v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/distribution v2.8.3+incompatible // indirect - github.com/docker/docker-credential-helpers v0.8.1 // indirect + github.com/docker/docker-credential-helpers v0.8.2 // indirect github.com/docker/go-metrics v0.0.1 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/gdamore/encoding v1.0.1 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect - github.com/go-git/go-billy/v5 v5.6.1 // indirect + github.com/go-git/go-billy/v5 v5.6.2 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-viper/mapstructure/v2 v2.2.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v4 v4.5.1 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/google/uuid v1.6.0 // indirect @@ -103,7 +103,7 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect - github.com/klauspost/compress v1.17.4 // indirect + github.com/klauspost/compress v1.17.11 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -118,7 +118,7 @@ github.com/moby/term v0.5.0 // indirect github.com/morikuni/aec v1.0.0 // indirect github.com/opencontainers/selinux v1.11.0 // indirect - github.com/pjbgf/sha1cd v0.3.0 // indirect + github.com/pjbgf/sha1cd v0.3.2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.5.0 // indirect github.com/prometheus/common v0.48.0 // indirect @@ -126,23 +126,26 @@ github.com/rivo/uniseg v0.4.3 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/skeema/knownhosts v1.3.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/vbatts/tar-split v0.11.5 // indirect + github.com/skeema/knownhosts v1.3.1 // indirect + github.com/spf13/pflag v1.0.6 // indirect + github.com/vbatts/tar-split v0.11.6 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.50.0 // indirect - go.opentelemetry.io/otel v1.25.0 // indirect - go.opentelemetry.io/otel/metric v1.25.0 // indirect - go.opentelemetry.io/otel/trace v1.25.0 // indirect - golang.org/x/net v0.33.0 // indirect - google.golang.org/protobuf v1.36.1 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect + go.opentelemetry.io/otel v1.33.0 // indirect + go.opentelemetry.io/otel/metric v1.33.0 // indirect + go.opentelemetry.io/otel/trace v1.33.0 // indirect + golang.org/x/net v0.36.0 // indirect + google.golang.org/protobuf v1.36.3 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) replace github.com/BurntSushi/toml => github.com/BurntSushi/toml v1.3.2 -go 1.23 +go 1.23.0 + +toolchain go1.23.3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/go.sum new/buildpacks-cli-0.37.0/go.sum --- old/buildpacks-cli-0.36.4/go.sum 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/go.sum 2025-03-14 12:58:18.000000000 +0100 @@ -38,8 +38,8 @@ github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk= -github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= +github.com/ProtonMail/go-crypto v1.1.5 h1:eoAQfK2dwL+tFSFpr7TbOaPNUbPiJj4fLYwwGE1FQO4= +github.com/ProtonMail/go-crypto v1.1.5/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -101,19 +101,19 @@ github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589 h1:krfRl01rzPzxSxyLyrChD+U+MzsBXbm0OwYYB67uF+4= github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589/go.mod h1:OuDyvmLnMCwa2ep4Jkm6nyA0ocJuZlGyk2gGseVzERM= -github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= -github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= +github.com/cloudflare/circl v1.6.0 h1:cr5JKic4HI+LkINy2lg3W2jF8sHCVTBncJr5gIIq7qk= +github.com/cloudflare/circl v1.6.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= -github.com/containerd/stargz-snapshotter/estargz v0.15.1 h1:eXJjw9RbkLFgioVaTG+G/ZW/0kEe2oEKCdS/ZxIyoCU= -github.com/containerd/stargz-snapshotter/estargz v0.15.1/go.mod h1:gr2RNwukQ/S9Nv33Lt6UC7xEx58C+LHRdoqbEKjz1Kk= +github.com/containerd/stargz-snapshotter/estargz v0.16.3 h1:7evrXtoh1mSbGj/pfRccTampEyKpjpOnS3CyiV1Ebr8= +github.com/containerd/stargz-snapshotter/estargz v0.16.3/go.mod h1:uyr4BfYfOj3G9WBVE8cOlQmXAbPN9VEQpBBeJIuOipU= github.com/containerd/typeurl/v2 v2.1.1 h1:3Q4Pt7i8nYwy2KmQWIw2+1hTvwTE/6w9FqcttATPO/4= github.com/containerd/typeurl/v2 v2.1.1/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= -github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM= -github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= +github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= +github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= 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= @@ -121,14 +121,14 @@ github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/cli v27.4.1+incompatible h1:VzPiUlRJ/xh+otB75gva3r05isHMo5wXDfPRi5/b4hI= -github.com/docker/cli v27.4.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v27.5.1+incompatible h1:JB9cieUT9YNiMITtIsguaN55PLOHhBSz3LKVc6cqWaY= +github.com/docker/cli v27.5.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v27.4.1+incompatible h1:ZJvcY7gfwHn1JF48PfbyXg7Jyt9ZCWDW+GGXOIxEwp4= -github.com/docker/docker v27.4.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.8.1 h1:j/eKUktUltBtMzKqmfLB0PAgqYyMHOp5vfsD1807oKo= -github.com/docker/docker-credential-helpers v0.8.1/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= +github.com/docker/docker v27.5.1+incompatible h1:4PYU5dnBYqRQi0294d1FBECqT9ECWeQAIfE8q4YnPY8= +github.com/docker/docker v27.5.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= +github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= @@ -139,8 +139,8 @@ github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/elazarl/goproxy v1.2.3 h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ= -github.com/elazarl/goproxy v1.2.3/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= +github.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o= +github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -151,18 +151,18 @@ github.com/gdamore/encoding v1.0.1 h1:YzKZckdBL6jVt2Gc+5p82qhrGiqMdG/eNs6Wy0u3Uhw= github.com/gdamore/encoding v1.0.1/go.mod h1:0Z0cMFinngz9kS1QfMjCP8TY7em3bZYeeklsSDPivEo= github.com/gdamore/tcell/v2 v2.4.1-0.20210905002822-f057f0a857a1/go.mod h1:Az6Jt+M5idSED2YPGtwnfJV0kXohgdCBPmHGSYc1r04= -github.com/gdamore/tcell/v2 v2.8.0 h1:IDclow1j6kKpU/gOhjmc+7Pj5Dxnukb74pfKN4Cxrfg= -github.com/gdamore/tcell/v2 v2.8.0/go.mod h1:bj8ori1BG3OYMjmb3IklZVWfZUJ1UBQt9JXrOCOhGWw= +github.com/gdamore/tcell/v2 v2.8.1 h1:KPNxyqclpWpWQlPLx6Xui1pMk8S+7+R37h3g07997NU= +github.com/gdamore/tcell/v2 v2.8.1/go.mod h1:bj8ori1BG3OYMjmb3IklZVWfZUJ1UBQt9JXrOCOhGWw= github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.6.1 h1:u+dcrgaguSSkbjzHwelEjc0Yj300NUevrrPphk/SoRA= -github.com/go-git/go-billy/v5 v5.6.1/go.mod h1:0AsLr1z2+Uksi4NlElmMblP5rPcDZNRCD8ujZCRR2BE= +github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UNbRM= +github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.13.1 h1:DAQ9APonnlvSWpvolXWIuV6Q6zXy2wHbN4cVlNR5Q+M= -github.com/go-git/go-git/v5 v5.13.1/go.mod h1:qryJB4cSBoq3FRoBRf5A77joojuBcmPJ0qu3XXXVixc= +github.com/go-git/go-git/v5 v5.14.0 h1:/MD3lCrGjCen5WfEAzKg00MJJffKhC8gzS80ycmCi60= +github.com/go-git/go-git/v5 v5.14.0/go.mod h1:Z5Xhoia5PcWA3NF8vRLURn9E5FRhSl7dGj9ItW3Wk5k= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= @@ -184,8 +184,8 @@ github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo= github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -195,10 +195,11 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-containerregistry v0.20.2 h1:B1wPJ1SN/S7pB+ZAimcciVD+r+yV/l/DSArMxlbwseo= -github.com/google/go-containerregistry v0.20.2/go.mod h1:z38EKdKh4h7IP2gSfUUqEvalZBqs6AoLeWfUy34nQC8= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/go-containerregistry v0.20.3 h1:oNx7IdTI936V8CQRveCjaxOiegWwvM7kqkbXTpyiovI= +github.com/google/go-containerregistry v0.20.3/go.mod h1:w00pIgBRDVUDFM6bq+Qx8lwNWK+cxgCuX1vd3PIBDNI= github.com/google/go-github/v30 v30.1.0 h1:VLDx+UolQICEOKu2m4uAoMti1SxuEBAl7RSEG16L+Oo= github.com/google/go-github/v30 v30.1.0/go.mod h1:n8jBpHl45a/rlBUtRJMOG4GhNADUQFEufcolZ95JfU8= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= @@ -238,8 +239,8 @@ github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.4 h1:Ej5ixsIri7BrIjBkRZLTo6ghwrEtHFk7ijlczPW4fZ4= -github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -306,8 +307,8 @@ github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= -github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= +github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4= +github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -338,8 +339,8 @@ github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw= github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs= @@ -352,15 +353,15 @@ github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY= -github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M= +github.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8= +github.com/skeema/knownhosts v1.3.1/go.mod h1:r7KTdC8l4uxWRyK2TpQZ/1o5HaSzh06ePQNxPwTcfiY= github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/gunit v1.0.0/go.mod h1:qwPWnhz6pn0NnRBP++URONOVyNkPyr4SauJk4cUOwJs= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -382,8 +383,8 @@ github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0= github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod h1:/yhzCV0xPfx6jb1bBgRFjl5lytqVqZXEaeqWP8lTEao= github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4= -github.com/vbatts/tar-split v0.11.5 h1:3bHCTIheBm1qFTcgh9oPu+nNBtX+XJIupG/vacinCts= -github.com/vbatts/tar-split v0.11.5/go.mod h1:yZbwRsSeGjusneWgA781EKej9HF8vme8okylkAeNKLk= +github.com/vbatts/tar-split v0.11.6 h1:4SjTW5+PU11n6fZenf2IPoV8/tz3AaYHMWjf23envGs= +github.com/vbatts/tar-split v0.11.6/go.mod h1:dqKNtesIOr2j2Qv3W/cHjnvk9I8+G7oAkFDFN6TCBEI= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= @@ -396,20 +397,22 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.50.0 h1:cEPbyTSEHlQR89XVlyo78gqluF8Y3oMeBkXGWzQsfXY= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.50.0/go.mod h1:DKdbWcT4GH1D0Y3Sqt/PFXt2naRKDWtU+eE6oLdFNA8= -go.opentelemetry.io/otel v1.25.0 h1:gldB5FfhRl7OJQbUHt/8s0a7cE8fbsPAtdpRaApKy4k= -go.opentelemetry.io/otel v1.25.0/go.mod h1:Wa2ds5NOXEMkCmUou1WA7ZBfLTHWIsp034OVD7AO+Vg= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q= +go.opentelemetry.io/otel v1.33.0 h1:/FerN9bax5LoK51X/sI0SVYrjSE0/yUL7DpxW4K3FWw= +go.opentelemetry.io/otel v1.33.0/go.mod h1:SUUkR6csvUQl+yjReHu5uM3EtVV7MBm5FHKRlNx4I8I= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.25.0 h1:Mbi5PKN7u322woPa85d7ebZ+SOvEoPvoiBu+ryHWgfA= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.25.0/go.mod h1:e7ciERRhZaOZXVjx5MiL8TK5+Xv7G5Gv5PA2ZDEJdL8= -go.opentelemetry.io/otel/metric v1.25.0 h1:LUKbS7ArpFL/I2jJHdJcqMGxkRdxpPHE0VU/D4NuEwA= -go.opentelemetry.io/otel/metric v1.25.0/go.mod h1:rkDLUSd2lC5lq2dFNrX9LGAbINP5B7WBkC78RXCpH5s= -go.opentelemetry.io/otel/sdk v1.25.0 h1:PDryEJPC8YJZQSyLY5eqLeafHtG+X7FWnf3aXMtxbqo= -go.opentelemetry.io/otel/sdk v1.25.0/go.mod h1:oFgzCM2zdsxKzz6zwpTZYLLQsFwc+K0daArPdIhuxkw= -go.opentelemetry.io/otel/trace v1.25.0 h1:tqukZGLwQYRIFtSQM2u2+yfMVTgGVeqRLPUYx1Dq6RM= -go.opentelemetry.io/otel/trace v1.25.0/go.mod h1:hCCs70XM/ljO+BeQkyFnbK28SBIJ/Emuha+ccrCRT7I= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 h1:wpMfgF8E1rkrT1Z6meFh1NDtownE9Ii3n3X2GJYjsaU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0/go.mod h1:wAy0T/dUbs468uOlkT31xjvqQgEVXv58BRFWEgn5v/0= +go.opentelemetry.io/otel/metric v1.33.0 h1:r+JOocAyeRVXD8lZpjdQjzMadVZp2M4WmQ+5WtEnklQ= +go.opentelemetry.io/otel/metric v1.33.0/go.mod h1:L9+Fyctbp6HFTddIxClbQkjtubW6O9QS3Ann/M82u6M= +go.opentelemetry.io/otel/sdk v1.33.0 h1:iax7M131HuAm9QkZotNHEfstof92xM+N8sr3uHXc2IM= +go.opentelemetry.io/otel/sdk v1.33.0/go.mod h1:A1Q5oi7/9XaMlIWzPSxLRWOI8nG3FnzHJNbiENQuihM= +go.opentelemetry.io/otel/trace v1.33.0 h1:cCJuF7LRjUFso9LPnEAHJDB2pqzp+hbO8eu1qqW2d/s= +go.opentelemetry.io/otel/trace v1.33.0/go.mod h1:uIcdVUZMpTAmz0tI1z04GoVSezK37CbGV4fr1f2nBck= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -425,8 +428,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= +golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -435,8 +438,8 @@ golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= -golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= +golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -454,11 +457,11 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= +golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70= -golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M= +golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -471,8 +474,9 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -501,8 +505,9 @@ golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -513,8 +518,9 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= +golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= +golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -525,8 +531,9 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -538,8 +545,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8= -golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw= +golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= +golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -554,8 +561,8 @@ google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= -google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.3 h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU= +google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/internal/commands/buildpack_package.go new/buildpacks-cli-0.37.0/internal/commands/buildpack_package.go --- old/buildpacks-cli-0.36.4/internal/commands/buildpack_package.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/internal/commands/buildpack_package.go 2025-03-14 12:58:18.000000000 +0100 @@ -118,13 +118,13 @@ if len(multiArchCfg.Targets()) == 0 { if isCompositeBP { - logger.Infof("Pro tip: use --targets flag OR [[targets]] in package.toml to specify the desired platform (os/arch/variant); using os %s", style.Symbol(bpPackageCfg.Platform.OS)) + logger.Infof("Pro tip: use --target flag OR [[targets]] in package.toml to specify the desired platform (os/arch/variant); using os %s", style.Symbol(bpPackageCfg.Platform.OS)) } else { - logger.Infof("Pro tip: use --targets flag OR [[targets]] in buildpack.toml to specify the desired platform (os/arch/variant); using os %s", style.Symbol(bpPackageCfg.Platform.OS)) + logger.Infof("Pro tip: use --target flag OR [[targets]] in buildpack.toml to specify the desired platform (os/arch/variant); using os %s", style.Symbol(bpPackageCfg.Platform.OS)) } } else if !isCompositeBP { // FIXME: Check if we can copy the config files during layers creation. - filesToClean, err := multiArchCfg.CopyConfigFiles(bpPath) + filesToClean, err := multiArchCfg.CopyConfigFiles(bpPath, "buildpack") if err != nil { return err } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/internal/commands/extension_package.go new/buildpacks-cli-0.37.0/internal/commands/extension_package.go --- old/buildpacks-cli-0.36.4/internal/commands/extension_package.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/internal/commands/extension_package.go 2025-03-14 12:58:18.000000000 +0100 @@ -2,6 +2,7 @@ import ( "context" + "os" "path/filepath" "github.com/pkg/errors" @@ -11,6 +12,7 @@ "github.com/buildpacks/pack/internal/config" "github.com/buildpacks/pack/internal/style" "github.com/buildpacks/pack/pkg/client" + "github.com/buildpacks/pack/pkg/dist" "github.com/buildpacks/pack/pkg/image" "github.com/buildpacks/pack/pkg/logging" ) @@ -19,8 +21,10 @@ type ExtensionPackageFlags struct { PackageTomlPath string Format string + Targets []string Publish bool Policy string + Path string } // ExtensionPackager packages extensions @@ -32,9 +36,15 @@ func ExtensionPackage(logger logging.Logger, cfg config.Config, packager ExtensionPackager, packageConfigReader PackageConfigReader) *cobra.Command { var flags ExtensionPackageFlags cmd := &cobra.Command{ - Use: "package <name> --config <config-path>", - Short: "Package an extension in OCI format", - Args: cobra.MatchAll(cobra.ExactArgs(1), cobra.OnlyValidArgs), + Use: "package <name> --config <config-path>", + Short: "Package an extension in OCI format", + Args: cobra.MatchAll(cobra.ExactArgs(1), cobra.OnlyValidArgs), + Example: "pack extension package /output/file.cnb --path /extracted/from/tgz/folder --format file\npack extension package registry/image-name --path /extracted/from/tgz/folder --format image --publish", + Long: "extension package allows users to package (an) extension(s) into OCI format, which can then to be hosted in " + + "image repositories or persisted on disk as a '.cnb' file." + + "Packaged extensions can be used as inputs to `pack build` (using the `--extension` flag), " + + "and they can be included in the configs used in `pack builder create` and `pack extension package`. For more " + + "on how to package an extension, see: https://buildpacks.io/docs/buildpack-author-guide/package-a-buildpack/.", RunE: logError(logger, func(cmd *cobra.Command, args []string) error { if err := validateExtensionPackageFlags(&flags); err != nil { return err @@ -51,6 +61,13 @@ } exPackageCfg := pubbldpkg.DefaultExtensionConfig() + var exPath string + if flags.Path != "" { + if exPath, err = filepath.Abs(flags.Path); err != nil { + return errors.Wrap(err, "resolving extension path") + } + exPackageCfg.Extension.URI = exPath + } relativeBaseDir := "" if flags.PackageTomlPath != "" { exPackageCfg, err = packageConfigReader.Read(flags.PackageTomlPath) @@ -74,6 +91,28 @@ } } + targets, err := processExtensionPackageTargets(flags.Path, packageConfigReader, exPackageCfg) + if err != nil { + return err + } + + daemon := !flags.Publish && flags.Format == "" + multiArchCfg, err := processMultiArchitectureConfig(logger, flags.Targets, targets, daemon) + if err != nil { + return err + } + + if len(multiArchCfg.Targets()) == 0 { + logger.Infof("Pro tip: use --target flag OR [[targets]] in buildpack.toml to specify the desired platform (os/arch/variant); using os %s", style.Symbol(exPackageCfg.Platform.OS)) + } else { + // FIXME: Check if we can copy the config files during layers creation. + filesToClean, err := multiArchCfg.CopyConfigFiles(exPath, "extension") + if err != nil { + return err + } + defer clean(filesToClean) + } + if err := packager.PackageExtension(cmd.Context(), client.PackageBuildpackOptions{ RelativeBaseDir: relativeBaseDir, Name: name, @@ -81,6 +120,7 @@ Config: exPackageCfg, Publish: flags.Publish, PullPolicy: pullPolicy, + Targets: multiArchCfg.Targets(), }); err != nil { return err } @@ -104,6 +144,14 @@ cmd.Flags().StringVarP(&flags.Format, "format", "f", "", `Format to save package as ("image" or "file")`) cmd.Flags().BoolVar(&flags.Publish, "publish", false, `Publish the extension directly to the container registry specified in <name>, instead of the daemon (applies to "--format=image" only).`) cmd.Flags().StringVar(&flags.Policy, "pull-policy", "", "Pull policy to use. Accepted values are always, never, and if-not-present. The default is always") + cmd.Flags().StringVarP(&flags.Path, "path", "p", "", "Path to the Extension that needs to be packaged") + cmd.Flags().StringSliceVarP(&flags.Targets, "target", "t", nil, + `Target platforms to build for. +Targets should be in the format '[os][/arch][/variant]:[distroname@osversion@anotherversion];[distroname@osversion]'. +- To specify two different architectures: '--target "linux/amd64" --target "linux/arm64"' +- To specify the distribution version: '--target "linux/arm/v6:ubuntu@14.04"' +- To specify multiple distribution versions: '--target "linux/arm/v6:ubuntu@14.04" --target "linux/arm/v6:ubuntu@16.04"' + `) AddHelpFlag(cmd, "package") return cmd } @@ -114,3 +162,20 @@ } return nil } + +// processExtensionPackageTargets returns the list of targets defined on the extension.toml +func processExtensionPackageTargets(path string, packageConfigReader PackageConfigReader, bpPackageCfg pubbldpkg.Config) ([]dist.Target, error) { + var targets []dist.Target + + // Read targets from extension.toml + pathToExtensionToml := filepath.Join(path, "extension.toml") + if _, err := os.Stat(pathToExtensionToml); err == nil { + buildpackCfg, err := packageConfigReader.ReadBuildpackDescriptor(pathToExtensionToml) + if err != nil { + return nil, err + } + targets = buildpackCfg.Targets() + } + + return targets, nil +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/internal/commands/extension_package_test.go new/buildpacks-cli-0.37.0/internal/commands/extension_package_test.go --- old/buildpacks-cli-0.36.4/internal/commands/extension_package_test.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/internal/commands/extension_package_test.go 2025-03-14 12:58:18.000000000 +0100 @@ -3,6 +3,7 @@ import ( "bytes" "fmt" + "path/filepath" "testing" "github.com/heroku/color" @@ -192,6 +193,39 @@ }) }) }) + + when("a path is specified", func() { + when("no multi-platform", func() { + it("creates a default config with the appropriate path", func() { + cmd := packageExtensionCommand(withExtensionPackager(fakeExtensionPackager)) + cmd.SetArgs([]string{"some-name", "-p", ".."}) + h.AssertNil(t, cmd.Execute()) + bpPath, _ := filepath.Abs("..") + receivedOptions := fakeExtensionPackager.CreateCalledWithOptions + h.AssertEq(t, receivedOptions.Config.Extension.URI, bpPath) + }) + }) + + when("multi-platform", func() { + var targets []dist.Target + + when("single extension", func() { + it.Before(func() { + targets = []dist.Target{ + {OS: "linux", Arch: "amd64"}, + {OS: "windows", Arch: "amd64"}, + } + }) + + it("creates a multi-platform extension package", func() { + cmd := packageExtensionCommand(withExtensionPackager(fakeExtensionPackager)) + cmd.SetArgs([]string{"some-name", "-p", "some-path", "--target", "linux/amd64", "--target", "windows/amd64", "--format", "image", "--publish"}) + h.AssertNil(t, cmd.Execute()) + h.AssertEq(t, fakeExtensionPackager.CreateCalledWithOptions.Targets, targets) + }) + }) + }) + }) }) when("invalid flags", func() { @@ -249,6 +283,20 @@ h.AssertError(t, cmd.Execute(), "parsing pull policy") }) }) + + when("--target cannot be parsed", func() { + it("errors with a descriptive message", func() { + cmd := packageCommand() + cmd.SetArgs([]string{ + "some-image-name", "--config", "/path/to/some/file", + "--target", "something/wrong", "--publish", + }) + + err := cmd.Execute() + h.AssertNotNil(t, err) + h.AssertError(t, err, "unknown target: 'something/wrong'") + }) + }) }) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/internal/commands/fakes/fake_package_config_reader.go new/buildpacks-cli-0.37.0/internal/commands/fakes/fake_package_config_reader.go --- old/buildpacks-cli-0.36.4/internal/commands/fakes/fake_package_config_reader.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/internal/commands/fakes/fake_package_config_reader.go 2025-03-14 12:58:18.000000000 +0100 @@ -12,6 +12,7 @@ ReadBuildpackDescriptorCalledWithArg string ReadBuildpackDescriptorReturn dist.BuildpackDescriptor + ReadExtensionDescriptorReturn dist.ExtensionDescriptor ReadBuildpackDescriptorReturnError error } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/internal/paths/defaults_unix.go new/buildpacks-cli-0.37.0/internal/paths/defaults_unix.go --- old/buildpacks-cli-0.36.4/internal/paths/defaults_unix.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/internal/paths/defaults_unix.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ -//go:build linux || darwin -// +build linux darwin +//go:build unix package paths diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/internal/sshdialer/posix_test.go new/buildpacks-cli-0.37.0/internal/sshdialer/posix_test.go --- old/buildpacks-cli-0.36.4/internal/sshdialer/posix_test.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/internal/sshdialer/posix_test.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build !windows -// +build !windows package sshdialer_test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/internal/sshdialer/ssh_agent_unix.go new/buildpacks-cli-0.37.0/internal/sshdialer/ssh_agent_unix.go --- old/buildpacks-cli-0.36.4/internal/sshdialer/ssh_agent_unix.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/internal/sshdialer/ssh_agent_unix.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ -//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris +//go:build unix package sshdialer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/internal/sshdialer/windows_test.go new/buildpacks-cli-0.37.0/internal/sshdialer/windows_test.go --- old/buildpacks-cli-0.36.4/internal/sshdialer/windows_test.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/internal/sshdialer/windows_test.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build windows -// +build windows package sshdialer_test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/pkg/archive/archive_unix.go new/buildpacks-cli-0.37.0/pkg/archive/archive_unix.go --- old/buildpacks-cli-0.36.4/pkg/archive/archive_unix.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/pkg/archive/archive_unix.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,4 +1,4 @@ -//go:build linux || darwin +//go:build unix package archive diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/pkg/buildpack/multi_architecture_helper.go new/buildpacks-cli-0.37.0/pkg/buildpack/multi_architecture_helper.go --- old/buildpacks-cli-0.36.4/pkg/buildpack/multi_architecture_helper.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/pkg/buildpack/multi_architecture_helper.go 2025-03-14 12:58:18.000000000 +0100 @@ -36,14 +36,18 @@ return m.expectedTargets } -// CopyConfigFiles will, given a base directory (which is expected to be the root folder of a single buildpack), -// copy the buildpack.toml file from the base directory into the corresponding platform root folder for each target. -// It will return an array with all the platform root folders where the buildpack.toml file was copied. -func (m *MultiArchConfig) CopyConfigFiles(baseDir string) ([]string, error) { +// CopyConfigFiles will, given a base directory (which is expected to be the root folder of a single buildpack or an extension), +// copy the buildpack.toml or the extension.toml file from the base directory into the corresponding platform root folder for each target. +// It will return an array with all the platform root folders where the buildpack.toml or the extension.toml file was copied. +// Whether to copy the buildpack or the extension TOML file is determined by the buildpackType parameter. +func (m *MultiArchConfig) CopyConfigFiles(baseDir string, buildpackType string) ([]string, error) { var filesToClean []string + if buildpackType == "" { + buildpackType = KindBuildpack + } targets := dist.ExpandTargetsDistributions(m.Targets()...) for _, target := range targets { - path, err := CopyConfigFile(baseDir, target) + path, err := CopyConfigFile(baseDir, target, buildpackType) if err != nil { return nil, err } @@ -54,11 +58,19 @@ return filesToClean, nil } -// CopyConfigFile will copy the buildpack.toml file from the base directory into the corresponding platform folder +// CopyConfigFile will copy the buildpack.toml or the extension.toml file, based on the buildpackType parameter, +// from the base directory into the corresponding platform folder // for the specified target and desired distribution version. -func CopyConfigFile(baseDir string, target dist.Target) (string, error) { +func CopyConfigFile(baseDir string, target dist.Target, buildpackType string) (string, error) { + var path string + var err error + if ok, platformRootFolder := PlatformRootFolder(baseDir, target); ok { - path, err := copyBuildpackTOML(baseDir, platformRootFolder) + if buildpackType == KindExtension { + path, err = copyExtensionTOML(baseDir, platformRootFolder) + } else { + path, err = copyBuildpackTOML(baseDir, platformRootFolder) + } if err != nil { return "", err } @@ -120,6 +132,9 @@ return copyFile(src, dest, "buildpack.toml") } +func copyExtensionTOML(src string, dest string) (string, error) { + return copyFile(src, dest, "extension.toml") +} func copyFile(src, dest, fileName string) (string, error) { filePath := filepath.Join(dest, fileName) fileToCopy, err := os.Create(filePath) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/pkg/buildpack/multi_architecture_helper_test.go new/buildpacks-cli-0.37.0/pkg/buildpack/multi_architecture_helper_test.go --- old/buildpacks-cli-0.36.4/pkg/buildpack/multi_architecture_helper_test.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/pkg/buildpack/multi_architecture_helper_test.go 2025-03-14 12:58:18.000000000 +0100 @@ -30,6 +30,7 @@ logger *logging.LogWithWriters multiArchConfig *buildpack.MultiArchConfig targetsFromBuildpack []dist.Target + targetsFromExtension []dist.Target targetsFromFlags []dist.Target tmpDir string ) @@ -109,13 +110,38 @@ }) it("copies the buildpack.toml to each target platform folder", func() { - paths, err := multiArchConfig.CopyConfigFiles(rootFolder) + paths, err := multiArchConfig.CopyConfigFiles(rootFolder, "buildpack") h.AssertNil(t, err) h.AssertEq(t, len(paths), 2) h.AssertPathExists(t, filepath.Join(rootFolder, "linux", "amd64", "buildpack.toml")) h.AssertPathExists(t, filepath.Join(rootFolder, "linux", "arm64", "v8", "buildpack.toml")) }) }) + + when("extension root folder exists", func() { + var rootFolder string + + it.Before(func() { + rootFolder = filepath.Join(tmpDir, "some-extension") + targetsFromExtension = []dist.Target{{OS: "linux", Arch: "amd64"}, {OS: "linux", Arch: "arm64", ArchVariant: "v8"}} + multiArchConfig, err = buildpack.NewMultiArchConfig(targetsFromExtension, []dist.Target{}, logger) + h.AssertNil(t, err) + + // dummy multi-platform extension structure + os.MkdirAll(filepath.Join(rootFolder, "linux", "amd64"), 0755) + os.MkdirAll(filepath.Join(rootFolder, "linux", "arm64", "v8"), 0755) + _, err = os.Create(filepath.Join(rootFolder, "extension.toml")) + h.AssertNil(t, err) + }) + + it("copies the extension.toml to each target platform folder", func() { + paths, err := multiArchConfig.CopyConfigFiles(rootFolder, "extension") + h.AssertNil(t, err) + h.AssertEq(t, len(paths), 2) + h.AssertPathExists(t, filepath.Join(rootFolder, "linux", "amd64", "extension.toml")) + h.AssertPathExists(t, filepath.Join(rootFolder, "linux", "arm64", "v8", "extension.toml")) + }) + }) }) when("#PlatformRootFolder", func() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/pkg/client/build.go new/buildpacks-cli-0.37.0/pkg/client/build.go --- old/buildpacks-cli-0.36.4/pkg/client/build.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/pkg/client/build.go 2025-03-14 12:58:18.000000000 +0100 @@ -405,10 +405,14 @@ pathsConfig.targetRunImagePath = targetRunImagePath pathsConfig.hostRunImagePath = hostRunImagePath } - runImage, err := c.validateRunImage(ctx, runImageName, fetchOptions, bldr.StackID) + + runImage, warnings, err := c.validateRunImage(ctx, runImageName, fetchOptions, bldr.StackID) if err != nil { return errors.Wrapf(err, "invalid run-image '%s'", runImageName) } + for _, warning := range warnings { + c.logger.Warn(warning) + } var runMixins []string if _, err := dist.GetLabel(runImage, stack.MixinsLabel, &runMixins); err != nil { @@ -939,22 +943,24 @@ return bldr, nil } -func (c *Client) validateRunImage(context context.Context, name string, opts image.FetchOptions, expectedStack string) (imgutil.Image, error) { +func (c *Client) validateRunImage(context context.Context, name string, opts image.FetchOptions, expectedStack string) (runImage imgutil.Image, warnings []string, err error) { if name == "" { - return nil, errors.New("run image must be specified") + return nil, nil, errors.New("run image must be specified") } img, err := c.imageFetcher.Fetch(context, name, opts) if err != nil { - return nil, err + return nil, nil, err } stackID, err := img.Label("io.buildpacks.stack.id") if err != nil { - return nil, err + return nil, nil, err } + if stackID != expectedStack { - return nil, fmt.Errorf("run-image stack id '%s' does not match builder stack '%s'", stackID, expectedStack) + warnings = append(warnings, "deprecated usage of stack") } - return img, nil + + return img, warnings, err } func (c *Client) validateMixins(additionalBuildpacks []buildpack.BuildModule, bldr *builder.Builder, runImageName string, runMixins []string) error { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/pkg/client/build_test.go new/buildpacks-cli-0.37.0/pkg/client/build_test.go --- old/buildpacks-cli-0.36.4/pkg/client/build_test.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/pkg/client/build_test.go 2025-03-14 12:58:18.000000000 +0100 @@ -531,14 +531,14 @@ h.AssertNil(t, fakeRunImage.SetLabel("io.buildpacks.stack.id", "other.stack")) }) - it("errors", func() { - h.AssertError(t, subject.Build(context.TODO(), BuildOptions{ + it("warning", func() { + err := subject.Build(context.TODO(), BuildOptions{ Image: "some/app", Builder: defaultBuilderName, RunImage: "custom/run", - }), - "invalid run-image 'custom/run': run-image stack id 'other.stack' does not match builder stack 'some.stack.id'", - ) + }) + h.AssertNil(t, err) + h.AssertContains(t, outBuf.String(), "Warning: deprecated usage of stack") }) }) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/pkg/client/example_build_test.go new/buildpacks-cli-0.37.0/pkg/client/example_build_test.go --- old/buildpacks-cli-0.36.4/pkg/client/example_build_test.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/pkg/client/example_build_test.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build !windows && example -// +build !windows,example package client_test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/pkg/client/example_buildpack_downloader_test.go new/buildpacks-cli-0.37.0/pkg/client/example_buildpack_downloader_test.go --- old/buildpacks-cli-0.36.4/pkg/client/example_buildpack_downloader_test.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/pkg/client/example_buildpack_downloader_test.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build !windows && example -// +build !windows,example package client_test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/pkg/client/example_fetcher_test.go new/buildpacks-cli-0.37.0/pkg/client/example_fetcher_test.go --- old/buildpacks-cli-0.36.4/pkg/client/example_fetcher_test.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/pkg/client/example_fetcher_test.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build !windows && example -// +build !windows,example package client_test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/pkg/client/package_extension.go new/buildpacks-cli-0.37.0/pkg/client/package_extension.go --- old/buildpacks-cli-0.36.4/pkg/client/package_extension.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/pkg/client/package_extension.go 2025-03-14 12:58:18.000000000 +0100 @@ -2,6 +2,8 @@ import ( "context" + "fmt" + "path/filepath" "github.com/pkg/errors" @@ -17,47 +19,104 @@ opts.Format = FormatImage } - if opts.Config.Platform.OS == "windows" && !c.experimental { - return NewExperimentError("Windows extensionpackage support is currently experimental.") + targets, err := c.processPackageBuildpackTargets(ctx, opts) + if err != nil { + return err + } + multiArch := len(targets) > 1 && (opts.Publish || opts.Format == FormatFile) + + var digests []string + targets = dist.ExpandTargetsDistributions(targets...) + for _, target := range targets { + digest, err := c.packageExtensionTarget(ctx, opts, target, multiArch) + if err != nil { + return err + } + digests = append(digests, digest) + } + + if opts.Publish && len(digests) > 1 { + // Image Index must be created only when we pushed to registry + return c.CreateManifest(ctx, CreateManifestOptions{ + IndexRepoName: opts.Name, + RepoNames: digests, + Publish: true, + }) + } + + return nil +} + +func (c *Client) packageExtensionTarget(ctx context.Context, opts PackageBuildpackOptions, target dist.Target, multiArch bool) (string, error) { + var digest string + if target.OS == "windows" && !c.experimental { + return "", NewExperimentError("Windows extensionpackage support is currently experimental.") } - err := c.validateOSPlatform(ctx, opts.Config.Platform.OS, opts.Publish, opts.Format) + err := c.validateOSPlatform(ctx, target.OS, opts.Publish, opts.Format) if err != nil { - return err + return digest, err } - writerFactory, err := layer.NewWriterFactory(opts.Config.Platform.OS) + writerFactory, err := layer.NewWriterFactory(target.OS) if err != nil { - return errors.Wrap(err, "creating layer writer factory") + return digest, errors.Wrap(err, "creating layer writer factory") } packageBuilder := buildpack.NewBuilder(c.imageFactory) exURI := opts.Config.Extension.URI if exURI == "" { - return errors.New("extension URI must be provided") + return digest, errors.New("extension URI must be provided") + } + + if ok, platformRootFolder := buildpack.PlatformRootFolder(exURI, target); ok { + exURI = platformRootFolder } mainBlob, err := c.downloadBuildpackFromURI(ctx, exURI, opts.RelativeBaseDir) if err != nil { - return err + return digest, err } ex, err := buildpack.FromExtensionRootBlob(mainBlob, writerFactory, c.logger) if err != nil { - return errors.Wrapf(err, "creating extension from %s", style.Symbol(exURI)) + return digest, errors.Wrapf(err, "creating extension from %s", style.Symbol(exURI)) } packageBuilder.SetExtension(ex) - target := dist.Target{OS: opts.Config.Platform.OS} switch opts.Format { case FormatFile: - return packageBuilder.SaveAsFile(opts.Name, target, map[string]string{}) + name := opts.Name + if multiArch { + fileExtension := filepath.Ext(name) + origFileName := name[:len(name)-len(filepath.Ext(name))] + if target.Arch != "" { + name = fmt.Sprintf("%s-%s-%s%s", origFileName, target.OS, target.Arch, fileExtension) + } else { + name = fmt.Sprintf("%s-%s%s", origFileName, target.OS, fileExtension) + } + } + err = packageBuilder.SaveAsFile(name, target, opts.Labels) + if err != nil { + return digest, err + } case FormatImage: - _, err = packageBuilder.SaveAsImage(opts.Name, opts.Publish, target, map[string]string{}) - return errors.Wrapf(err, "saving image") + img, err := packageBuilder.SaveAsImage(opts.Name, opts.Publish, target, opts.Labels) + if err != nil { + return digest, errors.Wrapf(err, "saving image") + } + if multiArch { + // We need to keep the identifier to create the image index + id, err := img.Identifier() + if err != nil { + return digest, errors.Wrapf(err, "determining image manifest digest") + } + digest = id.String() + } default: - return errors.Errorf("unknown format: %s", style.Symbol(opts.Format)) + return digest, errors.Errorf("unknown format: %s", style.Symbol(opts.Format)) } + return digest, nil } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/pkg/dist/extension_descriptor.go new/buildpacks-cli-0.37.0/pkg/dist/extension_descriptor.go --- old/buildpacks-cli-0.36.4/pkg/dist/extension_descriptor.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/pkg/dist/extension_descriptor.go 2025-03-14 12:58:18.000000000 +0100 @@ -7,8 +7,9 @@ ) type ExtensionDescriptor struct { - WithAPI *api.Version `toml:"api"` - WithInfo ModuleInfo `toml:"extension"` + WithAPI *api.Version `toml:"api"` + WithInfo ModuleInfo `toml:"extension"` + WithTargets []Target `toml:"targets,omitempty"` } func (e *ExtensionDescriptor) EnsureStackSupport(_ string, _ []string, _ bool) error { @@ -44,5 +45,5 @@ } func (e *ExtensionDescriptor) Targets() []Target { - return nil + return e.WithTargets } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/pkg/dist/extension_descriptor_test.go new/buildpacks-cli-0.37.0/pkg/dist/extension_descriptor_test.go --- old/buildpacks-cli-0.36.4/pkg/dist/extension_descriptor_test.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/pkg/dist/extension_descriptor_test.go 2025-03-14 12:58:18.000000000 +0100 @@ -74,4 +74,17 @@ h.AssertEq(t, extDesc.Stacks(), empty) }) }) + + when("#Targets", func() { + it("returns the api", func() { + targets := []dist.Target{{ + OS: "fake-os", + Arch: "fake-arch", + }} + extDesc := dist.ExtensionDescriptor{ + WithTargets: targets, + } + h.AssertEq(t, extDesc.Targets(), targets) + }) + }) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildpacks-cli-0.36.4/tools/tools.go new/buildpacks-cli-0.37.0/tools/tools.go --- old/buildpacks-cli-0.36.4/tools/tools.go 2025-01-17 15:15:15.000000000 +0100 +++ new/buildpacks-cli-0.37.0/tools/tools.go 2025-03-14 12:58:18.000000000 +0100 @@ -1,5 +1,4 @@ //go:build tools -// +build tools package tools ++++++ buildpacks-cli.obsinfo ++++++ --- /var/tmp/diff_new_pack.OCSphj/_old 2025-03-24 13:29:23.240645977 +0100 +++ /var/tmp/diff_new_pack.OCSphj/_new 2025-03-24 13:29:23.244646145 +0100 @@ -1,5 +1,5 @@ name: buildpacks-cli -version: 0.36.4 -mtime: 1737123315 -commit: c7f5b1cc88cae6599463a98dcd9fd35c0ca5d67c +version: 0.37.0 +mtime: 1741953498 +commit: bf1bd85682ed57e6015cc5faeb9e97a1aa7139fe ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/buildpacks-cli/vendor.tar.gz /work/SRC/openSUSE:Factory/.buildpacks-cli.new.2696/vendor.tar.gz differ: char 5, line 1