Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package chezmoi for openSUSE:Factory checked 
in at 2026-05-13 17:20:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/chezmoi (Old)
 and      /work/SRC/openSUSE:Factory/.chezmoi.new.1966 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "chezmoi"

Wed May 13 17:20:35 2026 rev:95 rq:1352799 version:2.70.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/chezmoi/chezmoi.changes  2026-04-17 
21:05:37.405199932 +0200
+++ /work/SRC/openSUSE:Factory/.chezmoi.new.1966/chezmoi.changes        
2026-05-13 17:22:04.006080511 +0200
@@ -1,0 +2,7 @@
+Tue May 12 16:26:54 UTC 2026 - Filippo Bonazzi <[email protected]>
+
+- Update to version 2.70.3:
+  - Fixes
+    * fix: Handle single quoted strings in /etc/os-release
+
+-------------------------------------------------------------------

Old:
----
  chezmoi-2.70.2.obscpio

New:
----
  chezmoi-2.70.3.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ chezmoi.spec ++++++
--- /var/tmp/diff_new_pack.tiriVP/_old  2026-05-13 17:22:06.814196982 +0200
+++ /var/tmp/diff_new_pack.tiriVP/_new  2026-05-13 17:22:06.826197480 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           chezmoi
-Version:        2.70.2
+Version:        2.70.3
 Release:        0
 Summary:        A multi-host manager for dotfiles
 License:        MIT

++++++ _service ++++++
--- /var/tmp/diff_new_pack.tiriVP/_old  2026-05-13 17:22:07.070207601 +0200
+++ /var/tmp/diff_new_pack.tiriVP/_new  2026-05-13 17:22:07.090208430 +0200
@@ -2,7 +2,7 @@
   <service name="obs_scm" mode="manual">
     <param name="scm">git</param>
     <param name="url">https://github.com/twpayne/chezmoi.git</param>
-    <param name="revision">v2.70.2</param>
+    <param name="revision">v2.70.3</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
   </service>

++++++ chezmoi-2.70.2.obscpio -> chezmoi-2.70.3.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.70.2/.config/golangci.yml 
new/chezmoi-2.70.3/.config/golangci.yml
--- old/chezmoi-2.70.2/.config/golangci.yml     2026-04-17 01:37:15.000000000 
+0200
+++ new/chezmoi-2.70.3/.config/golangci.yml     2026-05-07 22:22:03.000000000 
+0200
@@ -7,6 +7,7 @@
   - bidichk
   - bodyclose
   - canonicalheader
+  - clickhouselint
   - containedctx
   - copyloopvar
   - decorder
@@ -28,7 +29,7 @@
   - gocritic
   - godoclint
   - godot
-  - gomodguard
+  - gomodguard_v2
   - goprintffuncname
   - gosmopolitan
   - grouper
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.70.2/.github/workflows/build-docs.yml 
new/chezmoi-2.70.3/.github/workflows/build-docs.yml
--- old/chezmoi-2.70.2/.github/workflows/build-docs.yml 2026-04-17 
01:37:15.000000000 +0200
+++ new/chezmoi-2.70.3/.github/workflows/build-docs.yml 2026-05-07 
22:22:03.000000000 +0200
@@ -13,9 +13,9 @@
   group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
   cancel-in-progress: true
 env:
-  GO_VERSION: 1.26.2 # https://go.dev/doc/devel/release
+  GO_VERSION: 1.26.3 # https://go.dev/doc/devel/release
   PYTHON_VERSION: '3.14' # https://www.python.org/downloads/
-  UV_VERSION: 0.11.7 # https://github.com/astral-sh/uv/releases
+  UV_VERSION: 0.11.11 # https://github.com/astral-sh/uv/releases
   NO_MKDOCS_2_WARNING: 1
 jobs:
   build-docs:
@@ -43,9 +43,14 @@
       env:
         CHEZMOI_GITHUB_TOKEN: ${{ secrets.CHEZMOI_GITHUB_TOKEN }}
         GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        PYTHONDONTWRITEBYTECODE: 1
+    - name: compute-docs-digest
+      run: echo "${{ hashFiles('assets/chezmoi.io/site/**') }}" > 
assets/chezmoi.io/digest.txt
     - name: upload-docs-preview
       uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a   
# v7.0.1
       with:
         name: docs-site-preview
-        path: assets/chezmoi.io/site/
+        path: |
+          assets/chezmoi.io/site/
+          assets/chezmoi.io/digest.txt
         retention-days: 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.70.2/.github/workflows/installer.yml 
new/chezmoi-2.70.3/.github/workflows/installer.yml
--- old/chezmoi-2.70.2/.github/workflows/installer.yml  2026-04-17 
01:37:15.000000000 +0200
+++ new/chezmoi-2.70.3/.github/workflows/installer.yml  2026-05-07 
22:22:03.000000000 +0200
@@ -47,6 +47,7 @@
     - uses: reviewdog/action-misspell@d6429416b12b09b4e2768307d53bef58d172e962 
  # v1.27.0
       with:
         locale: US
+        ignore: importas,Produktive
   test-install-sh:
     if: ${{ needs.changes.outputs.sh == 'true' }}
     strategy:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.70.2/.github/workflows/main.yml 
new/chezmoi-2.70.3/.github/workflows/main.yml
--- old/chezmoi-2.70.2/.github/workflows/main.yml       2026-04-17 
01:37:15.000000000 +0200
+++ new/chezmoi-2.70.3/.github/workflows/main.yml       2026-05-07 
22:22:03.000000000 +0200
@@ -16,14 +16,14 @@
 env:
   AGE_VERSION: 1.3.1 # https://github.com/FiloSottile/age/releases
   CHOCOLATEY_VERSION: 2.7.1 # https://github.com/chocolatey/choco/releases
-  COSIGN_VERSION: 2.6.2 # https://github.com/sigstore/cosign/releases FIXME 
upgrade to cosign v3
-  GO_VERSION: 1.26.2 # https://go.dev/doc/devel/release
-  GOLANGCI_LINT_VERSION: 2.11.4 # 
https://github.com/golangci/golangci-lint/releases
-  GORELEASER_VERSION: 2.15.3 # 
https://github.com/goreleaser/goreleaser/releases
+  COSIGN_VERSION: 2.6.3 # https://github.com/sigstore/cosign/releases FIXME 
upgrade to cosign v3
+  GO_VERSION: 1.26.3 # https://go.dev/doc/devel/release
+  GOLANGCI_LINT_VERSION: 2.12.2 # 
https://github.com/golangci/golangci-lint/releases
+  GORELEASER_VERSION: 2.15.4 # 
https://github.com/goreleaser/goreleaser/releases
   PYTHON_VERSION: '3.14' # https://www.python.org/downloads/
-  RAGE_VERSION: 0.11.1 # https://github.com/str4d/rage/releases
-  SYFT_VERSION: 1.42.4 # https://github.com/anchore/syft/releases
-  UV_VERSION: 0.11.7 # https://github.com/astral-sh/uv/releases
+  RAGE_VERSION: 0.11.2 # https://github.com/str4d/rage/releases
+  SYFT_VERSION: 1.44.0 # https://github.com/anchore/syft/releases
+  UV_VERSION: 0.11.11 # https://github.com/astral-sh/uv/releases
   NO_MKDOCS_2_WARNING: 1
 jobs:
   changes:
@@ -70,10 +70,10 @@
       with:
         go-version: ${{ env.GO_VERSION }}
         upload-cache: false
-    - uses: github/codeql-action/init@65216971a11ded447a6b76263d5a144519e5eee1 
  # codeql-bundle-v2.25.2
+    - uses: github/codeql-action/init@bc0b696b4103f5fe60f15749af68a046868d511a 
  # codeql-bundle-v2.25.4
       with:
         languages: go
-    - uses: 
github/codeql-action/analyze@65216971a11ded447a6b76263d5a144519e5eee1   # 
codeql-bundle-v2.25.2
+    - uses: 
github/codeql-action/analyze@bc0b696b4103f5fe60f15749af68a046868d511a   # 
codeql-bundle-v2.25.4
   misspell:
     runs-on: ubuntu-22.04
     permissions:
@@ -85,6 +85,7 @@
     - uses: reviewdog/action-misspell@d6429416b12b09b4e2768307d53bef58d172e962 
  # v1.27.0
       with:
         locale: US
+        ignore: importas,Produktive
   test-alpine:
     needs: changes
     if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
@@ -201,7 +202,7 @@
         make create-syso
     - name: build-release
       if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
-      uses: 
goreleaser/goreleaser-action@ec59f474b9834571250b370d4735c50f8e2d1e29   # v7.0.0
+      uses: 
goreleaser/goreleaser-action@1a80836c5c9d9e5755a25cb59ec6f45a3b5f41a8   # v7.2.1
       with:
         version: ${{ env.GORELEASER_VERSION }}
         args: release --skip=sign --snapshot --timeout=1h
