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

Reply via email to