commit chezmoi for openSUSE:Factory
Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package chezmoi for openSUSE:Factory checked in at 2024-08-09 16:15:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/chezmoi (Old) and /work/SRC/openSUSE:Factory/.chezmoi.new.7232 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "chezmoi" Fri Aug 9 16:15:03 2024 rev:58 rq:1192637 version:2.52.0 Changes: -------- --- /work/SRC/openSUSE:Factory/chezmoi/chezmoi.changes 2024-07-17 15:15:49.651553881 +0200 +++ /work/SRC/openSUSE:Factory/.chezmoi.new.7232/chezmoi.changes 2024-08-09 16:15:35.461253205 +0200 @@ -1,0 +2,9 @@ +Thu Aug 8 08:36:43 UTC 2024 - Filippo Bonazzi <filippo.bonazzi@suse.com> + +- Update to version 2.52.0: + - Features + * feat: Add gitHubRelease and gitHubReleaseAssetURL template functions + - Fixes + * fix: Don't modify ciphertext in edit command if plaintext did not change + +------------------------------------------------------------------- Old: ---- chezmoi-2.51.0.obscpio New: ---- chezmoi-2.52.0.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ chezmoi.spec ++++++ --- /var/tmp/diff_new_pack.dUDvqM/_old 2024-08-09 16:15:36.369291106 +0200 +++ /var/tmp/diff_new_pack.dUDvqM/_new 2024-08-09 16:15:36.369291106 +0200 @@ -17,7 +17,7 @@ Name: chezmoi -Version: 2.51.0 +Version: 2.52.0 Release: 0 Summary: A multi-host manager for dotfiles License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.dUDvqM/_old 2024-08-09 16:15:36.405292609 +0200 +++ /var/tmp/diff_new_pack.dUDvqM/_new 2024-08-09 16:15:36.409292775 +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.51.0</param> + <param name="revision">v2.52.0</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> </service> ++++++ chezmoi-2.51.0.obscpio -> chezmoi-2.52.0.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/.github/workflows/main.yml new/chezmoi-2.52.0/.github/workflows/main.yml --- old/chezmoi-2.51.0/.github/workflows/main.yml 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/.github/workflows/main.yml 2024-08-07 22:11:15.000000000 +0200 @@ -16,7 +16,7 @@ CHOCOLATEY_VERSION: 2.2.2 # https://github.com/chocolatey/choco/releases EDITORCONFIG_CHECKER_VERSION: 3.0.3 # https://github.com/editorconfig-checker/editorconfig-checker/releases FIND_TYPOS_VERSION: 0.0.3 # https://github.com/twpayne/find-typos/tags - GO_VERSION: 1.22.5 # https://go.dev/doc/devel/release + GO_VERSION: 1.22.6 # https://go.dev/doc/devel/release GOFUMPT_VERSION: 0.6.0 # https://github.com/mvdan/gofumpt/releases GOLANGCI_LINT_VERSION: 1.59.1 # https://github.com/golangci/golangci-lint/releases GOLINES_VERSION: 0.12.2 # https://github.com/segmentio/golines/releases @@ -60,10 +60,10 @@ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 with: fetch-depth: 1 - - uses: github/codeql-action/init@b611370bb5703a7efb587f9d136a52ea24c5c38c + - uses: github/codeql-action/init@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a with: languages: go - - uses: github/codeql-action/analyze@b611370bb5703a7efb587f9d136a52ea24c5c38c + - uses: github/codeql-action/analyze@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a misspell: runs-on: ubuntu-22.04 permissions: @@ -202,31 +202,31 @@ args: release --skip=sign --snapshot --timeout=1h - name: upload-artifact-chezmoi-darwin-amd64 if: github.event_name == 'push' || needs.changes.outputs.code == 'true' - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b + uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029 with: name: chezmoi-darwin-amd64 path: dist/chezmoi-nocgo_darwin_amd64_v1/chezmoi - name: upload-artifact-chezmoi-darwin-arm64 if: github.event_name == 'push' || needs.changes.outputs.code == 'true' - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b + uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029 with: name: chezmoi-darwin-arm64 path: dist/chezmoi-nocgo_darwin_arm64/chezmoi - name: upload-artifact-chezmoi-linux-amd64 if: github.event_name == 'push' || needs.changes.outputs.code == 'true' - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b + uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029 with: name: chezmoi-linux-amd64 path: dist/chezmoi-cgo-glibc_linux_amd64_v1/chezmoi - name: upload-artifact-chezmoi-linux-musl-amd64 if: github.event_name == 'push' || needs.changes.outputs.code == 'true' - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b + uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029 with: name: chezmoi-linux-amd64-musl path: dist/chezmoi-cgo-musl_linux_amd64_v1/chezmoi - name: upload-artifact-chezmoi-windows-amd64.exe if: github.event_name == 'push' || needs.changes.outputs.code == 'true' - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b + uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029 with: name: chezmoi-windows-amd64 path: dist/chezmoi-nocgo_windows_amd64_v1/chezmoi.exe @@ -382,7 +382,7 @@ - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 with: go-version: stable - - uses: golangci/golangci-lint-action@a4f60bb28d35aeee14e6880718e0c85ff1882e64 + - uses: golangci/golangci-lint-action@aaa42aa0628b4ae2578232a66b541047968fac86 with: version: v${{ env.GOLANGCI_LINT_VERSION }} args: --timeout=5m diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/assets/chezmoi.io/docs/reference/release-history.md.tmpl new/chezmoi-2.52.0/assets/chezmoi.io/docs/reference/release-history.md.tmpl --- old/chezmoi-2.51.0/assets/chezmoi.io/docs/reference/release-history.md.tmpl 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/assets/chezmoi.io/docs/reference/release-history.md.tmpl 2024-08-07 22:11:15.000000000 +0200 @@ -20,7 +20,7 @@ | replaceAllRegex "\\(#(\\d+)[)]" "(https://github.com/twpayne/chezmoi/pull/$1)" | replaceAllRegex "(https://github\\.com/twpayne/chezmoi/pull/(\\d+))" "[#$2]($1)" | replaceAllRegex "(?m)^([0-9a-f]{7,})" "* $1" - | replaceAllRegex "(?m)^\\* ([0-9a-f]{7,})" "* [`$1`](https://github.com/twpayne/chezmoi/commit/$1)" + | replaceAllRegex "(?m)^\\* (([0-9a-f]{7})[0-9a-f]*)" "* [`$2`](https://github.com/twpayne/chezmoi/commit/$1)" | replaceAllRegex "\\r\\n" "\\n" | trim | default "Internal changes only" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/assets/chezmoi.io/docs/reference/templates/github-functions/gitHubRelease.md new/chezmoi-2.52.0/assets/chezmoi.io/docs/reference/templates/github-functions/gitHubRelease.md --- old/chezmoi-2.51.0/assets/chezmoi.io/docs/reference/templates/github-functions/gitHubRelease.md 1970-01-01 01:00:00.000000000 +0100 +++ new/chezmoi-2.52.0/assets/chezmoi.io/docs/reference/templates/github-functions/gitHubRelease.md 2024-08-07 22:11:15.000000000 +0200 @@ -0,0 +1,17 @@ +# `gitHubRelease` *owner-repo* *version* + +`gitHubRelease` calls the GitHub API to retrieve the latest releases about +the given *owner-repo*, It iterates through all the versions of the release, +fetching the first entry equal to *version*. + +It then returns structured data as defined by the [GitHub Go API +bindings](https://pkg.go.dev/github.com/google/go-github/v63/github#RepositoryRelease). + +Calls to `gitHubRelease` are cached so calling `gitHubRelease` with +the same *owner-repo* *version* will only result in one call to the GitHub API. + +!!! example + + ``` + {{ (gitHubRelease "docker/compose" "v2.29.1").TagName }} + ``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/assets/chezmoi.io/docs/reference/templates/github-functions/gitHubReleaseAssetURL.md new/chezmoi-2.52.0/assets/chezmoi.io/docs/reference/templates/github-functions/gitHubReleaseAssetURL.md --- old/chezmoi-2.51.0/assets/chezmoi.io/docs/reference/templates/github-functions/gitHubReleaseAssetURL.md 1970-01-01 01:00:00.000000000 +0100 +++ new/chezmoi-2.52.0/assets/chezmoi.io/docs/reference/templates/github-functions/gitHubReleaseAssetURL.md 2024-08-07 22:11:15.000000000 +0200 @@ -0,0 +1,21 @@ +# `gitHubReleaseAssetURL` *owner-repo* *version* *pattern* + +`gitHubReleaseAssetURL` calls the GitHub API to retrieve the latest +releases about the given *owner-repo*, returning structured data as defined by +the [GitHub Go API +bindings](https://pkg.go.dev/github.com/google/go-github/v63/github#RepositoryRelease). +It iterates through all the versions of the release, returning the first entry equal to *version*. +It then iterates through all the release's assets, returning the first one that +matches *pattern*. *pattern* is a shell pattern as [described in +`path.Match`](https://pkg.go.dev/path#Match). + +Calls to `gitHubReleaseAssetURL` are cached so calling +`gitHubReleaseAssetURL` with the same *owner-repo* will only result in one +call to the GitHub API. + +!!! example + + ``` + {{ gitHubReleaseAssetURL "FiloSottile/age" "age v1.2.0" (printf "age-*-%s-%s.tar.gz" .chezmoi.os .chezmoi.arch) }} + {{ gitHubReleaseAssetURL "twpayne/chezmoi" "v2.50.0" (printf "chezmoi-%s-%s" .chezmoi.os .chezmoi.arch) }} + ``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/assets/chezmoi.io/docs/user-guide/machines/containers-and-vms.md new/chezmoi-2.52.0/assets/chezmoi.io/docs/user-guide/machines/containers-and-vms.md --- old/chezmoi-2.51.0/assets/chezmoi.io/docs/user-guide/machines/containers-and-vms.md 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/assets/chezmoi.io/docs/user-guide/machines/containers-and-vms.md 2024-08-07 22:11:15.000000000 +0200 @@ -40,6 +40,12 @@ {{- end }} ``` +!!! warning + + Setting the `sourceDir` configuration variable to `.chezmoi.sourceDir` is + required because Codespaces clones your dotfiles repo to a different one to + chezmoi's default. + This sets the `codespaces` template variable, so you don't have to repeat `(env "CODESPACES")` in your templates. It also sets the `sourceDir` configuration to the `--source` argument passed in `chezmoi init`. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/assets/chezmoi.io/mkdocs.yml new/chezmoi-2.52.0/assets/chezmoi.io/mkdocs.yml --- old/chezmoi-2.51.0/assets/chezmoi.io/mkdocs.yml 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/assets/chezmoi.io/mkdocs.yml 2024-08-07 22:11:15.000000000 +0200 @@ -225,7 +225,9 @@ - reference/templates/github-functions/index.md - gitHubKeys: reference/templates/github-functions/gitHubKeys.md - gitHubLatestRelease: reference/templates/github-functions/gitHubLatestRelease.md + - gitHubRelease: reference/templates/github-functions/gitHubRelease.md - gitHubLatestReleaseAssetURL: reference/templates/github-functions/gitHubLatestReleaseAssetURL.md + - gitHubReleaseAssetURL: reference/templates/github-functions/gitHubReleaseAssetURL.md - gitHubLatestTag: reference/templates/github-functions/gitHubLatestTag.md - gitHubReleases: reference/templates/github-functions/gitHubReleases.md - gitHubTags: reference/templates/github-functions/gitHubTags.md diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/assets/chezmoi.io/requirements.txt new/chezmoi-2.52.0/assets/chezmoi.io/requirements.txt --- old/chezmoi-2.51.0/assets/chezmoi.io/requirements.txt 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/assets/chezmoi.io/requirements.txt 2024-08-07 22:11:15.000000000 +0200 @@ -1,3 +1,3 @@ mkdocs==1.6.0 -mkdocs-material==9.5.27 +mkdocs-material==9.5.30 mkdocs-mermaid2-plugin==1.1.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/assets/requirements.dev.txt new/chezmoi-2.52.0/assets/requirements.dev.txt --- old/chezmoi-2.51.0/assets/requirements.dev.txt 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/assets/requirements.dev.txt 2024-08-07 22:11:15.000000000 +0200 @@ -1 +1 @@ -ruff==0.5.0 +ruff==0.5.5 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/go.mod new/chezmoi-2.52.0/go.mod --- old/chezmoi-2.51.0/go.mod 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/go.mod 2024-08-07 22:11:15.000000000 +0200 @@ -6,7 +6,7 @@ require ( filippo.io/age v1.2.0 - github.com/1password/onepassword-sdk-go v0.1.0-beta.10 + github.com/1password/onepassword-sdk-go v0.1.0-beta.12 github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.1.0 github.com/Masterminds/sprig/v3 v3.2.3 @@ -14,13 +14,13 @@ github.com/Shopify/ejson v1.5.2 github.com/alecthomas/assert/v2 v2.10.0 github.com/aws/aws-sdk-go-v2 v1.30.3 - github.com/aws/aws-sdk-go-v2/config v1.27.26 - github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.32.3 + github.com/aws/aws-sdk-go-v2/config v1.27.27 + github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.32.4 github.com/bmatcuk/doublestar/v4 v4.6.1 github.com/bradenhilton/mozillainstallhash v1.0.1 github.com/charmbracelet/bubbles v0.18.0 github.com/charmbracelet/bubbletea v0.26.6 - github.com/charmbracelet/glamour v0.7.0 + github.com/charmbracelet/glamour v0.8.0 github.com/coreos/go-semver v0.3.1 github.com/fsnotify/fsnotify v1.7.0 github.com/go-git/go-git/v5 v5.12.0 @@ -32,7 +32,7 @@ github.com/mitchellh/copystructure v1.2.0 github.com/mitchellh/mapstructure v1.5.0 github.com/muesli/combinator v0.3.0 - github.com/muesli/termenv v0.15.2 + github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a github.com/pelletier/go-toml/v2 v2.2.2 github.com/rogpeppe/go-internal v1.12.0 github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 @@ -48,10 +48,10 @@ github.com/zricethezav/gitleaks/v8 v8.18.4 go.etcd.io/bbolt v1.3.10 golang.org/x/crypto v0.25.0 - golang.org/x/crypto/x509roots/fallback v0.0.0-20240709155400-d66d9c31b4ae - golang.org/x/oauth2 v0.21.0 - golang.org/x/sync v0.7.0 - golang.org/x/sys v0.22.0 + golang.org/x/crypto/x509roots/fallback v0.0.0-20240726163919-3375612bf41a + golang.org/x/oauth2 v0.22.0 + golang.org/x/sync v0.8.0 + golang.org/x/sys v0.23.0 golang.org/x/term v0.22.0 gopkg.in/ini.v1 v1.67.0 gopkg.in/yaml.v3 v3.0.1 @@ -61,8 +61,8 @@ require ( dario.cat/mergo v1.0.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.12.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.9.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.1 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect github.com/BobuSumisu/aho-corasick v1.0.3 // indirect @@ -74,14 +74,14 @@ github.com/alecthomas/repr v0.4.0 // indirect github.com/alessio/shellescape v1.4.2 // indirect github.com/atotto/clipboard v0.1.4 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.26 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.27 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.22.3 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 // indirect github.com/aws/smithy-go v1.20.3 // indirect @@ -91,18 +91,18 @@ github.com/charmbracelet/harmonica v0.2.0 // indirect github.com/charmbracelet/lipgloss v0.12.1 // indirect github.com/charmbracelet/x/ansi v0.1.4 // indirect - github.com/charmbracelet/x/input v0.1.2 // indirect + github.com/charmbracelet/x/input v0.1.3 // indirect github.com/charmbracelet/x/term v0.1.1 // indirect github.com/charmbracelet/x/windows v0.1.2 // indirect github.com/cloudflare/circl v1.3.9 // indirect github.com/creack/pty/v2 v2.0.0-20231209135443-03db72c7b76c // indirect - github.com/cyphar/filepath-securejoin v0.3.0 // indirect + github.com/cyphar/filepath-securejoin v0.3.1 // indirect github.com/danieljoos/wincred v1.2.2 // indirect - github.com/dlclark/regexp2 v1.11.2 // indirect + github.com/dlclark/regexp2 v1.11.4 // indirect github.com/dustin/gojson v0.0.0-20160307161227-2e71ec9dd5ad // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect - github.com/extism/go-sdk v1.3.0 // indirect + github.com/extism/go-sdk v1.3.1 // indirect github.com/fatih/semgroup v1.2.0 // indirect github.com/gitleaks/go-gitdiff v0.9.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect @@ -130,13 +130,12 @@ github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-localereader v0.0.1 // indirect - github.com/mattn/go-runewidth v0.0.15 // indirect + github.com/mattn/go-runewidth v0.0.16 // indirect github.com/microcosm-cc/bluemonday v1.0.27 // 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/olekukonko/tablewriter v0.0.5 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect @@ -145,7 +144,7 @@ github.com/sagikazarmark/locafero v0.6.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/shopspring/decimal v1.4.0 // indirect - github.com/skeema/knownhosts v1.2.2 // indirect + github.com/skeema/knownhosts v1.3.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.6.0 // indirect @@ -157,7 +156,7 @@ github.com/yuin/goldmark v1.7.4 // indirect github.com/yuin/goldmark-emoji v1.0.3 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/exp v0.0.0-20240707233637-46b078467d37 // indirect + golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect golang.org/x/net v0.27.0 // indirect golang.org/x/text v0.16.0 // indirect golang.org/x/tools v0.23.0 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/go.sum new/chezmoi-2.52.0/go.sum --- old/chezmoi-2.51.0/go.sum 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/go.sum 2024-08-07 22:11:15.000000000 +0200 @@ -20,14 +20,14 @@ filippo.io/age v1.2.0/go.mod h1:JL9ew2lTN+Pyft4RiNGguFfOpewKwSHm5ayKD/A4004= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= -github.com/1password/onepassword-sdk-go v0.1.0-beta.10 h1:vYm15kP/HMWdJaScgWFUu0zxl5QeRgUAwg322VabV54= -github.com/1password/onepassword-sdk-go v0.1.0-beta.10/go.mod h1:FnJzZHo0kfR7U4M3f9xRbKIAn+sR9pn1Ssu3zGDcMpM= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.12.0 h1:1nGuui+4POelzDwI7RG56yfQJHCnKvwfMoU7VsEp+Zg= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.12.0/go.mod h1:99EvauvlcJ1U06amZiksfYz/3aFGyIhWGHVyiZXtBAI= +github.com/1password/onepassword-sdk-go v0.1.0-beta.12 h1:v9b2fow1cutaCWRsIU1sVxVSzzR90mfkDCwYJeaadWc= +github.com/1password/onepassword-sdk-go v0.1.0-beta.12/go.mod h1:7wEQynLBXBC4svNx3X82QmCy0Adhm4e+UkM9t9mSSWA= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 h1:GJHeeA2N7xrG3q30L2UXDyuWRzDM900/65j70wcM4Ww= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0/go.mod h1:l38EPgmsp71HHLq9j7De57JcKOWPyhrsW1Awm1JS6K0= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.9.1 h1:Xy/qV1DyOhhqsU/z0PyFMJfYCxnzna+vBEUtFW0ksQo= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.9.1/go.mod h1:oib6iWdC+sILvNUoJbbBn3xv7TXow7mEp/WRcsYvmow= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 h1:ywEEhmNahHBihViHepv3xPBn1663uRv2t2q/ESv9seY= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY= github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.1.0 h1:h4Zxgmi9oyZL2l8jeg1iRTqPloHktywWcu0nlJmo1tA= github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.1.0/go.mod h1:LgLGXawqSreJz135Elog0ywTJDsm0Hz2k+N+6ZK35u8= github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.1 h1:9fXQS/0TtQmKXp8SureKouF+idbQvp7cPUxykiohnBs= @@ -68,10 +68,10 @@ github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= github.com/aws/aws-sdk-go-v2 v1.30.3 h1:jUeBtG0Ih+ZIFH0F4UkmL9w3cSpaMv9tYYDbzILP8dY= github.com/aws/aws-sdk-go-v2 v1.30.3/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= -github.com/aws/aws-sdk-go-v2/config v1.27.26 h1:T1kAefbKuNum/AbShMsZEro6eRkeOT8YILfE9wyjAYQ= -github.com/aws/aws-sdk-go-v2/config v1.27.26/go.mod h1:ivWHkAWFrw/nxty5Fku7soTIVdqZaZ7dw+tc5iGW3GA= -github.com/aws/aws-sdk-go-v2/credentials v1.17.26 h1:tsm8g/nJxi8+/7XyJJcP2dLrnK/5rkFp6+i2nhmz5fk= -github.com/aws/aws-sdk-go-v2/credentials v1.17.26/go.mod h1:3vAM49zkIa3q8WT6o9Ve5Z0vdByDMwmdScO0zvThTgI= +github.com/aws/aws-sdk-go-v2/config v1.27.27 h1:HdqgGt1OAP0HkEDDShEl0oSYa9ZZBSOmKpdpsDMdO90= +github.com/aws/aws-sdk-go-v2/config v1.27.27/go.mod h1:MVYamCg76dFNINkZFu4n4RjDixhVr51HLj4ErWzrVwg= +github.com/aws/aws-sdk-go-v2/credentials v1.17.27 h1:2raNba6gr2IfA0eqqiP2XiQ0UVOpGPgDSi0I9iAP+UI= +github.com/aws/aws-sdk-go-v2/credentials v1.17.27/go.mod h1:gniiwbGahQByxan6YjQUMcW4Aov6bLC3m+evgcoN4r4= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 h1:KreluoV8FZDEtI6Co2xuNk/UqI9iwMrOx/87PBNIKqw= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11/go.mod h1:SeSUYBLsMYFoRvHE0Tjvn7kbxaUhl75CJi1sbfhMxkU= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 h1:SoNJ4RlFEQEbtDcCEt+QG56MY4fm4W8rYirAmq+/DdU= @@ -84,10 +84,10 @@ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3/go.mod h1:GlAeCkHwugxdHaueRr4nhPuY+WW+gR8UjlcqzPr1SPI= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 h1:HGErhhrxZlQ044RiM+WdoZxp0p+EGM62y3L6pwA4olE= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17/go.mod h1:RkZEx4l0EHYDJpWppMJ3nD9wZJAa8/0lq9aVC+r2UII= -github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.32.3 h1:ilavrucVBQHYnMjD2KmZQDCU1fuluQb0l9zRigGNVEc= -github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.32.3/go.mod h1:TKKN7IQoM7uTnyuFm9bm9cw5P//ZYTl4m3htBWQ1G/c= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.3 h1:Fv1vD2L65Jnp5QRsdiM64JvUM4Xe+E0JyVsRQKv6IeA= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.3/go.mod h1:ooyCOXjvJEsUw7x+ZDHeISPMhtwI3ZCB7ggFMcFfWLU= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.32.4 h1:NgRFYyFpiMD62y4VPXh4DosPFbZd4vdMVBWKk0VmWXc= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.32.4/go.mod h1:TKKN7IQoM7uTnyuFm9bm9cw5P//ZYTl4m3htBWQ1G/c= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 h1:BXx0ZIxvrJdSgSvKTZ+yRBeSqqgPM89VPlulEcl37tM= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.4/go.mod h1:ooyCOXjvJEsUw7x+ZDHeISPMhtwI3ZCB7ggFMcFfWLU= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 h1:yiwVzJW2ZxZTurVbYWA7QOrAaCYQR72t0wrSBfoesUE= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4/go.mod h1:0oxfLkpz3rQ/CHlx5hB7H69YUpFiI1tql6Q6Ne+1bCw= github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 h1:ZsDKRLXGWHk8WdtyYMoGNO7bTudrvuKpDKgMVRlepGE= @@ -112,16 +112,18 @@ github.com/charmbracelet/bubbles v0.18.0/go.mod h1:08qhZhtIwzgrtBjAcJnij1t1H0ZRjwHyGsy6AL11PSw= github.com/charmbracelet/bubbletea v0.26.6 h1:zTCWSuST+3yZYZnVSvbXwKOPRSNZceVeqpzOLN2zq1s= github.com/charmbracelet/bubbletea v0.26.6/go.mod h1:dz8CWPlfCCGLFbBlTY4N7bjLiyOGDJEnd2Muu7pOWhk= -github.com/charmbracelet/glamour v0.7.0 h1:2BtKGZ4iVJCDfMF229EzbeR1QRKLWztO9dMtjmqZSng= -github.com/charmbracelet/glamour v0.7.0/go.mod h1:jUMh5MeihljJPQbJ/wf4ldw2+yBP59+ctV36jASy7ps= +github.com/charmbracelet/glamour v0.8.0 h1:tPrjL3aRcQbn++7t18wOpgLyl8wrOHUEDS7IZ68QtZs= +github.com/charmbracelet/glamour v0.8.0/go.mod h1:ViRgmKkf3u5S7uakt2czJ272WSg2ZenlYEZXT2x7Bjw= github.com/charmbracelet/harmonica v0.2.0 h1:8NxJWRWg/bzKqqEaaeFNipOu77YR5t8aSwG4pgaUBiQ= github.com/charmbracelet/harmonica v0.2.0/go.mod h1:KSri/1RMQOZLbw7AHqgcBycp8pgJnQMYYT8QZRqZ1Ao= github.com/charmbracelet/lipgloss v0.12.1 h1:/gmzszl+pedQpjCOH+wFkZr/N90Snz40J/NR7A0zQcs= github.com/charmbracelet/lipgloss v0.12.1/go.mod h1:V2CiwIuhx9S1S1ZlADfOj9HmxeMAORuz5izHb0zGbB8= github.com/charmbracelet/x/ansi v0.1.4 h1:IEU3D6+dWwPSgZ6HBH+v6oUuZ/nVawMiWj5831KfiLM= github.com/charmbracelet/x/ansi v0.1.4/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw= -github.com/charmbracelet/x/input v0.1.2 h1:QJAZr33eOhDowkkEQ24rsJy4Llxlm+fRDf/cQrmqJa0= -github.com/charmbracelet/x/input v0.1.2/go.mod h1:LGBim0maUY4Pitjn/4fHnuXb4KirU3DODsyuHuXdOyA= +github.com/charmbracelet/x/exp/golden v0.0.0-20240715153702-9ba8adf781c4 h1:6KzMkQeAF56rggw2NZu1L+TH7j9+DM1/2Kmh7KUxg1I= +github.com/charmbracelet/x/exp/golden v0.0.0-20240715153702-9ba8adf781c4/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U= +github.com/charmbracelet/x/input v0.1.3 h1:oy4TMhyGQsYs/WWJwu1ELUMFnjiUAXwtDf048fHbCkg= +github.com/charmbracelet/x/input v0.1.3/go.mod h1:1gaCOyw1KI9e2j00j/BBZ4ErzRZqa05w0Ghn83yIhKU= github.com/charmbracelet/x/term v0.1.1 h1:3cosVAiPOig+EV4X9U+3LDgtwwAoEzJjNdwbXDjF6yI= github.com/charmbracelet/x/term v0.1.1/go.mod h1:wB1fHt5ECsu3mXYusyzcngVWWlu1KKUmmLhfgr/Flxw= github.com/charmbracelet/x/windows v0.1.2 h1:Iumiwq2G+BRmgoayww/qfcvof7W/3uLoelhxojXlRWg= @@ -141,16 +143,16 @@ github.com/creack/pty v1.1.21/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/creack/pty/v2 v2.0.0-20231209135443-03db72c7b76c h1:5l8y/PgjeX1aUyZxXabtAf2ahCYQaqWzlFzQgU16o0U= github.com/creack/pty/v2 v2.0.0-20231209135443-03db72c7b76c/go.mod h1:1gZ4PfMDNcYx8FxDdnF/6HYP327cTeB/ru6UdoWVQvw= -github.com/cyphar/filepath-securejoin v0.3.0 h1:tXpmbiaeBrS/K2US8nhgwdKYnfAOnVfkcLPKFgFHeA0= -github.com/cyphar/filepath-securejoin v0.3.0/go.mod h1:F7i41x/9cBF7lzCrVsYs9fuzwRZm4NQsGTBdpp6mETc= +github.com/cyphar/filepath-securejoin v0.3.1 h1:1V7cHiaW+C+39wEfpH6XlLBQo3j/PciWFrgfCLS8XrE= +github.com/cyphar/filepath-securejoin v0.3.1/go.mod h1:F7i41x/9cBF7lzCrVsYs9fuzwRZm4NQsGTBdpp6mETc= github.com/danieljoos/wincred v1.2.2 h1:774zMFJrqaeYCK2W57BgAem/MLi6mtSE47MB6BOJ0i0= github.com/danieljoos/wincred v1.2.2/go.mod h1:w7w4Utbrz8lqeMbDAK0lkNJUv5sAOkFi7nd/ogr0Uh8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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.2 h1:/u628IuisSTwri5/UKloiIsH8+qF2Pu7xEQX+yIKg68= -github.com/dlclark/regexp2 v1.11.2/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo= +github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= @@ -163,8 +165,8 @@ github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4= github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM= -github.com/extism/go-sdk v1.3.0 h1:DBd4FzDBUAL3P01MNqUD2+x8G7qyYdJ7pV96NIrfWXA= -github.com/extism/go-sdk v1.3.0/go.mod h1:tPMWfCSOThie3LSTSZKbrQjRm2oAXxUUjSE4HJWjYQM= +github.com/extism/go-sdk v1.3.1 h1:eVpuv36b67Km/tAb7Cq6msHEW8kkdFgpZO/7fCwjuoE= +github.com/extism/go-sdk v1.3.1/go.mod h1:tPMWfCSOThie3LSTSZKbrQjRm2oAXxUUjSE4HJWjYQM= github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w= github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg= github.com/fatih/semgroup v1.2.0 h1:h/OLXwEM+3NNyAdZEpMiH1OzfplU09i2qXPVThGZvyg= @@ -310,10 +312,9 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= 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.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= -github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= -github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/microcosm-cc/bluemonday v1.0.27 h1:MpEUotklkwCSLeH+Qdx1VJgNqLlpY2KXwXFM08ygZfk= github.com/microcosm-cc/bluemonday v1.0.27/go.mod h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= @@ -342,16 +343,14 @@ github.com/muesli/combinator v0.3.0/go.mod h1:ttPegJX0DPQaGDtJKMInIP6Vfp5pN8RX7QntFCcpy18= github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= -github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= -github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= +github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a h1:2MaM6YC3mGu54x+RKAA6JiFFHlHDY1UbkxqppT7wYOg= +github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a/go.mod h1:hxSnBBYLK21Vtq/PHd0S2FYCxBXzBua8ov5s1RobyRQ= github.com/nats-io/nats.go v1.34.0 h1:fnxnPCNiwIG5w08rlMcEKTUw4AV/nKyGCOJE8TdhSPk= github.com/nats-io/nats.go v1.34.0/go.mod h1:Ubdu4Nh9exXdSz0RVWRFBbRfrbSxOYd26oF0wkWclB8= github.com/nats-io/nkeys v0.4.7 h1:RwNJbbIdYCoClSDNY7QVKZlyb/wfT6ugvFCiKy6vDvI= github.com/nats-io/nkeys v0.4.7/go.mod h1:kqXRgRDPlGy7nGaEDMuYzmiJCIAAWDK0IMBtDmGD0nc= github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ= @@ -401,8 +400,8 @@ 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.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= -github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +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/smarty/assertions v1.15.0 h1:cR//PqUBUiQRakZWqBiFFQ9wb8emQGDb0HeGdqGByCY= github.com/smarty/assertions v1.15.0/go.mod h1:yABtdzeQs6l1brC900WlRNwj6ZR55d7B+E8C6HtKdec= github.com/smartystreets/goconvey v1.8.1 h1:qGjIddxOk4grTu9JPOU31tVfq3cNdBlNa5sSznIX1xY= @@ -508,10 +507,10 @@ golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= -golang.org/x/crypto/x509roots/fallback v0.0.0-20240709155400-d66d9c31b4ae h1:3Lr8+tydLa3EM5BMsp0/++1Pca9P3T3lnTTj6z5BqOc= -golang.org/x/crypto/x509roots/fallback v0.0.0-20240709155400-d66d9c31b4ae/go.mod h1:kNa9WdvYnzFwC79zRpLRMJbdEFlhyM5RPFBBZp/wWH8= -golang.org/x/exp v0.0.0-20240707233637-46b078467d37 h1:uLDX+AfeFCct3a2C7uIWBKMJIR3CJMhcgfrUAqjRK6w= -golang.org/x/exp v0.0.0-20240707233637-46b078467d37/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= +golang.org/x/crypto/x509roots/fallback v0.0.0-20240726163919-3375612bf41a h1:+mrX96OoIUobm534myLOZMfVxVLWu/TpbYrUu6sn4tQ= +golang.org/x/crypto/x509roots/fallback v0.0.0-20240726163919-3375612bf41a/go.mod h1:kNa9WdvYnzFwC79zRpLRMJbdEFlhyM5RPFBBZp/wWH8= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= @@ -525,13 +524,13 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= -golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= -golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= +golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -551,8 +550,8 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= +golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457 h1:zf5N6UOrA487eEFacMePxjXAJctxKmyjKUsjA11Uzuk= golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457/go.mod h1:pRgIJT+bRLFKnoM1ldnzKoxTIn14Yxz928LQRYYgIN0= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/chezmoi/chezmoi.go new/chezmoi-2.52.0/internal/chezmoi/chezmoi.go --- old/chezmoi-2.51.0/internal/chezmoi/chezmoi.go 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/internal/chezmoi/chezmoi.go 2024-08-07 22:11:15.000000000 +0200 @@ -321,6 +321,16 @@ return len(bytes.TrimSpace(data)) == 0 } +// isPrivate returns if fileInfo is private. +func isPrivate(fileInfo fs.FileInfo) bool { + return fileInfo.Mode().Perm()&0o77 == 0 +} + +// isReadOnly returns if fileInfo is read-only. +func isReadOnly(fileInfo fs.FileInfo) bool { + return fileInfo.Mode().Perm()&0o222 == 0 +} + // md5Sum returns the MD5 sum of data. func md5Sum(data []byte) []byte { md5SumArr := md5.Sum(data) //nolint:gosec diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/chezmoi/chezmoi_unix.go new/chezmoi-2.52.0/internal/chezmoi/chezmoi_unix.go --- old/chezmoi-2.51.0/internal/chezmoi/chezmoi_unix.go 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/internal/chezmoi/chezmoi_unix.go 2024-08-07 22:11:15.000000000 +0200 @@ -31,13 +31,3 @@ func UserHomeDir() (string, error) { return os.UserHomeDir() } - -// isPrivate returns if fileInfo is private. -func isPrivate(fileInfo fs.FileInfo) bool { - return fileInfo.Mode().Perm()&0o77 == 0 -} - -// isReadOnly returns if fileInfo is read-only. -func isReadOnly(fileInfo fs.FileInfo) bool { - return fileInfo.Mode().Perm()&0o222 == 0 -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/chezmoi/chezmoi_windows.go new/chezmoi-2.52.0/internal/chezmoi/chezmoi_windows.go --- old/chezmoi-2.51.0/internal/chezmoi/chezmoi_windows.go 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/internal/chezmoi/chezmoi_windows.go 2024-08-07 22:11:15.000000000 +0200 @@ -32,6 +32,9 @@ // in the PATHEXT environment variable as per // https://www.nextofwindows.com/what-is-pathext-environment-variable-in-window.... func IsExecutable(fileInfo fs.FileInfo) bool { + if fileInfo.Mode().Perm()&0o111 != 0 { + return true + } if !fileInfo.Mode().IsRegular() { return false } @@ -55,16 +58,6 @@ return os.UserHomeDir() } -// isPrivate returns false on Windows. -func isPrivate(_ fs.FileInfo) bool { - return false -} - -// isReadOnly returns false on Windows. -func isReadOnly(_ fs.FileInfo) bool { - return false -} - // isSlash returns if c is a slash character. func isSlash(c byte) bool { return c == '\\' || c == '/' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/cmd.go new/chezmoi-2.52.0/internal/cmd/cmd.go --- old/chezmoi-2.51.0/internal/cmd/cmd.go 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/internal/cmd/cmd.go 2024-08-07 22:11:15.000000000 +0200 @@ -13,6 +13,7 @@ "strings" "github.com/charmbracelet/glamour" + "github.com/charmbracelet/glamour/styles" "github.com/spf13/cobra" "go.etcd.io/bbolt" @@ -52,7 +53,7 @@ panic(err) } - longHelpStyleConfig := glamour.ASCIIStyleConfig + longHelpStyleConfig := styles.ASCIIStyleConfig longHelpStyleConfig.Code.StylePrimitive.BlockPrefix = "" longHelpStyleConfig.Code.StylePrimitive.BlockSuffix = "" longHelpStyleConfig.Emph.BlockPrefix = "" @@ -66,7 +67,7 @@ panic(err) } - exampleStyleConfig := glamour.ASCIIStyleConfig + exampleStyleConfig := styles.ASCIIStyleConfig exampleStyleConfig.Code.StylePrimitive.BlockPrefix = "" exampleStyleConfig.Code.StylePrimitive.BlockSuffix = "" exampleStyleConfig.Document.Margin = nil diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/config.go new/chezmoi-2.52.0/internal/cmd/config.go --- old/chezmoi-2.51.0/internal/cmd/config.go 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/internal/cmd/config.go 2024-08-07 22:11:15.000000000 +0200 @@ -438,6 +438,8 @@ "gitHubLatestRelease": c.gitHubLatestReleaseTemplateFunc, "gitHubLatestReleaseAssetURL": c.gitHubLatestReleaseAssetURLTemplateFunc, "gitHubLatestTag": c.gitHubLatestTagTemplateFunc, + "gitHubRelease": c.gitHubReleaseTemplateFunc, + "gitHubReleaseAssetURL": c.gitHubReleaseAssetURLTemplateFunc, "gitHubReleases": c.gitHubReleasesTemplateFunc, "gitHubTags": c.gitHubTagsTemplateFunc, "glob": c.globTemplateFunc, @@ -475,8 +477,8 @@ "output": c.outputTemplateFunc, "pass": c.passTemplateFunc, "passFields": c.passFieldsTemplateFunc, - "passhole": c.passholeTemplateFunc, "passRaw": c.passRawTemplateFunc, + "passhole": c.passholeTemplateFunc, "pruneEmptyDicts": c.pruneEmptyDictsTemplateFunc, "quoteList": c.quoteListTemplateFunc, "rbw": c.rbwTemplateFunc, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/editcmd.go new/chezmoi-2.52.0/internal/cmd/editcmd.go --- old/chezmoi-2.51.0/internal/cmd/editcmd.go 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/internal/cmd/editcmd.go 2024-08-07 22:11:15.000000000 +0200 @@ -1,6 +1,7 @@ package cmd import ( + "bytes" "log/slog" "os" "runtime" @@ -87,6 +88,7 @@ type transparentlyDecryptedFile struct { sourceAbsPath chezmoi.AbsPath decryptedAbsPath chezmoi.AbsPath + preEditPlaintext []byte } var transparentlyDecryptedFiles []transparentlyDecryptedFile TARGET_REL_PATH: @@ -119,6 +121,7 @@ transparentlyDecryptedFile := transparentlyDecryptedFile{ sourceAbsPath: c.SourceDirAbsPath.Join(sourceRelPath.RelPath()), decryptedAbsPath: decryptedAbsPath, + preEditPlaintext: contents, } transparentlyDecryptedFiles = append(transparentlyDecryptedFiles, transparentlyDecryptedFile) editorArgs = append(editorArgs, decryptedAbsPath.String()) @@ -165,6 +168,13 @@ postEditFunc := func() error { for _, transparentlyDecryptedFile := range transparentlyDecryptedFiles { + postEditPlaintext, err := c.baseSystem.ReadFile(transparentlyDecryptedFile.decryptedAbsPath) + if err != nil { + return err + } + if bytes.Equal(postEditPlaintext, transparentlyDecryptedFile.preEditPlaintext) { + return nil + } contents, err := c.encryption.EncryptFile(transparentlyDecryptedFile.decryptedAbsPath) if err != nil { return err diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/githubtemplatefuncs.go new/chezmoi-2.52.0/internal/cmd/githubtemplatefuncs.go --- old/chezmoi-2.51.0/internal/cmd/githubtemplatefuncs.go 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/internal/cmd/githubtemplatefuncs.go 2024-08-07 22:11:15.000000000 +0200 @@ -37,19 +37,21 @@ } var ( - gitHubKeysStateBucket = []byte("gitHubLatestKeysState") - gitHubLatestReleaseStateBucket = []byte("gitHubLatestReleaseState") - gitHubReleasesStateBucket = []byte("gitHubReleasesState") - gitHubTagsStateBucket = []byte("gitHubTagsState") + gitHubKeysStateBucket = []byte("gitHubLatestKeysState") + gitHubLatestReleaseStateBucket = []byte("gitHubLatestReleaseState") + gitHubReleasesStateBucket = []byte("gitHubReleasesState") + gitHubTagsStateBucket = []byte("gitHubTagsState") + gitHubVersionReleaseStateBucket = []byte("gitHubVersionReleaseState") ) type gitHubData struct { - client *github.Client - clientErr error - keysCache map[string][]*github.Key - latestReleaseCache map[string]map[string]*github.RepositoryRelease - releasesCache map[string]map[string][]*github.RepositoryRelease - tagsCache map[string]map[string][]*github.RepositoryTag + client *github.Client + clientErr error + keysCache map[string][]*github.Key + versionReleaseCache map[string]map[string]map[string]*github.RepositoryRelease + latestReleaseCache map[string]map[string]*github.RepositoryRelease + releasesCache map[string]map[string][]*github.RepositoryRelease + tagsCache map[string]map[string][]*github.RepositoryTag } func (c *Config) gitHubKeysTemplateFunc(user string) []*github.Key { @@ -108,11 +110,7 @@ return allKeys } -func (c *Config) gitHubLatestReleaseAssetURLTemplateFunc(ownerRepo, pattern string) string { - release, err := c.gitHubLatestRelease(ownerRepo) - if err != nil { - panic(err) - } +func (c *Config) githubMatchingReleaseAssetURL(release *github.RepositoryRelease, pattern string) string { for _, asset := range release.Assets { if asset.Name == nil { continue @@ -127,6 +125,79 @@ return "" } +func (c *Config) gitHubLatestReleaseAssetURLTemplateFunc(ownerRepo, pattern string) string { + release, err := c.gitHubLatestRelease(ownerRepo) + if err != nil { + panic(err) + } + return c.githubMatchingReleaseAssetURL(release, pattern) +} + +func (c *Config) gitHubReleaseAssetURLTemplateFunc(ownerRepo, version, pattern string) string { + release, err := c.gitHubRelease(ownerRepo, version) + if err != nil { + panic(err) + } + return c.githubMatchingReleaseAssetURL(release, pattern) +} + +func (c *Config) gitHubRelease(ownerRepo, version string) (*github.RepositoryRelease, error) { + owner, repo, err := gitHubSplitOwnerRepo(ownerRepo) + if err != nil { + return nil, err + } + + if c.gitHub.versionReleaseCache == nil { + c.gitHub.versionReleaseCache = make(map[string]map[string]map[string]*github.RepositoryRelease) + } + if c.gitHub.versionReleaseCache[owner] == nil { + c.gitHub.versionReleaseCache[owner] = make(map[string]map[string]*github.RepositoryRelease) + } + if c.gitHub.versionReleaseCache[owner][repo] == nil { + c.gitHub.versionReleaseCache[owner][repo] = make(map[string]*github.RepositoryRelease) + } + + if release := c.gitHub.versionReleaseCache[owner][repo][version]; release != nil { + return release, nil + } + + now := time.Now() + gitHubVersionReleaseKey := []byte(owner + "/" + repo + "/" + version) + if c.GitHub.RefreshPeriod != 0 { + var gitHubVersionReleaseStateValue gitHubLatestReleaseState + switch ok, err := chezmoi.PersistentStateGet(c.persistentState, gitHubVersionReleaseStateBucket, gitHubVersionReleaseKey, &gitHubVersionReleaseStateValue); { + case err != nil: + return nil, err + case ok && now.Before(gitHubVersionReleaseStateValue.RequestedAt.Add(c.GitHub.RefreshPeriod)): + return gitHubVersionReleaseStateValue.Release, nil + } + } + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + gitHubClient, err := c.getGitHubClient(ctx) + if err != nil { + return nil, err + } + + release, _, err := gitHubClient.Repositories.GetReleaseByTag(ctx, owner, repo, version) + if err != nil { + return nil, err + } + + if err := chezmoi.PersistentStateSet(c.persistentState, gitHubVersionReleaseStateBucket, gitHubVersionReleaseKey, &gitHubLatestReleaseState{ + RequestedAt: now, + Release: release, + }); err != nil { + return nil, err + } + + c.gitHub.versionReleaseCache[owner][repo][version] = release + + return release, nil +} + func (c *Config) gitHubLatestRelease(ownerRepo string) (*github.RepositoryRelease, error) { owner, repo, err := gitHubSplitOwnerRepo(ownerRepo) if err != nil { @@ -185,6 +256,14 @@ if err != nil { panic(err) } + return release +} + +func (c *Config) gitHubReleaseTemplateFunc(ownerRepo, version string) *github.RepositoryRelease { + release, err := c.gitHubRelease(ownerRepo, version) + if err != nil { + panic(err) + } return release } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/licensecmd.go new/chezmoi-2.52.0/internal/cmd/licensecmd.go --- old/chezmoi-2.51.0/internal/cmd/licensecmd.go 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/internal/cmd/licensecmd.go 2024-08-07 22:11:15.000000000 +0200 @@ -4,6 +4,7 @@ "bytes" "github.com/charmbracelet/glamour" + "github.com/charmbracelet/glamour/styles" "github.com/spf13/cobra" "github.com/twpayne/chezmoi/v2/assets/chezmoi.io/docs" @@ -27,7 +28,7 @@ func (c *Config) runLicenseCmd(cmd *cobra.Command, args []string) error { renderer, err := glamour.NewTermRenderer( - glamour.WithStyles(glamour.ASCIIStyleConfig), + glamour.WithStyles(styles.ASCIIStyleConfig), glamour.WithWordWrap(80), ) if err != nil { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/readdcmd.go new/chezmoi-2.52.0/internal/cmd/readdcmd.go --- old/chezmoi-2.51.0/internal/cmd/readdcmd.go 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/internal/cmd/readdcmd.go 2024-08-07 22:11:15.000000000 +0200 @@ -4,7 +4,9 @@ "bytes" "fmt" "io/fs" + "runtime" "sort" + "time" "github.com/spf13/cobra" @@ -16,6 +18,23 @@ recursive bool } +// A fileInfo is a simple struct that implements the io/fs.FileInfo interface +// for the purpose of overriding the mode on Windows. +type fileInfo struct { + name string + size int64 + mode fs.FileMode + modTime time.Time + isDir bool +} + +func (fi *fileInfo) Name() string { return fi.name } +func (fi *fileInfo) Size() int64 { return fi.size } +func (fi *fileInfo) Mode() fs.FileMode { return fi.mode } +func (fi *fileInfo) ModTime() time.Time { return fi.modTime } +func (fi *fileInfo) IsDir() bool { return fi.isDir } +func (fi *fileInfo) Sys() any { return nil } // Sys always returns nil to avoid any inconsistency. + func (c *Config) newReAddCmd() *cobra.Command { reAddCmd := &cobra.Command{ Use: "re-add", @@ -105,8 +124,15 @@ if err != nil { return err } - if bytes.Equal(actualContents, targetContents) && actualStateFile.Perm() == targetStateFile.Perm(c.Umask) { - continue + if bytes.Equal(actualContents, targetContents) { + // On Windows, ignore permission changes as they are not preserved + // by the filesystem. On other systems, if there are no permission + // changes, continue. + // + // See https://github.com/twpayne/chezmoi/issues/3891. + if runtime.GOOS == "windows" || actualStateFile.Perm() == targetStateFile.Perm(c.Umask) { + continue + } } if c.interactive { @@ -140,6 +166,21 @@ } } + // On Windows, as the file mode is not preserved by the filesystem, copy + // the existing mode from the target file. Hack this in by replacing the + // io/fs.FileInfo of the destination file with a new io/fs.FileInfo with + // the mode of the target file. + // + // See https://github.com/twpayne/chezmoi/issues/3891. + if runtime.GOOS == "windows" { + destAbsPathInfo = &fileInfo{ + name: destAbsPathInfo.Name(), + size: destAbsPathInfo.Size(), + mode: targetStateFile.Perm(0), // Use the mode from the target. + modTime: destAbsPathInfo.ModTime(), + } + } + destAbsPathInfos := map[chezmoi.AbsPath]fs.FileInfo{ destAbsPath: destAbsPathInfo, } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/readdcmd_test.go new/chezmoi-2.52.0/internal/cmd/readdcmd_test.go --- old/chezmoi-2.51.0/internal/cmd/readdcmd_test.go 1970-01-01 01:00:00.000000000 +0100 +++ new/chezmoi-2.52.0/internal/cmd/readdcmd_test.go 2024-08-07 22:11:15.000000000 +0200 @@ -0,0 +1,40 @@ +package cmd + +import ( + "io/fs" + "runtime" + "testing" + + "github.com/alecthomas/assert/v2" + "github.com/twpayne/go-vfs/v5" + "github.com/twpayne/go-vfs/v5/vfst" + + "github.com/twpayne/chezmoi/v2/internal/chezmoitest" +) + +var _ fs.FileInfo = &fileInfo{} + +func TestIssue3891(t *testing.T) { + if runtime.GOOS != "windows" { + t.Skip("Windows only") + } + + chezmoitest.WithTestFS(t, map[string]any{ + "/home/user": map[string]any{ + "run.sh": "#!/bin/sh\n", + ".local/share/chezmoi": map[string]any{ + "executable_run.sh": "#!/bin/sh", + }, + }, + }, func(fileSystem vfs.FS) { + assert.NoError(t, newTestConfig(t, fileSystem).execute([]string{"re-add"})) + vfst.RunTests(t, fileSystem, "", + vfst.TestPath("/home/user/.local/share/chezmoi/executable_run.sh", + vfst.TestContentsString("#!/bin/sh\n"), + ), + vfst.TestPath("/home/user/.local/share/chezmoi/run.sh", + vfst.TestDoesNotExist(), + ), + ) + }) +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/statecmd.go new/chezmoi-2.52.0/internal/cmd/statecmd.go --- old/chezmoi-2.51.0/internal/cmd/statecmd.go 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/internal/cmd/statecmd.go 2024-08-07 22:11:15.000000000 +0200 @@ -171,14 +171,15 @@ func (c *Config) runStateDumpCmd(cmd *cobra.Command, args []string) error { data, err := chezmoi.PersistentStateData(c.persistentState, map[string][]byte{ - "configState": chezmoi.ConfigStateBucket, - "entryState": chezmoi.EntryStateBucket, - "gitHubKeysState": gitHubKeysStateBucket, - "gitHubLatestReleaseState": gitHubLatestReleaseStateBucket, - "gitHubReleasesState": gitHubReleasesStateBucket, - "gitHubTagsState": gitHubTagsStateBucket, - "gitRepoExternalState": chezmoi.GitRepoExternalStateBucket, - "scriptState": chezmoi.ScriptStateBucket, + "configState": chezmoi.ConfigStateBucket, + "entryState": chezmoi.EntryStateBucket, + "gitHubKeysState": gitHubKeysStateBucket, + "gitHubLatestReleaseState": gitHubLatestReleaseStateBucket, + "gitHubReleasesState": gitHubReleasesStateBucket, + "gitHubTagsState": gitHubTagsStateBucket, + "gitHubVersionReleaseState": gitHubVersionReleaseStateBucket, + "gitRepoExternalState": chezmoi.GitRepoExternalStateBucket, + "scriptState": chezmoi.ScriptStateBucket, }) if err != nil { return err diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/testdata/scripts/configstate.txtar new/chezmoi-2.52.0/internal/cmd/testdata/scripts/configstate.txtar --- old/chezmoi-2.51.0/internal/cmd/testdata/scripts/configstate.txtar 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/internal/cmd/testdata/scripts/configstate.txtar 2024-08-07 22:11:15.000000000 +0200 @@ -71,6 +71,7 @@ gitHubLatestReleaseState: {} gitHubReleasesState: {} gitHubTagsState: {} +gitHubVersionReleaseState: {} gitRepoExternalState: {} scriptState: {} -- home/user/.local/share/chezmoi/.chezmoi.toml.tmpl -- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/testdata/scripts/externalguess.txtar new/chezmoi-2.52.0/internal/cmd/testdata/scripts/externalguess.txtar --- old/chezmoi-2.51.0/internal/cmd/testdata/scripts/externalguess.txtar 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/internal/cmd/testdata/scripts/externalguess.txtar 2024-08-07 22:11:15.000000000 +0200 @@ -9,10 +9,10 @@ cmp $HOME/.dir/dir/file golden/dir/file # test that chezmoi sniffs the format of tar.bz2 files -exec tar -cjf www/archive.tar.bz2 archive/ -cp www/archive.tar.bz2 www/archive -exec chezmoi apply --force --refresh-externals -cmp $HOME/.dir/dir/file golden/dir/file +[exec:bzip2] exec tar -cjf www/archive.tar.bz2 archive/ +[exec:bzip2] cp www/archive.tar.bz2 www/archive +[exec:bzip2] exec chezmoi apply --force --refresh-externals +[exec:bzip2] cmp $HOME/.dir/dir/file golden/dir/file # test that chezmoi sniffs the format of tar.gz files exec tar -czf www/archive.tar.gz archive/ @@ -20,20 +20,18 @@ exec chezmoi apply --force --refresh-externals cmp $HOME/.dir/dir/file golden/dir/file -[!exec:zip] stop 'zip not found in $PATH' - # test that chezmoi sniffs the format of zip files -exec zip -r www/archive.zip archive -cp www/archive.zip www/archive -exec chezmoi apply --force --refresh-externals -cmp $HOME/.dir/dir/file golden/dir/file +[exec:zip] exec zip -r www/archive.zip archive +[exec:zip] cp www/archive.zip www/archive +[exec:zip] exec chezmoi apply --force --refresh-externals +[exec:zip] cmp $HOME/.dir/dir/file golden/dir/file chhome home2/user # test that chezmoi allows the format to be overridden -cp www/archive.zip www/archive2.tar.gz -exec chezmoi apply --force -cmp $HOME/.dir/dir/file golden/dir/file +[exec:zip] cp www/archive.zip www/archive2.tar.gz +[exec:zip] exec chezmoi apply --force +[exec:zip] cmp $HOME/.dir/dir/file golden/dir/file -- archive/dir/file -- # contents of dir/file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/testdata/scripts/githubtemplatefuncs.txtar new/chezmoi-2.52.0/internal/cmd/testdata/scripts/githubtemplatefuncs.txtar --- old/chezmoi-2.51.0/internal/cmd/testdata/scripts/githubtemplatefuncs.txtar 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/internal/cmd/testdata/scripts/githubtemplatefuncs.txtar 2024-08-07 22:11:15.000000000 +0200 @@ -16,9 +16,14 @@ exec chezmoi execute-template '{{ (index (gitHubTags "twpayne/chezmoi") 0).Name }}' stdout ^v2\. +# test gitHubRelease template function +exec chezmoi execute-template '{{ (gitHubRelease "twpayne/chezmoi" "v2.49.0").TagName }}' +stdout ^v2\.49\.0 + +# test gitHubReleaseAssetURL template function +[!windows] exec chezmoi execute-template '{{ gitHubReleaseAssetURL "twpayne/chezmoi" "v2.50.0" (printf "chezmoi-%s-%s" .chezmoi.os .chezmoi.arch) }}' +[!windows] stdout https://github.com/twpayne/chezmoi/releases/download/v2\.50\.0/chezmoi- + # test gitHubReleases template functions exec chezmoi execute-template '{{ (index (gitHubReleases "twpayne/chezmoi") 0).TagName }}' stdout ^v2\. - -# gitHubReleases -# gitHubTags diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/testdata/scripts/issue3887.txtar new/chezmoi-2.52.0/internal/cmd/testdata/scripts/issue3887.txtar --- old/chezmoi-2.51.0/internal/cmd/testdata/scripts/issue3887.txtar 1970-01-01 01:00:00.000000000 +0100 +++ new/chezmoi-2.52.0/internal/cmd/testdata/scripts/issue3887.txtar 2024-08-07 22:11:15.000000000 +0200 @@ -0,0 +1,21 @@ +[!exec:age] skip 'age not found in path' + +mkageconfig +mkgitconfig + +# add an initial encrypted file +exec chezmoi init +exec chezmoi add --encrypt ${HOME}${/}.encrypted +exec chezmoi git add . +exec chezmoi git commit -- -m 'initial commit' . + +# test that chezmoi edit on an encrypted file with no changes does not change the ciphertext +prependline ${CHEZMOICONFIGDIR}/chezmoi.toml 'edit.command = "true"' +exec chezmoi edit ${HOME}${/}.encrypted +exec chezmoi diff +! stdout . +exec chezmoi git diff +! stdout . + +-- home/user/.encrypted -- +plaintext diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/testdata/scripts/issue3891.txtar new/chezmoi-2.52.0/internal/cmd/testdata/scripts/issue3891.txtar --- old/chezmoi-2.51.0/internal/cmd/testdata/scripts/issue3891.txtar 1970-01-01 01:00:00.000000000 +0100 +++ new/chezmoi-2.52.0/internal/cmd/testdata/scripts/issue3891.txtar 2024-08-07 22:11:15.000000000 +0200 @@ -0,0 +1,10 @@ +[!windows] skip 'Windows only' + +# test that chezmoi re-add does not remove the executable_ attribute on Windows +exec chezmoi apply +exec chezmoi re-add --debug +exists $CHEZMOISOURCEDIR/executable_run.sh +! exists $CHEZMOISOURCEDIR/run.sh + +-- home/user/.local/share/chezmoi/executable_run.sh -- +#!/bin/sh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/testdata/scripts/state_unix.txtar new/chezmoi-2.52.0/internal/cmd/testdata/scripts/state_unix.txtar --- old/chezmoi-2.51.0/internal/cmd/testdata/scripts/state_unix.txtar 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/internal/cmd/testdata/scripts/state_unix.txtar 2024-08-07 22:11:15.000000000 +0200 @@ -44,6 +44,7 @@ gitHubLatestReleaseState: {} gitHubReleasesState: {} gitHubTagsState: {} +gitHubVersionReleaseState: {} gitRepoExternalState: {} scriptState: {} -- home/user/.local/share/chezmoi/run_once_script.sh -- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/testdata/scripts/state_windows.txtar new/chezmoi-2.52.0/internal/cmd/testdata/scripts/state_windows.txtar --- old/chezmoi-2.51.0/internal/cmd/testdata/scripts/state_windows.txtar 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/internal/cmd/testdata/scripts/state_windows.txtar 2024-08-07 22:11:15.000000000 +0200 @@ -25,6 +25,7 @@ gitHubLatestReleaseState: {} gitHubReleasesState: {} gitHubTagsState: {} +gitHubVersionReleaseState: {} gitRepoExternalState: {} scriptState: {} -- home/user/.local/share/chezmoi/run_once_script.cmd -- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmds/lint-whitespace/main.go new/chezmoi-2.52.0/internal/cmds/lint-whitespace/main.go --- old/chezmoi-2.51.0/internal/cmds/lint-whitespace/main.go 2024-07-15 21:36:30.000000000 +0200 +++ new/chezmoi-2.52.0/internal/cmds/lint-whitespace/main.go 2024-08-07 22:11:15.000000000 +0200 @@ -18,10 +18,9 @@ regexp.MustCompile(`\A\.git\z`), regexp.MustCompile(`\A\.idea\z`), regexp.MustCompile(`\A\.vagrant\z`), - regexp.MustCompile(`\A\.venv\z`), + regexp.MustCompile(`\b\.?venv\b`), regexp.MustCompile(`\A\.vscode\z`), regexp.MustCompile(`\ACOMMIT\z`), - regexp.MustCompile(`\Aassets/chezmoi\.io/\.venv\z`), regexp.MustCompile(`\Aassets/chezmoi\.io/site\z`), regexp.MustCompile(`\Aassets/scripts/install\.ps1\z`), regexp.MustCompile(`\Acompletions/chezmoi\.ps1\z`), ++++++ chezmoi.obsinfo ++++++ --- /var/tmp/diff_new_pack.dUDvqM/_old 2024-08-09 16:15:36.833310474 +0200 +++ /var/tmp/diff_new_pack.dUDvqM/_new 2024-08-09 16:15:36.837310641 +0200 @@ -1,5 +1,5 @@ name: chezmoi -version: 2.51.0 -mtime: 1721072190 -commit: 2a7845f4ffe2fd427c140711c0d7d46424747363 +version: 2.52.0 +mtime: 1723061475 +commit: 64f40d93ea1f1456a6788798b9e9c4813156d86e ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/chezmoi/vendor.tar.gz /work/SRC/openSUSE:Factory/.chezmoi.new.7232/vendor.tar.gz differ: char 5, line 1
participants (1)
-
Source-Sync