@@ -313,6 +314,17 @@
       env:
         CHEZMOI_GITHUB_TOKEN: ${{ secrets.CHEZMOI_GITHUB_TOKEN }}
         GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        PYTHONDONTWRITEBYTECODE: 1
+    - name: compute-docs-digest
+      if: github.event_name == 'push' && github.ref == 'refs/heads/master'
+      run: echo "${{ hashFiles('assets/chezmoi.io/site/**') }}" > 
assets/chezmoi.io/digest.txt
+    - name: upload-docs-digest
+      if: github.event_name == 'push' && github.ref == 'refs/heads/master'
+      uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a   
# v7.0.1
+      with:
+        name: docs-site-digest
+        path: assets/chezmoi.io/digest.txt
+        retention-days: 90
   test-windows:
     name: test-windows
     needs: changes
@@ -386,7 +398,7 @@
       run: |
         go tool lint-commit-messages ${{ github.event.pull_request.head.sha 
}}~${{ github.event.pull_request.commits }}..${{ 
github.event.pull_request.head.sha }}
     - name: lint-markdown
-      uses: 
DavidAnson/markdownlint-cli2-action@ce4853d43830c74c1753b39f3cf40f71c2031eb9   
# v23.0.0
+      uses: 
DavidAnson/markdownlint-cli2-action@ded1f9488f68a970bc66ea5619e13e9b52e601cd   
# v23.2.0
   lint:
     name: lint-${{ matrix.runs-on }}
     strategy:
@@ -455,13 +467,13 @@
       with:
         cache-prefix: release-go
         go-version: ${{ env.GO_VERSION }}
-    - uses: sigstore/cosign-installer@cad07c2e89fa2edd6e2d7bab4c1aa38e53f76003 
  # v4.1.1
+    - uses: sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6 
  # v4.1.2
       with:
         cosign-release: v${{ env.COSIGN_VERSION }}
     - name: create-syso
       run: |
         make create-syso
-    - uses: 
goreleaser/goreleaser-action@ec59f474b9834571250b370d4735c50f8e2d1e29   # v7.0.0
+    - uses: 
goreleaser/goreleaser-action@1a80836c5c9d9e5755a25cb59ec6f45a3b5f41a8   # v7.2.1
       with:
         version: ${{ env.GORELEASER_VERSION }}
         args: release --timeout=1h
@@ -478,6 +490,8 @@
     runs-on: ubuntu-22.04
     permissions:
       contents: write
+    env:
+      PYTHONDONTWRITEBYTECODE: 1
     steps:
     - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # 
v6.0.2
       with:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.70.2/.github/workflows/preview-docs.yml 
new/chezmoi-2.70.3/.github/workflows/preview-docs.yml
--- old/chezmoi-2.70.2/.github/workflows/preview-docs.yml       2026-04-17 
01:37:15.000000000 +0200
+++ new/chezmoi-2.70.3/.github/workflows/preview-docs.yml       2026-05-07 
22:22:03.000000000 +0200
@@ -8,6 +8,11 @@
 concurrency:
   group: ${{ github.workflow }}-${{ 
github.event.workflow_run.head_repository.full_name }}-${{ 
github.event.workflow_run.head_branch }}
   cancel-in-progress: true
+env:
+  GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+  GH_REPO: ${{ github.repository }}
+  HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
+  COMMENT_MARKER: <!-- chezmoi-docs-preview -->
 jobs:
   deploy-preview:
     if: >-
@@ -25,55 +30,88 @@
         path: artifact
         run-id: ${{ github.event.workflow_run.id }}
         github-token: ${{ secrets.GITHUB_TOKEN }}
-    - name: find-pr-number
+    - name: find-pr
       id: pr
       env:
-        GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-        GH_REPO: ${{ github.repository }}
         HEAD_BRANCH: ${{ github.event.workflow_run.head_branch }}
         HEAD_REPO: ${{ github.event.workflow_run.head_repository.full_name }}
       run: |
-        PR_NUMBER=$(gh api "repos/${GH_REPO}/pulls" --paginate \
-          --jq ".[] | select(.head.ref == \"${HEAD_BRANCH}\" and 
.head.repo.full_name == \"${HEAD_REPO}\") | .number")
-        if [ -z "${PR_NUMBER}" ]; then
+        PR=$(gh api "repos/${GH_REPO}/pulls" --paginate \
+          --jq ".[] | select(.head.ref == \"${HEAD_BRANCH}\" and 
.head.repo.full_name == \"${HEAD_REPO}\") | {number, base_sha: .base.sha}")
+        if [ -z "${PR}" ]; then
           echo "error: could not find PR for ${HEAD_REPO}:${HEAD_BRANCH}"
           exit 1
         fi
-        echo "number=${PR_NUMBER}" >> "${GITHUB_OUTPUT}"
+        echo "number=$(echo "${PR}" | jq -r .number)" >> "${GITHUB_OUTPUT}"
+        echo "base_sha=$(echo "${PR}" | jq -r .base_sha)" >> "${GITHUB_OUTPUT}"
+    - name: find-digest-run
+      id: digest-run
+      env:
+        BASE_SHA: ${{ steps.pr.outputs.base_sha }}
+      run: |
+        RUN_ID=$(gh api 
"repos/${GH_REPO}/actions/workflows/main.yml/runs?branch=master&head_sha=${BASE_SHA}&status=success"
 \
+          --jq '.workflow_runs[0].id')
+        if [ -z "${RUN_ID}" ]; then
+          RUN_ID=$(gh api 
"repos/${GH_REPO}/actions/workflows/main.yml/runs?branch=master&event=push&status=success&per_page=1"
 \
+            --jq '.workflow_runs[0].id')
+        fi
+        echo "run_id=${RUN_ID}" >> "${GITHUB_OUTPUT}"
+    - name: download-base-digest
+      if: steps.digest-run.outputs.run_id != ''
+      continue-on-error: true
+      uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c 
  # v8.0.1
+      with:
+        name: docs-site-digest
+        path: base-digest
+        run-id: ${{ steps.digest-run.outputs.run_id }}
+        github-token: ${{ secrets.GITHUB_TOKEN }}
+    - name: compare-digests
+      id: compare
+      run: |
+        if diff -q artifact/digest.txt base-digest/digest.txt; then
+          echo "skip=true" >> "${GITHUB_OUTPUT}"
+        fi
     - name: deploy-to-cloudflare-pages
+      if: steps.compare.outputs.skip != 'true'
       id: deploy
       uses: 
cloudflare/wrangler-action@9acf94ace14e7dc412b076f2c5c20b8ce93c79cd   # v3.15.0
       with:
         apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
         accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
-        command: pages deploy artifact --project-name=chezmoi-preview 
--branch=pr-${{ steps.pr.outputs.number }}
+        command: pages deploy artifact/site --project-name=chezmoi-preview 
--branch=pr-${{ steps.pr.outputs.number }}
+    - name: short-sha
+      if: always()
+      id: sha
+      run: echo "short=${HEAD_SHA:0:7}" >> "${GITHUB_OUTPUT}"
     - name: comment-on-pr
+      if: steps.compare.outputs.skip != 'true'
       env:
-        GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-        GH_REPO: ${{ github.repository }}
         PR_NUMBER: ${{ steps.pr.outputs.number }}
-        PREVIEW_URL: ${{ steps.deploy.outputs.pages-deployment-alias-url }}
-        HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
-      run: |
-        MARKER="<!-- chezmoi-docs-preview -->"
-        SHORT_SHA="${HEAD_SHA:0:7}"
-        BODY=$(cat <<EOF
-        ${MARKER}
-        📖 **Docs preview is ready:** ${PREVIEW_URL}
+        BODY: |
+          ${{ env.COMMENT_MARKER }}
+          📖 **Docs preview is ready:** ${{ 
steps.deploy.outputs.pages-deployment-alias-url }}
 
-        Built from ${SHORT_SHA}
-        EOF
-        )
-        EXISTING_COMMENT_ID=$(gh api \
-          "repos/${GH_REPO}/issues/${PR_NUMBER}/comments" \
-          --paginate --jq ".[] | select(.body | startswith(\"${MARKER}\")) | 
.id" \
-          | head -1)
+          Built from ${{ steps.sha.outputs.short }}
+      run: |
+        EXISTING_COMMENT_ID=$(gh api 
"repos/${GH_REPO}/issues/${PR_NUMBER}/comments" \
+          --paginate --jq ".[] | select(.body | 
startswith(\"${COMMENT_MARKER}\")) | .id" | head -1)
+        if [ -n "${EXISTING_COMMENT_ID}" ]; then
+          gh api --method PATCH 
"repos/${GH_REPO}/issues/comments/${EXISTING_COMMENT_ID}" -f body="${BODY}"
+        else
+          gh api --method POST "repos/${GH_REPO}/issues/${PR_NUMBER}/comments" 
-f body="${BODY}"
+        fi
+    - name: comment-on-failure
+      if: failure() && steps.pr.outputs.number != ''
+      env:
+        PR_NUMBER: ${{ steps.pr.outputs.number }}
+        BODY: |
+          ${{ env.COMMENT_MARKER }}
+          ⚠️ **Docs preview failed** for ${{ steps.sha.outputs.short }}. See 
[workflow run](${{ github.server_url }}/${{ github.repository 
}}/actions/runs/${{ github.run_id }}) for details.
+      run: |
+        EXISTING_COMMENT_ID=$(gh api 
"repos/${GH_REPO}/issues/${PR_NUMBER}/comments" \
+          --paginate --jq ".[] | select(.body | 
startswith(\"${COMMENT_MARKER}\")) | .id" | head -1)
         if [ -n "${EXISTING_COMMENT_ID}" ]; then
-          gh api --method PATCH \
-            "repos/${GH_REPO}/issues/comments/${EXISTING_COMMENT_ID}" \
-            -f body="${BODY}"
+          gh api --method PATCH 
"repos/${GH_REPO}/issues/comments/${EXISTING_COMMENT_ID}" -f body="${BODY}"
         else
-          gh api --method POST \
-            "repos/${GH_REPO}/issues/${PR_NUMBER}/comments" \
-            -f body="${BODY}"
+          gh api --method POST "repos/${GH_REPO}/issues/${PR_NUMBER}/comments" 
-f body="${BODY}"
         fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.70.2/Makefile new/chezmoi-2.70.3/Makefile
--- old/chezmoi-2.70.2/Makefile 2026-04-17 01:37:15.000000000 +0200
+++ new/chezmoi-2.70.3/Makefile 2026-05-07 22:22:03.000000000 +0200
@@ -146,7 +146,7 @@
 .PHONY: ensure-golangci-lint
 ensure-golangci-lint:
        if [ ! -x bin/golangci-lint ] || ( ./bin/golangci-lint version | grep 
-Fqv "version ${GOLANGCI_LINT_VERSION}" ) ; then \
-               curl -sSfL 
https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh 
-s -- v${GOLANGCI_LINT_VERSION} ; \
+               curl -sSfL https://golangci-lint.run/install.sh | sh -s -- 
v${GOLANGCI_LINT_VERSION} ; \
        fi
 
 .PHONY: ensure-goreleaser
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.70.2/go.mod new/chezmoi-2.70.3/go.mod
--- old/chezmoi-2.70.2/go.mod   2026-04-17 01:37:15.000000000 +0200
+++ new/chezmoi-2.70.3/go.mod   2026-05-07 22:22:03.000000000 +0200
@@ -29,9 +29,9 @@
        github.com/Masterminds/sprig/v3 v3.3.0
        github.com/Shopify/ejson v1.5.4
        github.com/alecthomas/assert/v2 v2.11.0
-       github.com/aws/aws-sdk-go-v2 v1.41.5
-       github.com/aws/aws-sdk-go-v2/config v1.32.15
-       github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.41.5
+       github.com/aws/aws-sdk-go-v2 v1.41.7
+       github.com/aws/aws-sdk-go-v2/config v1.32.17
+       github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.41.7
        github.com/betterleaks/betterleaks v1.1.2
        github.com/bmatcuk/doublestar/v4 v4.10.0
        github.com/bradenhilton/mozillainstallhash v1.0.1
@@ -40,8 +40,8 @@
        github.com/charmbracelet/glamour v1.0.0
        github.com/charmbracelet/lipgloss v1.1.1-0.20250404203927-76690c660834
        github.com/coreos/go-semver v0.3.1
-       github.com/fsnotify/fsnotify v1.9.0
-       github.com/go-git/go-git/v5 v5.18.0
+       github.com/fsnotify/fsnotify v1.10.1
+       github.com/go-git/go-git/v5 v5.19.0
        github.com/go-sprout/sprout v1.0.3
        github.com/go-viper/mapstructure/v2 v2.5.0
        github.com/goccy/go-yaml v1.19.2
@@ -50,7 +50,7 @@
        github.com/gopasspw/gopass v1.16.1
        github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79
        github.com/itchyny/gojq v0.12.19
-       github.com/klauspost/compress v1.18.5
+       github.com/klauspost/compress v1.18.6
        github.com/mattn/go-runewidth v0.0.23
        github.com/mitchellh/copystructure v1.2.0
        github.com/muesli/combinator v0.3.0
@@ -75,7 +75,7 @@
        golang.org/x/sys v0.43.0
        golang.org/x/term v0.42.0
        golang.org/x/text v0.36.0
-       gopkg.in/ini.v1 v1.67.1
+       gopkg.in/ini.v1 v1.67.2
        howett.net/plist v1.0.1
        mvdan.cc/sh/v3 v3.13.1
        znkr.io/diff v1.0.1
@@ -92,32 +92,33 @@
        github.com/AzureAD/microsoft-authentication-library-for-go v1.7.1 // 
indirect
        github.com/BobuSumisu/aho-corasick v1.0.3 // indirect
        github.com/Masterminds/goutils v1.1.1 // indirect
-       github.com/Masterminds/semver/v3 v3.4.0 // indirect
+       github.com/Masterminds/semver/v3 v3.5.0 // indirect
        github.com/Microsoft/go-winio v0.6.2 // indirect
        github.com/ProtonMail/go-crypto v1.4.1 // indirect
        github.com/STARRY-S/zip v0.2.3 // indirect
        github.com/akavel/rsrc v0.10.2 // indirect
-       github.com/alecthomas/chroma/v2 v2.23.1 // indirect
+       github.com/alecthomas/chroma/v2 v2.24.1 // indirect
        github.com/alecthomas/repr v0.5.2 // indirect
        github.com/andybalholm/brotli v1.2.1 // indirect
        github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
        github.com/atotto/clipboard v0.1.4 // indirect
-       github.com/aws/aws-sdk-go-v2/credentials v1.19.14 // indirect
-       github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.21 // indirect
-       github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21 // indirect
-       github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21 // indirect
-       github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 
// indirect
-       github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21 // 
indirect
-       github.com/aws/aws-sdk-go-v2/service/signin v1.0.9 // indirect
-       github.com/aws/aws-sdk-go-v2/service/sso v1.30.15 // indirect
-       github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.19 // indirect
-       github.com/aws/aws-sdk-go-v2/service/sts v1.41.10 // indirect
-       github.com/aws/smithy-go v1.25.0 // indirect
+       github.com/aws/aws-sdk-go-v2/credentials v1.19.16 // indirect
+       github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23 // indirect
+       github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23 // indirect
+       github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23 // indirect
+       github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24 // indirect
+       github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9 
// indirect
+       github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23 // 
indirect
+       github.com/aws/aws-sdk-go-v2/service/signin v1.0.11 // indirect
+       github.com/aws/aws-sdk-go-v2/service/sso v1.30.17 // indirect
+       github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.21 // indirect
+       github.com/aws/aws-sdk-go-v2/service/sts v1.42.1 // indirect
+       github.com/aws/smithy-go v1.25.1 // indirect
        github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
        github.com/aymerick/douceur v0.2.0 // indirect
        github.com/blang/semver/v4 v4.0.0 // indirect
        github.com/bodgit/plumbing v1.3.0 // indirect
-       github.com/bodgit/sevenzip v1.6.1 // indirect
+       github.com/bodgit/sevenzip v1.6.2 // indirect
        github.com/bodgit/windows v1.0.1 // indirect
        github.com/bradenhilton/cityhash v1.0.0 // indirect
        github.com/caspr-io/yamlpath v0.0.0-20200722075116-502e8d113a9b // 
indirect
@@ -126,7 +127,7 @@
        github.com/charmbracelet/harmonica v0.2.0 // indirect
        github.com/charmbracelet/x/ansi v0.11.7 // indirect
        github.com/charmbracelet/x/cellbuf v0.0.15 // indirect
-       github.com/charmbracelet/x/exp/slice v0.0.0-20260413165052-6921c759c913 
// indirect
+       github.com/charmbracelet/x/exp/slice v0.0.0-20260503005035-c113ba3d2310 
// indirect
        github.com/charmbracelet/x/term v0.2.2 // indirect
        github.com/clipperhouse/displaywidth v0.11.0 // indirect
        github.com/clipperhouse/uax29/v2 v2.7.0 // indirect
@@ -135,7 +136,7 @@
        github.com/creack/pty/v2 v2.0.0-20231209135443-03db72c7b76c // indirect
        github.com/cyphar/filepath-securejoin v0.6.1 // indirect
        github.com/danieljoos/wincred v1.2.3 // indirect
-       github.com/dlclark/regexp2 v1.11.5 // indirect
+       github.com/dlclark/regexp2 v1.12.0 // indirect
        github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // 
indirect
        github.com/dustin/go-humanize v1.0.1 // indirect
        github.com/dustin/gojson v0.0.0-20160307161227-2e71ec9dd5ad // indirect
@@ -150,13 +151,13 @@
        github.com/gabriel-vasile/mimetype v1.4.12 // indirect
        github.com/gitleaks/go-gitdiff v0.9.1 // indirect
        github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
-       github.com/go-git/go-billy/v5 v5.8.0 // indirect
+       github.com/go-git/go-billy/v5 v5.9.0 // indirect
        github.com/gobwas/glob v0.2.3 // indirect
        github.com/godbus/dbus/v5 v5.2.2 // indirect
        github.com/golang-jwt/jwt/v5 v5.3.1 // indirect
        github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // 
indirect
        github.com/google/btree v1.1.3 // indirect
-       github.com/google/capslock v0.3.1 // indirect
+       github.com/google/capslock v0.3.2 // indirect
        github.com/google/cel-go v0.28.0 // indirect
        github.com/google/go-cmp v0.7.0 // indirect
        github.com/google/go-querystring v1.2.0 // indirect
@@ -178,27 +179,27 @@
        github.com/kylelemons/godebug v1.1.0 // indirect
        github.com/lucasb-eyer/go-colorful v1.4.0 // indirect
        github.com/mattn/go-colorable v0.1.14 // indirect
-       github.com/mattn/go-isatty v0.0.21 // indirect
+       github.com/mattn/go-isatty v0.0.22 // indirect
        github.com/mattn/go-localereader v0.0.1 // indirect
        github.com/mattn/go-shellwords v1.0.12 // indirect
        github.com/mholt/archives v0.1.5 // indirect
        github.com/microcosm-cc/bluemonday v1.0.27 // indirect
        github.com/mikelolasagasti/xz v1.0.1 // indirect
-       github.com/minio/minlz v1.1.0 // indirect
+       github.com/minio/minlz v1.1.1 // indirect
        github.com/mitchellh/reflectwalk v1.0.2 // indirect
        github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
        github.com/muesli/cancelreader v0.2.2 // indirect
        github.com/muesli/reflow v0.3.0 // indirect
-       github.com/pelletier/go-toml/v2 v2.3.0 // indirect
+       github.com/pelletier/go-toml/v2 v2.3.1 // indirect
        github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
        github.com/pierrec/lz4/v4 v4.1.26 // indirect
-       github.com/pjbgf/sha1cd v0.5.0 // indirect
+       github.com/pjbgf/sha1cd v0.6.0 // indirect
        github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
        github.com/pkoukk/tiktoken-go v0.1.8 // indirect
        github.com/rhysd/actionlint v1.7.12 // indirect
        github.com/rivo/uniseg v0.4.7 // indirect
        github.com/robfig/cron/v3 v3.0.1 // indirect
-       github.com/rs/zerolog v1.35.0 // indirect
+       github.com/rs/zerolog v1.35.1 // indirect
        github.com/russross/blackfriday/v2 v2.1.0 // indirect
        github.com/sagikazarmark/locafero v0.12.0 // indirect
        github.com/sergi/go-diff v1.4.0 // indirect
@@ -226,8 +227,8 @@
        golang.org/x/mod v0.35.0 // indirect
        golang.org/x/net v0.53.0 // indirect
        golang.org/x/tools v0.44.0 // indirect
-       google.golang.org/genproto/googleapis/api 
v0.0.0-20260414002931-afd174a4e478 // indirect
-       google.golang.org/genproto/googleapis/rpc 
v0.0.0-20260414002931-afd174a4e478 // indirect
+       google.golang.org/genproto/googleapis/api 
v0.0.0-20260504160031-60b97b32f348 // indirect
+       google.golang.org/genproto/googleapis/rpc 
v0.0.0-20260504160031-60b97b32f348 // indirect
        google.golang.org/protobuf v1.36.11 // indirect
        gopkg.in/warnings.v0 v0.1.2 // indirect
        gopkg.in/yaml.v3 v3.0.1 // indirect
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.70.2/go.sum new/chezmoi-2.70.3/go.sum
--- old/chezmoi-2.70.2/go.sum   2026-04-17 01:37:15.000000000 +0200
+++ new/chezmoi-2.70.3/go.sum   2026-05-07 22:22:03.000000000 +0200
@@ -62,8 +62,8 @@
 github.com/MakeNowJust/heredoc v1.0.0/go.mod 
h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE=
 github.com/Masterminds/goutils v1.1.1 
h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
 github.com/Masterminds/goutils v1.1.1/go.mod 
h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
-github.com/Masterminds/semver/v3 v3.4.0 
h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
-github.com/Masterminds/semver/v3 v3.4.0/go.mod 
h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
+github.com/Masterminds/semver/v3 v3.5.0 
h1:kQceYJfbupGfZOKZQg0kou0DgAKhzDg2NZPAwZ/2OOE=
+github.com/Masterminds/semver/v3 v3.5.0/go.mod 
h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
 github.com/Masterminds/sprig/v3 v3.3.0 
h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe3tPhs=
 github.com/Masterminds/sprig/v3 v3.3.0/go.mod 
h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0=
 github.com/Microsoft/go-winio v0.5.2/go.mod 
h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
@@ -79,8 +79,8 @@
 github.com/akavel/rsrc v0.10.2/go.mod 
h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c=
 github.com/alecthomas/assert/v2 v2.11.0 
h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
 github.com/alecthomas/assert/v2 v2.11.0/go.mod 
h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
-github.com/alecthomas/chroma/v2 v2.23.1 
h1:nv2AVZdTyClGbVQkIzlDm/rnhk1E9bU9nXwmZ/Vk/iY=
-github.com/alecthomas/chroma/v2 v2.23.1/go.mod 
h1:NqVhfBR0lte5Ouh3DcthuUCTUpDC9cxBOfyMbMQPs3o=
+github.com/alecthomas/chroma/v2 v2.24.1 
h1:m5ffpfZbIb++k8AqFEKy9uVgY12xIQtBsQlc6DfZJQM=
+github.com/alecthomas/chroma/v2 v2.24.1/go.mod 
h1:l+ohZ9xRXIbGe7cIW+YZgOGbvuVLjMps/FYN/CwuabI=
 github.com/alecthomas/repr v0.5.2 
h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs=
 github.com/alecthomas/repr v0.5.2/go.mod 
h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
 github.com/andybalholm/brotli v1.2.1 
h1:R+f5xP285VArJDRgowrfb9DqL18yVK0gKAW/F+eTWro=
@@ -93,34 +93,36 @@
 github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod 
h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 github.com/atotto/clipboard v0.1.4 
h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
 github.com/atotto/clipboard v0.1.4/go.mod 
h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
-github.com/aws/aws-sdk-go-v2 v1.41.5 
h1:dj5kopbwUsVUVFgO4Fi5BIT3t4WyqIDjGKCangnV/yY=
-github.com/aws/aws-sdk-go-v2 v1.41.5/go.mod 
h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o=
-github.com/aws/aws-sdk-go-v2/config v1.32.15 
h1:i7rHbaySnBXGvCkDndaBU8f3EAlRVgViwNfkwFUrXgE=
-github.com/aws/aws-sdk-go-v2/config v1.32.15/go.mod 
h1:yLJzL0IkI9+4BwjPSOueyHzppJj3t0dhK5tbmmcFk5Q=
-github.com/aws/aws-sdk-go-v2/credentials v1.19.14 
h1:n+UcGWAIZHkXzYt87uMFBv/l8THYELoX6gVcUvgl6fI=
-github.com/aws/aws-sdk-go-v2/credentials v1.19.14/go.mod 
h1:cJKuyWB59Mqi0jM3nFYQRmnHVQIcgoxjEMAbLkpr62w=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.21 
h1:NUS3K4BTDArQqNu2ih7yeDLaS3bmHD0YndtA6UP884g=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.21/go.mod 
h1:YWNWJQNjKigKY1RHVJCuupeWDrrHjRqHm0N9rdrWzYI=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21 
h1:Rgg6wvjjtX8bNHcvi9OnXWwcE0a2vGpbwmtICOsvcf4=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21/go.mod 
h1:A/kJFst/nm//cyqonihbdpQZwiUhhzpqTsdbhDdRF9c=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21 
h1:PEgGVtPoB6NTpPrBgqSE5hE/o47Ij9qk/SEZFbUOe9A=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21/go.mod 
h1:p+hz+PRAYlY3zcpJhPwXlLC4C+kqn70WIHwnzAfs6ps=
-github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 
h1:5EniKhLZe4xzL7a+fU3C2tfUN4nWIqlLesfrjkuPFTY=
-github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7/go.mod 
h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21 
h1:c31//R3xgIJMSC8S6hEVq+38DcvUlgFY0FM6mSI5oto=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21/go.mod 
h1:r6+pf23ouCB718FUxaqzZdbpYFyDtehyZcmP5KL9FkA=
-github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.41.5 
h1:z2ayoK3pOvf8ODj/vPR0FgAS5ONruBq0F94SRoW/BIU=
-github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.41.5/go.mod 
h1:mpZB5HAl4ZIISod9qCi12xZ170TbHX9CCJV5y7nb7QU=
-github.com/aws/aws-sdk-go-v2/service/signin v1.0.9 
h1:QKZH0S178gCmFEgst8hN0mCX1KxLgHBKKY/CLqwP8lg=
-github.com/aws/aws-sdk-go-v2/service/signin v1.0.9/go.mod 
h1:7yuQJoT+OoH8aqIxw9vwF+8KpvLZ8AWmvmUWHsGQZvI=
-github.com/aws/aws-sdk-go-v2/service/sso v1.30.15 
h1:lFd1+ZSEYJZYvv9d6kXzhkZu07si3f+GQ1AaYwa2LUM=
-github.com/aws/aws-sdk-go-v2/service/sso v1.30.15/go.mod 
h1:WSvS1NLr7JaPunCXqpJnWk1Bjo7IxzZXrZi1QQCkuqM=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.19 
h1:dzztQ1YmfPrxdrOiuZRMF6fuOwWlWpD2StNLTceKpys=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.19/go.mod 
h1:YO8TrYtFdl5w/4vmjL8zaBSsiNp3w0L1FfKVKenZT7w=
-github.com/aws/aws-sdk-go-v2/service/sts v1.41.10 
h1:p8ogvvLugcR/zLBXTXrTkj0RYBUdErbMnAFFp12Lm/U=
-github.com/aws/aws-sdk-go-v2/service/sts v1.41.10/go.mod 
h1:60dv0eZJfeVXfbT1tFJinbHrDfSJ2GZl4Q//OSSNAVw=
-github.com/aws/smithy-go v1.25.0 
h1:Sz/XJ64rwuiKtB6j98nDIPyYrV1nVNJ4YU74gttcl5U=
-github.com/aws/smithy-go v1.25.0/go.mod 
h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=
+github.com/aws/aws-sdk-go-v2 v1.41.7 
h1:DWpAJt66FmnnaRIOT/8ASTucrvuDPZASqhhLey6tLY8=
+github.com/aws/aws-sdk-go-v2 v1.41.7/go.mod 
h1:4LAfZOPHNVNQEckOACQx60Y8pSRjIkNZQz1w92xpMJc=
+github.com/aws/aws-sdk-go-v2/config v1.32.17 
h1:FpL4/758/diKwqbytU0prpuiu60fgXKUWCpDJtApclU=
+github.com/aws/aws-sdk-go-v2/config v1.32.17/go.mod 
h1:OXqUMzgXytfoF9JaKkhrOYsyh72t9G+MJH8mMRaexOE=
+github.com/aws/aws-sdk-go-v2/credentials v1.19.16 
h1:r3RJBuU7X9ibt8RHbMjWE6y60QbKBiII6wSrXnapxSU=
+github.com/aws/aws-sdk-go-v2/credentials v1.19.16/go.mod 
h1:6cx7zqDENJDbBIIWX6P8s0h6hqHC8Avbjh9Dseo27ug=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23 
h1:UuSfcORqNSz/ey3VPRS8TcVH2Ikf0/sC+Hdj400QI6U=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23/go.mod 
h1:+G/OSGiOFnSOkYloKj/9M35s74LgVAdJBSD5lsFfqKg=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23 
h1:GpT/TrnBYuE5gan2cZbTtvP+JlHsutdmlV2YfEyNde0=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23/go.mod 
h1:xYWD6BS9ywC5bS3sz9Xh04whO/hzK2plt2Zkyrp4JuA=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23 
h1:bpd8vxhlQi2r1hiueOw02f/duEPTMK59Q4QMAoTTtTo=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23/go.mod 
h1:15DfR2nw+CRHIk0tqNyifu3G1YdAOy68RftkhMDDwYk=
+github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24 
h1:OQqn11BtaYv1WLUowvcA30MpzIu8Ti4pcLPIIyoKZrA=
+github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24/go.mod 
h1:X5ZJyfwVrWA96GzPmUCWFQaEARPR7gCrpq2E92PJwAE=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9 
h1:FLudkZLt5ci0ozzgkVo8BJGwvqNaZbTWb3UcucAateA=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9/go.mod 
h1:w7wZ/s9qK7c8g4al+UyoF1Sp/Z45UwMGcqIzLWVQHWk=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23 
h1:pbrxO/kuIwgEsOPLkaHu0O+m4fNgLU8B3vxQ+72jTPw=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23/go.mod 
h1:/CMNUqoj46HpS3MNRDEDIwcgEnrtZlKRaHNaHxIFpNA=
+github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.41.7 
h1:JUGKqUnJHbXpS8uyuICP/zpQ+vXUIXW2zTEqjMLCqrY=
+github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.41.7/go.mod 
h1:l/cqI7ujYqBuTR6Ll13d9/gG/uUdlVzJ1UDltEEBTOo=
+github.com/aws/aws-sdk-go-v2/service/signin v1.0.11 
h1:TdJ+HdzOBhU8+iVAOGUTU63VXopcumCOF1paFulHWZc=
+github.com/aws/aws-sdk-go-v2/service/signin v1.0.11/go.mod 
h1:R82ZRExE/nheo0N+T8zHPcLRTcH8MGsnR3BiVGX0TwI=
+github.com/aws/aws-sdk-go-v2/service/sso v1.30.17 
h1:7byT8HUWrgoRp6sXjxtZwgOKfhss5fW6SkLBtqzgRoE=
+github.com/aws/aws-sdk-go-v2/service/sso v1.30.17/go.mod 
h1:xNWknVi4Ezm1vg1QsB/5EWpAJURq22uqd38U8qKvOJc=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.21 
h1:+1Kl1zx6bWi4X7cKi3VYh29h8BvsCoHQEQ6ST9X8w7w=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.21/go.mod 
h1:4vIRDq+CJB2xFAXZ+YgGUTiEft7oAQlhIs71xcSeuVg=
+github.com/aws/aws-sdk-go-v2/service/sts v1.42.1 
h1:F/M5Y9I3nwr2IEpshZgh1GeHpOItExNM9L1euNuh/fk=
+github.com/aws/aws-sdk-go-v2/service/sts v1.42.1/go.mod 
h1:mTNxImtovCOEEuD65mKW7DCsL+2gjEH+RPEAexAzAio=
+github.com/aws/smithy-go v1.25.1 
h1:J8ERsGSU7d+aCmdQur5Txg6bVoYelvQJgtZehD12GkI=
+github.com/aws/smithy-go v1.25.1/go.mod 
h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=
 github.com/aymanbagabas/go-osc52/v2 v2.0.1 
h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
 github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod 
h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
 github.com/aymanbagabas/go-udiff v0.2.0 
h1:TK0fH4MteXUDspT88n8CKzvK0X9O2xu9yQjWpi6yML8=
@@ -137,8 +139,8 @@
 github.com/bmatcuk/doublestar/v4 v4.10.0/go.mod 
h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc=
 github.com/bodgit/plumbing v1.3.0 
h1:pf9Itz1JOQgn7vEOE7v7nlEfBykYqvUYioC61TwWCFU=
 github.com/bodgit/plumbing v1.3.0/go.mod 
h1:JOTb4XiRu5xfnmdnDJo6GmSbSbtSyufrsyZFByMtKEs=
-github.com/bodgit/sevenzip v1.6.1 
h1:kikg2pUMYC9ljU7W9SaqHXhym5HyKm8/M/jd31fYan4=
-github.com/bodgit/sevenzip v1.6.1/go.mod 
h1:GVoYQbEVbOGT8n2pfqCIMRUaRjQ8F9oSqoBEqZh5fQ8=
+github.com/bodgit/sevenzip v1.6.2 
h1:6/0mwj5KaRXpuf9iSiE+VpG7VpzFJ8D60P53VjxRv34=
+github.com/bodgit/sevenzip v1.6.2/go.mod 
h1:q8DktB7GbvNn0Q6u4Iq6zULE0vo3rWtRHQg5L1XmjuU=
 github.com/bodgit/windows v1.0.1 
h1:tF7K6KOluPYygXa3Z2594zxlkbKPAOvqr97etrGNIz4=
 github.com/bodgit/windows v1.0.1/go.mod 
h1:a6JLwrB4KrTR5hBpp8FI9/9W9jJfeQ2h4XDXU74ZCdM=
 github.com/boombuler/barcode v1.1.0 
h1:ChaYjBR63fr4LFyGn8E8nt7dBSt3MiU3zMOZqFvVkHo=
@@ -173,8 +175,8 @@
 github.com/charmbracelet/x/cellbuf v0.0.15/go.mod 
h1:J1YVbR7MUuEGIFPCaaZ96KDl5NoS0DAWkskup+mOY+Q=
 github.com/charmbracelet/x/exp/golden v0.0.0-20240815200342-61de596daa2b 
h1:MnAMdlwSltxJyULnrYbkZpp4k58Co7Tah3ciKhSNo0Q=
 github.com/charmbracelet/x/exp/golden 
v0.0.0-20240815200342-61de596daa2b/go.mod 
h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
-github.com/charmbracelet/x/exp/slice v0.0.0-20260413165052-6921c759c913 
h1:RiZFY92Ug9iz1CenzxSSQla2Z3WflsR7bIuXq40JlpU=
-github.com/charmbracelet/x/exp/slice v0.0.0-20260413165052-6921c759c913/go.mod 
h1:vqEfX6xzqW1pKKZUUiFOKg0OQ7bCh54Q2vR/tserrRA=
+github.com/charmbracelet/x/exp/slice v0.0.0-20260503005035-c113ba3d2310 
h1:PMjHdSo8Vpq9psUw9BoHo9JLPMkm9Hqb+Whk64n3AQQ=
+github.com/charmbracelet/x/exp/slice v0.0.0-20260503005035-c113ba3d2310/go.mod 
h1:vqEfX6xzqW1pKKZUUiFOKg0OQ7bCh54Q2vR/tserrRA=
 github.com/charmbracelet/x/term v0.2.2 
h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSgfgZRk=
 github.com/charmbracelet/x/term v0.2.2/go.mod 
h1:kF8CY5RddLWrsgVwpw4kAa6TESp6EB5y3uxGLeCqzAI=
 github.com/clipperhouse/displaywidth v0.11.0 
h1:lBc6kY44VFw+TDx4I8opi/EtL9m20WSEFgwIwO+UVM8=
@@ -206,8 +208,8 @@
 github.com/davecgh/go-spew v1.1.1/go.mod 
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc 
h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod 
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/dlclark/regexp2 v1.11.5 
h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ=
-github.com/dlclark/regexp2 v1.11.5/go.mod 
h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
+github.com/dlclark/regexp2 v1.12.0 
h1:0j4c5qQmnC6XOWNjP3PIXURXN2gWx76rd3KvgdPkCz8=
+github.com/dlclark/regexp2 v1.12.0/go.mod 
h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
 github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 
h1:2tV76y6Q9BB+NEBasnqvs7e49aEBFI8ejC89PSnWH+4=
 github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707/go.mod 
h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s=
 github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780 
h1:tFh1tRc4CA31yP6qDcu+Trax5wW5GuMxvkIba07qVLY=
@@ -244,8 +246,8 @@
 github.com/felixge/httpsnoop v1.0.4/go.mod 
h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
 github.com/frankban/quicktest v1.14.6 
h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
 github.com/frankban/quicktest v1.14.6/go.mod 
h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
-github.com/fsnotify/fsnotify v1.9.0 
h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
-github.com/fsnotify/fsnotify v1.9.0/go.mod 
h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+github.com/fsnotify/fsnotify v1.10.1 
h1:b0/UzAf9yR5rhf3RPm9gf3ehBPpf0oZKIjtpKrx59Ho=
+github.com/fsnotify/fsnotify v1.10.1/go.mod 
h1:TLheqan6HD6GBK6PrDWyDPBaEV8LspOxvPSjC+bVfgo=
 github.com/gabriel-vasile/mimetype v1.4.12 
h1:e9hWvmLYvtp846tLHam2o++qitpguFiYCKbn0w9jyqw=
 github.com/gabriel-vasile/mimetype v1.4.12/go.mod 
h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s=
 github.com/gdamore/encoding v1.0.1 
h1:YzKZckdBL6jVt2Gc+5p82qhrGiqMdG/eNs6Wy0u3Uhw=
@@ -264,12 +266,12 @@
 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.8.0 
h1:I8hjc3LbBlXTtVuFNJuwYuMiHvQJDq1AT6u4DwDzZG0=
-github.com/go-git/go-billy/v5 v5.8.0/go.mod 
h1:RpvI/rw4Vr5QA+Z60c6d6LXH0rYJo0uD5SqfmrrheCY=
+github.com/go-git/go-billy/v5 v5.9.0 
h1:jItGXszUDRtR/AlferWPTMN4j38BQ88XnXKbilmmBPA=
+github.com/go-git/go-billy/v5 v5.9.0/go.mod 
h1:jCnQMLj9eUgGU7+ludSTYoZL/GGmii14RxKFj7ROgHw=
 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.18.0 
h1:O831KI+0PR51hM2kep6T8k+w0/LIAD490gvqMCvL5hM=
-github.com/go-git/go-git/v5 v5.18.0/go.mod 
h1:pW/VmeqkanRFqR6AljLcs7EA7FbZaN5MQqO7oZADXpo=
+github.com/go-git/go-git/v5 v5.19.0 
h1:+WkVUQZSy/F1Gb13udrMKjIM2PrzsNfDKFSfo5tkMtc=
+github.com/go-git/go-git/v5 v5.19.0/go.mod 
h1:Pb1v0c7/g8aGQJwx9Us09W85yGoyvSwuhEGMH7zjDKQ=
 github.com/go-jose/go-jose/v4 v4.1.3 
h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs=
 github.com/go-jose/go-jose/v4 v4.1.3/go.mod 
h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=
 github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
@@ -300,8 +302,8 @@
 github.com/golang/protobuf v1.5.4/go.mod 
h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg=
 github.com/google/btree v1.1.3/go.mod 
h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
-github.com/google/capslock v0.3.1 
h1:MdYuvca7uAH2iSgkDtNRm9+Qb7/4xRJgzHoL/LAOhVA=
-github.com/google/capslock v0.3.1/go.mod 
h1:7K6wQ78xV0QcIXsk0O1wSEExGgCmquxwNAleZT4GrA4=
+github.com/google/capslock v0.3.2 
h1:0ZQa9YR8s9ewFu1g5w6Rgd/lW/4dga7qJew3K6Ql7aM=
+github.com/google/capslock v0.3.2/go.mod 
h1:dDCLHjNLY0m1zzi8+sxcxpwxcVicWMB0Ez9shA2mMEc=
 github.com/google/cel-go v0.28.0 
h1:KjSWstCpz/MN5t4a8gnGJNIYUsJRpdi/r97xWDphIQc=
 github.com/google/cel-go v0.28.0/go.mod 
h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8=
 github.com/google/go-cmdtest v0.4.0 
h1:ToXh6W5spLp3npJV92tk6d5hIpUPYEzHLkD+rncbyhI=
@@ -390,8 +392,8 @@
 github.com/kjk/lzmadec v0.0.0-20210713164611-19ac3ee91a71 
h1:TYp9Fj0apeZMWentXRaFM6B0ixdFefrlgY8n8XYEz1s=
 github.com/kjk/lzmadec v0.0.0-20210713164611-19ac3ee91a71/go.mod 
h1:2zRkQCuw/eK6cqkYAeNqyBU7JKa2Gcq40BZ9GSJbmfE=
 github.com/klauspost/compress v1.4.1/go.mod 
h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
-github.com/klauspost/compress v1.18.5 
h1:/h1gH5Ce+VWNLSWqPzOVn6XBO+vJbCNGvjoaGBFW2IE=
-github.com/klauspost/compress v1.18.5/go.mod 
h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
+github.com/klauspost/compress v1.18.6 
h1:2jupLlAwFm95+YDR+NwD2MEfFO9d4z4Prjl1XXDjuao=
+github.com/klauspost/compress v1.18.6/go.mod 
h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
 github.com/klauspost/cpuid v1.2.0 
h1:NMpwD2G9JSFOE1/TJjGSo5zG7Yb2bTe7eq1jH+irmeE=
 github.com/klauspost/cpuid v1.2.0/go.mod 
h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
 github.com/klauspost/cpuid/v2 v2.3.0 
h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=
@@ -424,8 +426,8 @@
 github.com/maruel/natural v1.1.1/go.mod 
h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg=
 github.com/mattn/go-colorable v0.1.14 
h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
 github.com/mattn/go-colorable v0.1.14/go.mod 
h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
-github.com/mattn/go-isatty v0.0.21 
h1:xYae+lCNBP7QuW4PUnNG61ffM4hVIfm+zUzDuSzYLGs=
-github.com/mattn/go-isatty v0.0.21/go.mod 
h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4=
+github.com/mattn/go-isatty v0.0.22 
h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4=
+github.com/mattn/go-isatty v0.0.22/go.mod 
h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4=
 github.com/mattn/go-localereader v0.0.1 
h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4=
 github.com/mattn/go-localereader v0.0.1/go.mod 
h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=
 github.com/mattn/go-runewidth v0.0.12/go.mod 
h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
@@ -441,8 +443,8 @@
 github.com/microcosm-cc/bluemonday v1.0.27/go.mod 
h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA=
 github.com/mikelolasagasti/xz v1.0.1 
h1:Q2F2jX0RYJUG3+WsM+FJknv+6eVjsjXNDV0KJXZzkD0=
 github.com/mikelolasagasti/xz v1.0.1/go.mod 
h1:muAirjiOUxPRXwm9HdDtB3uoRPrGnL85XHtokL9Hcgc=
-github.com/minio/minlz v1.1.0 h1:rUOGu3EP4EqJC5k3qCsIwEnZiJULKqtRyDdqbhlvMmQ=
-github.com/minio/minlz v1.1.0/go.mod 
h1:qT0aEB35q79LLornSzeDH75LBf3aH1MV+jB5w9Wasec=
+github.com/minio/minlz v1.1.1 h1:OGmft1V6AnI/Wme332U6bhG54nxEan+VFgkD7lat4KM=
+github.com/minio/minlz v1.1.1/go.mod 
h1:qT0aEB35q79LLornSzeDH75LBf3aH1MV+jB5w9Wasec=
 github.com/mitchellh/copystructure v1.2.0 
h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
 github.com/mitchellh/copystructure v1.2.0/go.mod 
h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
 github.com/mitchellh/go-ps v1.0.0 
h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc=
@@ -475,14 +477,14 @@
 github.com/nwaples/rardecode/v2 v2.2.2/go.mod 
h1:7uz379lSxPe6j9nvzxUZ+n7mnJNgjsRNb6IbvGVHRmw=
 github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
 github.com/onsi/gomega v1.34.1/go.mod 
h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
-github.com/pelletier/go-toml/v2 v2.3.0 
h1:k59bC/lIZREW0/iVaQR8nDHxVq8OVlIzYCOJf421CaM=
-github.com/pelletier/go-toml/v2 v2.3.0/go.mod 
h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
+github.com/pelletier/go-toml/v2 v2.3.1 
h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc=
+github.com/pelletier/go-toml/v2 v2.3.1/go.mod 
h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
 github.com/peterbourgon/diskv v2.0.1+incompatible 
h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=
 github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod 
h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 github.com/pierrec/lz4/v4 v4.1.26 
h1:GrpZw1gZttORinvzBdXPUXATeqlJjqUG/D87TKMnhjY=
 github.com/pierrec/lz4/v4 v4.1.26/go.mod 
h1:EoQMVJgeeEOMsCqCzqFm2O0cJvljX2nGZjcRIPL34O4=
-github.com/pjbgf/sha1cd v0.5.0 h1:a+UkboSi1znleCDUNT3M5YxjOnN1fz2FhN48FlwCxs0=
-github.com/pjbgf/sha1cd v0.5.0/go.mod 
h1:lhpGlyHLpQZoxMv8HcgXvZEhcGs0PG/vsZnEJ7H0iCM=
+github.com/pjbgf/sha1cd v0.6.0 h1:3WJ8Wz8gvDz29quX1OcEmkAlUg9diU4GxJHqs0/XiwU=
+github.com/pjbgf/sha1cd v0.6.0/go.mod 
h1:lhpGlyHLpQZoxMv8HcgXvZEhcGs0PG/vsZnEJ7H0iCM=
 github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c 
h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
 github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod 
h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
 github.com/pkg/errors v0.8.1/go.mod 
h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@@ -509,8 +511,8 @@
 github.com/rogpeppe/go-internal v1.14.1/go.mod 
h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
 github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU=
 github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0=
-github.com/rs/zerolog v1.35.0 h1:VD0ykx7HMiMJytqINBsKcbLS+BJ4WYjz+05us+LRTdI=
-github.com/rs/zerolog v1.35.0/go.mod 
h1:EjML9kdfa/RMA7h/6z6pYmq1ykOuA8/mjWaEvGI+jcw=
+github.com/rs/zerolog v1.35.1 h1:m7xQeoiLIiV0BCEY4Hs+j2NG4Gp2o2KPKmhnnLiazKI=
+github.com/rs/zerolog v1.35.1/go.mod 
h1:EjML9kdfa/RMA7h/6z6pYmq1ykOuA8/mjWaEvGI+jcw=
 github.com/russross/blackfriday/v2 v2.1.0 
h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
 github.com/russross/blackfriday/v2 v2.1.0/go.mod 
h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
 github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd 
h1:CmH9+J6ZSsIjUK3dcGsnCnO41eRBOnY12zwkn5qVwgc=
@@ -743,10 +745,10 @@
 google.golang.org/api v0.259.0/go.mod 
h1:LC2ISWGWbRoyQVpxGntWwLWN/vLNxxKBK9KuJRI8Te4=
 google.golang.org/genproto v0.0.0-20251202230838-ff82c1b0f217 
h1:GvESR9BIyHUahIb0NcTum6itIWtdoglGX+rnGxm2934=
 google.golang.org/genproto v0.0.0-20251202230838-ff82c1b0f217/go.mod 
h1:yJ2HH4EHEDTd3JiLmhds6NkJ17ITVYOdV3m3VKOnws0=
-google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 
h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec=
-google.golang.org/genproto/googleapis/api 
v0.0.0-20260414002931-afd174a4e478/go.mod 
h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 
h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw=
-google.golang.org/genproto/googleapis/rpc 
v0.0.0-20260414002931-afd174a4e478/go.mod 
h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
+google.golang.org/genproto/googleapis/api v0.0.0-20260504160031-60b97b32f348 
h1:U8orV30l6KpDsi9dxU0CoJZGbjS8EEpw+6ba+XwGPQA=
+google.golang.org/genproto/googleapis/api 
v0.0.0-20260504160031-60b97b32f348/go.mod 
h1:Yzdzr5OOZFgSsEV2D/Xi9NL3bszpXFAg0hFJiRohcD8=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260504160031-60b97b32f348 
h1:pfIbyB44sWzHiCpRqIen67ZQnVXSfIxWrqUMk1qwODE=
+google.golang.org/genproto/googleapis/rpc 
v0.0.0-20260504160031-60b97b32f348/go.mod 
h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
 google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE=
 google.golang.org/grpc v1.79.3/go.mod 
h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=
 google.golang.org/protobuf v1.36.11 
h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
@@ -755,8 +757,8 @@
 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c 
h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod 
h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/ini.v1 v1.67.1 h1:tVBILHy0R6e4wkYOn3XmiITt/hEVH4TFMYvAX2Ytz6k=
-gopkg.in/ini.v1 v1.67.1/go.mod h1:x/cyOwCgZqOkJoDIJ3c1KNHMo10+nLGAhh+kn3Zizss=
+gopkg.in/ini.v1 v1.67.2 h1:JtOSMb9OuaCZKr7h5D/h6iii14sK0hLbplTc6frx4Ss=
+gopkg.in/ini.v1 v1.67.2/go.mod h1:x/cyOwCgZqOkJoDIJ3c1KNHMo10+nLGAhh+kn3Zizss=
 gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
 gopkg.in/warnings.v0 v0.1.2/go.mod 
h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
 gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0 
h1:POO/ycCATvegFmVuPpQzZFJ+pGZeX22Ufu6fibxDVjU=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.70.2/internal/chezmoi/data.go 
new/chezmoi-2.70.3/internal/chezmoi/data.go
--- old/chezmoi-2.70.2/internal/chezmoi/data.go 2026-04-17 01:37:15.000000000 
+0200
+++ new/chezmoi-2.70.3/internal/chezmoi/data.go 2026-05-07 22:22:03.000000000 
+0200
@@ -7,6 +7,7 @@
        "io/fs"
        "path/filepath"
        "strconv"
+       "strings"
 
        "github.com/twpayne/go-vfs/v5"
 )
@@ -70,11 +71,9 @@
 
 // maybeUnquote removes quotation marks around s.
 func maybeUnquote(s string) string {
-       // Try to unquote.
-       if s, err := strconv.Unquote(s); err == nil {
-               return s
+       if unquotedS, err := unquote(s); err == nil {
+               return unquotedS
        }
-       // Otherwise return s, unchanged.
        return s
 }
 
@@ -95,3 +94,45 @@
        }
        return result, nil
 }
+
+func unquote(s string) (string, error) {
+       switch {
+       case len(s) < 2:
+               fallthrough
+       case s[0] != '"' && s[0] != '\'':
+               fallthrough
+       case s[0] != s[len(s)-1]:
+               return "", strconv.ErrSyntax
+       case strings.IndexByte(s, '\\') == -1:
+               return s[1 : len(s)-1], nil
+       }
+       bs := []byte(s[1 : len(s)-1])
+       result := make([]byte, 0, len(bs))
+       for i := 0; i < len(bs); i++ {
+               if bs[i] == '\\' {
+                       i++
+                       if i == len(bs) {
+                               return "", strconv.ErrSyntax
+                       }
+                       var c byte
+                       switch bs[i] {
+                       case '\\', s[0]:
+                               c = bs[i]
+                       case 'n':
+                               c = '\n'
+                       case 'r':
+                               c = '\r'
+                       case 't':
+                               c = '\t'
+                       case 'v':
+                               c = '\v'
+                       default:
+                               return "", strconv.ErrSyntax
+                       }
+                       result = append(result, c)
+               } else {
+                       result = append(result, bs[i])
+               }
+       }
+       return string(result), nil
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.70.2/internal/chezmoi/data_test.go 
new/chezmoi-2.70.3/internal/chezmoi/data_test.go
--- old/chezmoi-2.70.2/internal/chezmoi/data_test.go    2026-04-17 
01:37:15.000000000 +0200
+++ new/chezmoi-2.70.3/internal/chezmoi/data_test.go    2026-05-07 
22:22:03.000000000 +0200
@@ -155,6 +155,17 @@
                                "UBUNTU_CODENAME":    "bionic",
                        },
                },
+               {
+                       name: "gentoo",
+                       root: map[string]any{
+                               "/etc/os-release": chezmoitest.JoinLines(
+                                       `ID='gentoo'`,
+                               ),
+                       },
+                       expected: map[string]any{
+                               "ID": "gentoo",
+                       },
+               },
        } {
                t.Run(tc.name, func(t *testing.T) {
                        chezmoitest.WithTestFS(t, tc.root, func(fileSystem 
vfs.FS) {
@@ -239,3 +250,78 @@
                })
        }
 }
+
+func TestUnquote(t *testing.T) {
+       for _, tc := range []struct {
+               name        string
+               s           string
+               expected    string
+               expectedErr bool
+       }{
+               {
+                       name:        "empty",
+                       s:           "",
+                       expectedErr: true,
+               },
+               {
+                       name:        "single_double",
+                       s:           `"`,
+                       expectedErr: true,
+               },
+               {
+                       name:        "single_single",
+                       s:           `"`,
+                       expectedErr: true,
+               },
+               {
+                       name:        "mismatched",
+                       s:           `"'`,
+                       expectedErr: true,
+               },
+               {
+                       name:     "empty_double",
+                       s:        `""`,
+                       expected: "",
+               },
+               {
+                       name:     "empty_single",
+                       s:        "''",
+                       expected: "",
+               },
+               {
+                       name:     "no_escape",
+                       s:        `"foo"`,
+                       expected: "foo",
+               },
+               {
+                       name:     "escaped_quote",
+                       s:        `"foo\"bar"`,
+                       expected: `foo"bar`,
+               },
+               {
+                       name:     "escaped_chars",
+                       s:        `"\n\r\t\v"`,
+                       expected: "\n\r\t\v",
+               },
+               {
+                       name:        "invalid_escape",
+                       s:           `"\'"`,
+                       expectedErr: true,
+               },
+               {
+                       name:        "incomplete_escape",
+                       s:           "'\\'",
+                       expectedErr: true,
+               },
+       } {
+               t.Run(tc.name, func(t *testing.T) {
+                       actual, err := unquote(tc.s)
+                       if tc.expectedErr {
+                               assert.Error(t, err)
+                       } else {
+                               assert.NoError(t, err)
+                               assert.Equal(t, tc.expected, actual)
+                       }
+               })
+       }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/chezmoi-2.70.2/internal/chezmoi/externaldiffsystem.go 
new/chezmoi-2.70.3/internal/chezmoi/externaldiffsystem.go
--- old/chezmoi-2.70.2/internal/chezmoi/externaldiffsystem.go   2026-04-17 
01:37:15.000000000 +0200
+++ new/chezmoi-2.70.3/internal/chezmoi/externaldiffsystem.go   2026-05-07 
22:22:03.000000000 +0200
@@ -252,7 +252,7 @@
                if err != nil {
                        return err
                }
-               defer writer.Close()
+               defer func() { _ = writer.Close() }()
                diffPagerCmd.Stdin = reader
                if err := chezmoilog.LogCmdStart(slog.Default(), diffPagerCmd); 
err != nil {
                        return err
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/chezmoi-2.70.2/internal/chezmoi/persistentstate_test.go 
new/chezmoi-2.70.3/internal/chezmoi/persistentstate_test.go
--- old/chezmoi-2.70.2/internal/chezmoi/persistentstate_test.go 2026-04-17 
01:37:15.000000000 +0200
+++ new/chezmoi-2.70.3/internal/chezmoi/persistentstate_test.go 2026-05-07 
22:22:03.000000000 +0200
@@ -18,7 +18,9 @@
        )
 
        s1 := constructor()
-       defer s1.Close()
+       defer func() {
+               assert.NoError(t, s1.Close())
+       }()
 
        assert.NoError(t, s1.Delete(bucket1, value))
 
@@ -43,7 +45,9 @@
        }))
 
        s2 := constructor()
-       defer s2.Close()
+       defer func() {
+               assert.NoError(t, s2.Close())
+       }()
 
        assert.NoError(t, s1.CopyTo(s2))
        actualValue, err = s2.Get(bucket1, key)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.70.2/internal/chezmoi/sourcestate.go 
new/chezmoi-2.70.3/internal/chezmoi/sourcestate.go
--- old/chezmoi-2.70.2/internal/chezmoi/sourcestate.go  2026-04-17 
01:37:15.000000000 +0200
+++ new/chezmoi-2.70.3/internal/chezmoi/sourcestate.go  2026-05-07 
22:22:03.000000000 +0200
@@ -948,8 +948,7 @@
        // targetRelPaths is already sorted and iterates in reverse order so 
that
        // children are removed before their parents.
 TARGET:
-       for i := len(targetRelPaths) - 1; i >= 0; i-- {
-               targetRelPath := targetRelPaths[i]
+       for _, targetRelPath := range slices.Backward(targetRelPaths) {
                if !s.removeDirs.Contains(targetRelPath) {
                        continue
                }
@@ -1730,7 +1729,7 @@
        } else {
                data, err = options.ReadHTTPResponse(urlStr, resp)
        }
-       resp.Body.Close()
+       _ = resp.Body.Close()
        if err != nil {
                return nil, err
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/chezmoi-2.70.2/internal/cmd/testdata/scripts/templatedata.txtar 
new/chezmoi-2.70.3/internal/cmd/testdata/scripts/templatedata.txtar
--- old/chezmoi-2.70.2/internal/cmd/testdata/scripts/templatedata.txtar 
2026-04-17 01:37:15.000000000 +0200
+++ new/chezmoi-2.70.3/internal/cmd/testdata/scripts/templatedata.txtar 
2026-05-07 22:22:03.000000000 +0200
@@ -10,7 +10,7 @@
 [linux] exec chezmoi execute-template '{{ .chezmoi.kernel.ostype }}'
 [linux] stdout Linux
 
-# test thta .chezmoi.flags.force is set
+# test that .chezmoi.flags.force is set
 exec chezmoi execute-template '{{ .chezmoi.flags.force }}'
 stdout '^false$'
 exec chezmoi execute-template --force '{{ .chezmoi.flags.force }}'

++++++ chezmoi.obsinfo ++++++
--- /var/tmp/diff_new_pack.tiriVP/_old  2026-05-13 17:22:09.738318265 +0200
+++ /var/tmp/diff_new_pack.tiriVP/_new  2026-05-13 17:22:09.782320091 +0200
@@ -1,5 +1,5 @@
 name: chezmoi
-version: 2.70.2
-mtime: 1776382635
-commit: b1aacd726df533ffd1f2fec7ded8e2ecfdb26e0e
+version: 2.70.3
+mtime: 1778185323
+commit: ff6317e356645f92976ac8695424735cadbd5a3b
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/chezmoi/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.chezmoi.new.1966/vendor.tar.gz differ: char 115, 
line 1

Reply via email to