Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package chezmoi for openSUSE:Factory checked in at 2023-08-08 15:54:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/chezmoi (Old) and /work/SRC/openSUSE:Factory/.chezmoi.new.22712 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "chezmoi" Tue Aug 8 15:54:54 2023 rev:31 rq:1102765 version:2.37.0 Changes: -------- --- /work/SRC/openSUSE:Factory/chezmoi/chezmoi.changes 2023-08-01 15:38:46.745912905 +0200 +++ /work/SRC/openSUSE:Factory/.chezmoi.new.22712/chezmoi.changes 2023-08-08 15:55:04.253044524 +0200 @@ -1,0 +2,12 @@ +Mon Aug 7 17:15:09 UTC 2023 - Filippo Bonazzi <filippo.bona...@suse.com> + +- Update to version 2.37.0: + * feat: Read personal mackup config files + * feat: Add support for Doppler + * feat: Extend re-add command to accept an optional list of targets + * fix: Avoid concurrent map access when evaluating multiple templates + * feat: Add isExecutable template function + * chore: Fix isExecutable tests on Windows + * chore: Update dependencies + +------------------------------------------------------------------- Old: ---- chezmoi-2.36.1.obscpio New: ---- chezmoi-2.37.0.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ chezmoi.spec ++++++ --- /var/tmp/diff_new_pack.PfMxWL/_old 2023-08-08 15:55:05.409051759 +0200 +++ /var/tmp/diff_new_pack.PfMxWL/_new 2023-08-08 15:55:05.425051859 +0200 @@ -17,7 +17,7 @@ Name: chezmoi -Version: 2.36.1 +Version: 2.37.0 Release: 0 Summary: A multi-host manager for dotfiles License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.PfMxWL/_old 2023-08-08 15:55:05.473052159 +0200 +++ /var/tmp/diff_new_pack.PfMxWL/_new 2023-08-08 15:55:05.473052159 +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.36.1</param> + <param name="revision">v2.37.0</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> </service> ++++++ chezmoi-2.36.1.obscpio -> chezmoi-2.37.0.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/.github/workflows/main.yml new/chezmoi-2.37.0/.github/workflows/main.yml --- old/chezmoi-2.36.1/.github/workflows/main.yml 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/.github/workflows/main.yml 2023-08-06 18:42:18.000000000 +0200 @@ -11,7 +11,7 @@ env: ACTIONLINT_VERSION: 1.6.25 AGE_VERSION: 1.1.1 - GO_VERSION: 1.20.6 + GO_VERSION: 1.20.7 GOFUMPT_VERSION: 0.4.0 GOLANGCI_LINT_VERSION: 1.53.3 GOLINES_VERSION: 0.11.0 @@ -51,10 +51,10 @@ - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 with: fetch-depth: 1 - - uses: github/codeql-action/init@f6e388ebf0efc915c6c5b165b019ee61a6746a38 + - uses: github/codeql-action/init@0ba4244466797eb048eb91a6cd43d5c03ca8bd05 with: languages: go - - uses: github/codeql-action/analyze@f6e388ebf0efc915c6c5b165b019ee61a6746a38 + - uses: github/codeql-action/analyze@0ba4244466797eb048eb91a6cd43d5c03ca8bd05 misspell: runs-on: ubuntu-22.04 steps: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/assets/chezmoi.io/docs/reference/commands/re-add.md new/chezmoi-2.37.0/assets/chezmoi.io/docs/reference/commands/re-add.md --- old/chezmoi-2.36.1/assets/chezmoi.io/docs/reference/commands/re-add.md 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/assets/chezmoi.io/docs/reference/commands/re-add.md 2023-08-06 18:42:18.000000000 +0200 @@ -1,7 +1,11 @@ -# `re-add` +# `re-add` [*target*...] -Re-add all modified files in the target state. chezmoi will not overwrite -templates, and all entries that are not files are ignored. +Re-add modified files in the target state, preserving any `encrypted_` +attributes. chezmoi will not overwrite templates, and all entries that are not +files are ignored. + +If no *target*s are specified then all modified files are re-added. If one or +more *target*s are given then only those targets are re-added. !!! hint @@ -11,4 +15,5 @@ ```console $ chezmoi re-add + $ chezmoi re-add ~/.bashrc ``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/assets/chezmoi.io/docs/reference/configuration-file/variables.md.yaml new/chezmoi-2.37.0/assets/chezmoi.io/docs/reference/configuration-file/variables.md.yaml --- old/chezmoi-2.36.1/assets/chezmoi.io/docs/reference/configuration-file/variables.md.yaml 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/assets/chezmoi.io/docs/reference/configuration-file/variables.md.yaml 2023-08-06 18:42:18.000000000 +0200 @@ -147,6 +147,19 @@ type: bool default: '`true`' description: Show script contents + doppler: + args: + type: '[]string' + description: Extra args to Doppler CLI command + command: + default: '`doppler`' + description: Doppler CLI command + config: + type: string + description: Default config (aka environment) if none is specified + project: + type: string + description: Default project name if none is specified edit: apply: type: bool diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/assets/chezmoi.io/docs/reference/templates/doppler/doppler.md new/chezmoi-2.37.0/assets/chezmoi.io/docs/reference/templates/doppler/doppler.md --- old/chezmoi-2.36.1/assets/chezmoi.io/docs/reference/templates/doppler/doppler.md 1970-01-01 01:00:00.000000000 +0100 +++ new/chezmoi-2.37.0/assets/chezmoi.io/docs/reference/templates/doppler/doppler.md 2023-08-06 18:42:18.000000000 +0200 @@ -0,0 +1,15 @@ +# `doppler` *key* [*project* [*config*]] + +`doppler` returns the secret for the specified project and configuration +from [Doppler](https://www.doppler.com) using `doppler secrets download --json --no-file`. + +If either of *project* or *config* are empty or +omitted, then chezmoi will use the value from the +`doppler.project` and +`doppler.config` config variables if they are set and not empty. + +!!! example + + ``` + {{ doppler "SECRET_NAME" "project_name" "configuration_name" }} + ``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/assets/chezmoi.io/docs/reference/templates/doppler/dopplerProjectJson.md new/chezmoi-2.37.0/assets/chezmoi.io/docs/reference/templates/doppler/dopplerProjectJson.md --- old/chezmoi-2.36.1/assets/chezmoi.io/docs/reference/templates/doppler/dopplerProjectJson.md 1970-01-01 01:00:00.000000000 +0100 +++ new/chezmoi-2.37.0/assets/chezmoi.io/docs/reference/templates/doppler/dopplerProjectJson.md 2023-08-06 18:42:18.000000000 +0200 @@ -0,0 +1,16 @@ +# `dopplerProjectJson` [*project* [*config*]] + +`dopplerProjectJson` returns the secret for the specified project and configuration +from [Doppler](https://www.doppler.com) using `doppler secrets download --json --no-file` +as `json` structured data. + +If either of *project* or *config* are empty or +omitted, then chezmoi will use the value from the +`doppler.project` and +`doppler.config` config variables if they are set and not empty. + +!!! example + + ``` + {{ (dopplerProjectJson "project_name" "configuration_name").SECRET_NAME }} + ``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/assets/chezmoi.io/docs/reference/templates/doppler/index.md new/chezmoi-2.37.0/assets/chezmoi.io/docs/reference/templates/doppler/index.md --- old/chezmoi-2.36.1/assets/chezmoi.io/docs/reference/templates/doppler/index.md 1970-01-01 01:00:00.000000000 +0100 +++ new/chezmoi-2.37.0/assets/chezmoi.io/docs/reference/templates/doppler/index.md 2023-08-06 18:42:18.000000000 +0200 @@ -0,0 +1,9 @@ +# Doppler + +chezmoi includes support for [Doppler](https://www.doppler.com) using the `doppler` +CLI to expose data through the `doppler` and `dopplerProjectJson` +template functions. + +!!! warning + + Doppler is in beta and chezmoi's interface to it may change. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/assets/chezmoi.io/docs/reference/templates/functions/isExecutable.md new/chezmoi-2.37.0/assets/chezmoi.io/docs/reference/templates/functions/isExecutable.md --- old/chezmoi-2.36.1/assets/chezmoi.io/docs/reference/templates/functions/isExecutable.md 1970-01-01 01:00:00.000000000 +0100 +++ new/chezmoi-2.37.0/assets/chezmoi.io/docs/reference/templates/functions/isExecutable.md 2023-08-06 18:42:18.000000000 +0200 @@ -0,0 +1,11 @@ +# `isExecutable` *file* + +`isExecutable` returns true if a file is executable. + +!!! example + + ``` + {{ if isExecutable "/bin/echo" }} + # echo is executable + {{ end }} + ``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/assets/chezmoi.io/docs/user-guide/password-managers/custom.md new/chezmoi-2.37.0/assets/chezmoi.io/docs/user-guide/password-managers/custom.md --- old/chezmoi-2.36.1/assets/chezmoi.io/docs/user-guide/password-managers/custom.md 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/assets/chezmoi.io/docs/user-guide/password-managers/custom.md 2023-08-06 18:42:18.000000000 +0200 @@ -7,14 +7,15 @@ output respectively. All of the above secret managers can be supported in this way: -| Secret Manager | `secret.command` | Template skeleton | -| ----------------- | ---------------- | -------------------------------------------------- | -| 1Password | `op` | `{{ secretJSON "get" "item" "$ID" }}` | -| Bitwarden | `bw` | `{{ secretJSON "get" "$ID" }}` | -| HashiCorp Vault | `vault` | `{{ secretJSON "kv" "get" "-format=json" "$ID" }}` | -| HCP Vault Secrets | `vlt` | `{{ secret "secrets" "get" "--plaintext" "$ID }}` | -| LastPass | `lpass` | `{{ secretJSON "show" "--json" "$ID" }}` | -| KeePassXC | `keepassxc-cli` | Not possible (interactive command only) | -| Keeper | `keeper` | `{{ secretJSON "get" "--format=json" "$ID" }}` | -| pass | `pass` | `{{ secret "show" "$ID" }}` | -| passhole | `ph` | `{{ secret "$ID" "password" }}` | +| Secret Manager | `secret.command` | Template skeleton | +| ----------------- | ---------------- | ---------------------------------------------------------------- | +| 1Password | `op` | `{{ secretJSON "get" "item" "$ID" }}` | +| Bitwarden | `bw` | `{{ secretJSON "get" "$ID" }}` | +| Doppler | `doppler` | `{{ secretJSON "secrets" "download" "--json" "--no-file" }}` | +| HashiCorp Vault | `vault` | `{{ secretJSON "kv" "get" "-format=json" "$ID" }}` | +| HCP Vault Secrets | `vlt` | `{{ secret "secrets" "get" "--plaintext" "$ID }}` | +| LastPass | `lpass` | `{{ secretJSON "show" "--json" "$ID" }}` | +| KeePassXC | `keepassxc-cli` | Not possible (interactive command only) | +| Keeper | `keeper` | `{{ secretJSON "get" "--format=json" "$ID" }}` | +| pass | `pass` | `{{ secret "show" "$ID" }}` | +| passhole | `ph` | `{{ secret "$ID" "password" }}` | diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/assets/chezmoi.io/docs/user-guide/password-managers/doppler.md new/chezmoi-2.37.0/assets/chezmoi.io/docs/user-guide/password-managers/doppler.md --- old/chezmoi-2.36.1/assets/chezmoi.io/docs/user-guide/password-managers/doppler.md 1970-01-01 01:00:00.000000000 +0100 +++ new/chezmoi-2.37.0/assets/chezmoi.io/docs/user-guide/password-managers/doppler.md 2023-08-06 18:42:18.000000000 +0200 @@ -0,0 +1,58 @@ +# Doppler + +chezmoi includes support for [Doppler](https://www.doppler.com) using the `doppler` +CLI to expose data through the `doppler` and `dopplerProjectJson` +template functions. + +!!! warning + + Doppler is in beta and chezmoi's interface to it may change. + Note: Doppler only supports secrets in the `UPPER_SNAKE_CASE` format. + +Log in using: + +```console +$ doppler login +``` + +It is now possible to interact with the `doppler` CLI in two different, but similar, ways. +Both make use of the command `doppler secrets download --json --no-file` behind the scenes +but present a different experience. + +The `doppler` function is used in the following way: +``` +{{ doppler "SECRET_NAME" "project name" "config" }} +``` + +All secrets from the specified project/config combination are cached for subsequent access and +will not requery the `doppler` CLI for another secret in the same project/config. +This caching mechanism enhances performance and reduces unnecessary CLI calls. + +The `dopplerProjectJson` presents the secrets as `json` structured data and is used in the following +way: +``` +{{ (dopplerProjectJson "project" "config").PASSWORD }} +``` + +Additionally one can set the default values for the project and +config (aka environment) in your config file, for example: + +```toml title="~/.config/chezmoi/chezmoi.toml" +[doppler] + project = "my-project" + config = "dev" +``` +With these default values, you can omit them in the call to both `doppler` and `dopplerProjectJson`, +for example: +``` +{{ doppler "SECRET_NAME" }} +{{ dopplerProjectJson.SECRET_NAME }} +``` + +It is important to note that neither of the above parse any individual secret as `json`. +This can be achieved by using the `fromJson` function, for example: +``` +{{ (doppler "SECRET_NAME" | fromJson).created_by.email_address }} +{{ (dopplerProjectJson.SECRET_NAME | fromJson).created_by.email_address }} +``` +Obviously the secret would have to be saved in `json` format for this to work as expected. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/assets/chezmoi.io/docs/what-does-chezmoi-do.md new/chezmoi-2.37.0/assets/chezmoi.io/docs/what-does-chezmoi-do.md --- old/chezmoi-2.36.1/assets/chezmoi.io/docs/what-does-chezmoi-do.md 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/assets/chezmoi.io/docs/what-does-chezmoi-do.md 2023-08-06 18:42:18.000000000 +0200 @@ -46,8 +46,8 @@ Manager](https://aws.amazon.com/secrets-manager/), [Azure Key Vault](https://learn.microsoft.com/en-us/azure/key-vault/general/), [Bitwarden](https://bitwarden.com/), [Dashlane](https://www.dashlane.com/), -[gopass](https://www.gopass.pw/), [HCP Vault -Secrets](https://developer.hashicorp.com/hcp/docs/vault-secrets), +[Doppler](https://www.doppler.com), [gopass](https://www.gopass.pw/), +[HCP Vault Secrets](https://developer.hashicorp.com/hcp/docs/vault-secrets), [KeePassXC](https://keepassxc.org/), [Keeper](https://www.keepersecurity.com/), [LastPass](https://lastpass.com/), [pass](https://www.passwordstore.org/), [passhole](https://github.com/Evidlo/passhole), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/assets/chezmoi.io/mkdocs.yml new/chezmoi-2.37.0/assets/chezmoi.io/mkdocs.yml --- old/chezmoi-2.36.1/assets/chezmoi.io/mkdocs.yml 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/assets/chezmoi.io/mkdocs.yml 2023-08-06 18:42:18.000000000 +0200 @@ -195,6 +195,7 @@ - include: reference/templates/functions/include.md - includeTemplate: reference/templates/functions/includeTemplate.md - ioreg: reference/templates/functions/ioreg.md + - isExecutable: reference/templates/functions/isExecutable.md - joinPath: reference/templates/functions/joinPath.md - jq: reference/templates/functions/jq.md - lookPath: reference/templates/functions/lookPath.md @@ -251,6 +252,10 @@ - reference/templates/dashlane-functions/index.md - dashlaneNote: reference/templates/dashlane-functions/dashlaneNote.md - dashlanePassword: reference/templates/dashlane-functions/dashlanePassword.md + - Doppler functions: + - reference/templates/doppler-functions/index.md + - doppler: reference/templates/doppler-functions/doppler.md + - dopplerProjectJson: reference/templates/doppler-functions/dopplerProjectJson.md - ejson functions: - reference/templates/ejson-functions/index.md - ejsonDecrypt: reference/templates/ejson-functions/ejsonDecrypt.md diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/go.mod new/chezmoi-2.37.0/go.mod --- old/chezmoi-2.36.1/go.mod 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/go.mod 2023-08-06 18:42:18.000000000 +0200 @@ -9,9 +9,9 @@ github.com/Masterminds/sprig/v3 v3.2.3 github.com/Shopify/ejson v1.4.1 github.com/alecthomas/assert/v2 v2.3.0 - github.com/aws/aws-sdk-go-v2 v1.19.1 - github.com/aws/aws-sdk-go-v2/config v1.18.30 - github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.19.12 + github.com/aws/aws-sdk-go-v2 v1.20.0 + github.com/aws/aws-sdk-go-v2/config v1.18.32 + github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.20.1 github.com/bmatcuk/doublestar/v4 v4.6.0 github.com/bradenhilton/mozillainstallhash v1.0.1 github.com/charmbracelet/bubbles v0.16.1 @@ -31,7 +31,7 @@ github.com/muesli/termenv v0.15.2 github.com/pelletier/go-toml/v2 v2.0.9 github.com/rogpeppe/go-internal v1.11.0 - github.com/rs/zerolog v1.29.1 + github.com/rs/zerolog v1.30.0 github.com/sergi/go-diff v1.1.0 github.com/spf13/cobra v1.7.0 github.com/spf13/pflag v1.0.5 @@ -44,12 +44,12 @@ github.com/zalando/go-keyring v0.2.3 go.etcd.io/bbolt v1.3.7 go.uber.org/multierr v1.11.0 - golang.org/x/crypto v0.11.0 - golang.org/x/exp v0.0.0-20230725093048-515e97ebf090 - golang.org/x/oauth2 v0.10.0 + golang.org/x/crypto v0.12.0 + golang.org/x/exp v0.0.0-20230801115018-d63ba01acd4b + golang.org/x/oauth2 v0.11.0 golang.org/x/sync v0.3.0 - golang.org/x/sys v0.10.0 - golang.org/x/term v0.10.0 + golang.org/x/sys v0.11.0 + golang.org/x/term v0.11.0 gopkg.in/ini.v1 v1.67.0 gopkg.in/yaml.v3 v3.0.1 howett.net/plist v1.0.0 @@ -61,7 +61,7 @@ github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v0.8.0 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.1.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.2.1 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect @@ -71,16 +71,16 @@ github.com/alecthomas/repr v0.2.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.13.29 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.6 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.36 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.30 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.3.37 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.30 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.12.14 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.14 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.20.1 // indirect - github.com/aws/smithy-go v1.13.5 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.13.31 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.7 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.37 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.31 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.3.38 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.31 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.13.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.1 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.21.1 // indirect + github.com/aws/smithy-go v1.14.0 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/aymerick/douceur v0.2.0 // indirect github.com/bradenhilton/cityhash v1.0.0 // indirect @@ -95,7 +95,7 @@ github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.4.1 // indirect github.com/godbus/dbus/v5 v5.1.0 // indirect - github.com/golang-jwt/jwt/v4 v4.5.0 // indirect + github.com/golang-jwt/jwt/v5 v5.0.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/google/btree v1.1.2 // indirect @@ -133,9 +133,9 @@ github.com/yuin/goldmark v1.5.5 // indirect github.com/yuin/goldmark-emoji v1.0.2 // indirect golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.12.0 // indirect - golang.org/x/text v0.11.0 // indirect - golang.org/x/tools v0.11.0 // indirect + golang.org/x/net v0.14.0 // indirect + golang.org/x/text v0.12.0 // indirect + golang.org/x/tools v0.11.1 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/go.sum new/chezmoi-2.37.0/go.sum --- old/chezmoi-2.36.1/go.sum 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/go.sum 2023-08-06 18:42:18.000000000 +0200 @@ -18,8 +18,8 @@ github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.0.0/go.mod h1:w2K61Z8eppIuGbQRx1SKYld2Lrr5vrGvnUwWAhF4nso= github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v0.8.0 h1:T028gtTPiYt/RMUfs8nVsAL7FDQrfLlrm/NnRG/zcC4= github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v0.8.0/go.mod h1:cw4zVQgBby0Z5f2v0itn6se2dDP17nTjbZFXW5uPyHA= -github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 h1:OBhqkivkhkMqLPymWEppkm7vgPQY2XsHoEkaMQ0AdZY= -github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.0 h1:HCc0+LpPfpCKs6LGGLAhwBARt9632unrVcI6i8s/8os= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.0/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= 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.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= @@ -50,32 +50,32 @@ 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.19.1 h1:STs0lbbpXu3byTPcnRLghs2DH0yk9qKDo27TyyJSKsM= -github.com/aws/aws-sdk-go-v2 v1.19.1/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= -github.com/aws/aws-sdk-go-v2/config v1.18.30 h1:TTAXQIn31qYFUQjkW6siVrRTX1ux+sADZDOe3jsZcMg= -github.com/aws/aws-sdk-go-v2/config v1.18.30/go.mod h1:+YogjT7e/t9JVu/sOnZZgxTge1G+bPNk8zOaI0QIQvE= -github.com/aws/aws-sdk-go-v2/credentials v1.13.29 h1:KNgCpThGuZyCjq9EuuqoLDenKKMwO/x1Xx01ckDa7VI= -github.com/aws/aws-sdk-go-v2/credentials v1.13.29/go.mod h1:VMq1LcmSEa9qxBlOCYTjVuGJWEEzhGmgL552jQsmhss= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.6 h1:kortK122LvTU34CGX/F9oJpelXKkEA2j/MW48II+8+8= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.6/go.mod h1:k7IPHyHNIASI0m0RwOmCjWOTtgG+J0raqwuHH8WhWJE= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.36 h1:kbk81RlPoC6e4co7cQx2FAvH9TgbzxIqCqiosAFiB+w= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.36/go.mod h1:T8Jsn/uNL/AFOXrVYQ1YQaN1r9gN34JU1855/Lyjv+o= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.30 h1:lMl8S5SB8jNCB+Sty2Em4lnu3IJytceHQd7qbmfqKL0= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.30/go.mod h1:v3GSCnFxbHzt9dlWBqvA1K1f9lmWuf4ztupZBCAIVs4= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.37 h1:BXiqvN7WuV/pMhz8CivhO8cG8icJcjnjHumif4ukQ0c= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.37/go.mod h1:d4GZ62cjnz/hjKFdAu11gAwK73bdhqaFv2O4J1gaqIs= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.30 h1:UcVZxLVNY4yayCmiG94Ge3l2qbc5WEB/oa4RmjoQEi0= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.30/go.mod h1:wPffyJiWWtHwvpFyn23WjAjVjMnlQOQrl02+vutBh3Y= -github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.19.12 h1:2C2a9VVs2Ob1I09GsmsKVvmlw5aebPj4yGfJX8EWMrk= -github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.19.12/go.mod h1:cglZ7TL22WrrkFCyDqD0X8GrByvmkOXXfkcRjj0ZkVA= -github.com/aws/aws-sdk-go-v2/service/sso v1.12.14 h1:gUjz7trfz9qBm0AlkKTvJHBXELi1wvw+2LA9GfD2AsM= -github.com/aws/aws-sdk-go-v2/service/sso v1.12.14/go.mod h1:9kfRdJgLCbnyeqZ/DpaSwcgj9ZDYLfRpe8Sze+NrYfQ= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.14 h1:8bEtxV5UT9ucdWGXfZ7CM3caQhSHGjWnTHt0OeF7m7s= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.14/go.mod h1:nd9BG2UnexN2sDx/mk2Jd6pf3d2E61AiA8m8Fdvdx8Y= -github.com/aws/aws-sdk-go-v2/service/sts v1.20.1 h1:U7h9CPoyMfVoN5jUglB0LglCMP10AK4vMBsbsCKM8Yw= -github.com/aws/aws-sdk-go-v2/service/sts v1.20.1/go.mod h1:BUHusg4cOA1TFGegj7x8/eoWrbdHzJfoMrXcbMQAG0k= -github.com/aws/smithy-go v1.13.5 h1:hgz0X/DX0dGqTYpGALqXJoRKRj5oQ7150i5FdTePzO8= -github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= +github.com/aws/aws-sdk-go-v2 v1.20.0 h1:INUDpYLt4oiPOJl0XwZDK2OVAVf0Rzo+MGVTv9f+gy8= +github.com/aws/aws-sdk-go-v2 v1.20.0/go.mod h1:uWOr0m0jDsiWw8nnXiqZ+YG6LdvAlGYDLLf2NmHZoy4= +github.com/aws/aws-sdk-go-v2/config v1.18.32 h1:tqEOvkbTxwEV7hToRcJ1xZRjcATqwDVsWbAscgRKyNI= +github.com/aws/aws-sdk-go-v2/config v1.18.32/go.mod h1:U3ZF0fQRRA4gnbn9GGvOWLoT2EzzZfAWeKwnVrm1rDc= +github.com/aws/aws-sdk-go-v2/credentials v1.13.31 h1:vJyON3lG7R8VOErpJJBclBADiWTwzcwdkQpTKx8D2sk= +github.com/aws/aws-sdk-go-v2/credentials v1.13.31/go.mod h1:T4sESjBtY2lNxLgkIASmeP57b5j7hTQqCbqG0tWnxC4= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.7 h1:X3H6+SU21x+76LRglk21dFRgMTJMa5QcpW+SqUf5BBg= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.7/go.mod h1:3we0V09SwcJBzNlnyovrR2wWJhWmVdqAsmVs4uronv8= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.37 h1:zr/gxAZkMcvP71ZhQOcvdm8ReLjFgIXnIn0fw5AM7mo= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.37/go.mod h1:Pdn4j43v49Kk6+82spO3Tu5gSeQXRsxo56ePPQAvFiA= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.31 h1:0HCMIkAkVY9KMgueD8tf4bRTUanzEYvhw7KkPXIMpO0= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.31/go.mod h1:fTJDMe8LOFYtqiFFFeHA+SVMAwqLhoq0kcInYoLa9Js= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.38 h1:+i1DOFrW3YZ3apE45tCal9+aDKK6kNEbW6Ib7e1nFxE= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.38/go.mod h1:1/jLp0OgOaWIetycOmycW+vYTYgTZFPttJQRgsI1PoU= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.31 h1:auGDJ0aLZahF5SPvkJ6WcUuX7iQ7kyl2MamV7Tm8QBk= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.31/go.mod h1:3+lloe3sZuBQw1aBc5MyndvodzQlyqCZ7x1QPDHaWP4= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.20.1 h1:AD8gRAXAXDU9+XTm0Q3D+NBsMCX4TlpN/qnNYbbQLO4= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.20.1/go.mod h1:aFRHxQ3V4bs/uVQYpg8Wm6szKWuB2KnraKcIGp5JS/I= +github.com/aws/aws-sdk-go-v2/service/sso v1.13.1 h1:DSNpSbfEgFXRV+IfEcKE5kTbqxm+MeF5WgyeRlsLnHY= +github.com/aws/aws-sdk-go-v2/service/sso v1.13.1/go.mod h1:TC9BubuFMVScIU+TLKamO6VZiYTkYoEHqlSQwAe2omw= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.1 h1:hd0SKLMdOL/Sl6Z0np1PX9LeH2gqNtBe0MhTedA8MGI= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.1/go.mod h1:XO/VcyoQ8nKyKfFW/3DMsRQXsfh/052tHTWmg3xBXRg= +github.com/aws/aws-sdk-go-v2/service/sts v1.21.1 h1:pAOJj+80tC8sPVgSDHzMYD6KLWsaLQ1kZw31PTeORbs= +github.com/aws/aws-sdk-go-v2/service/sts v1.21.1/go.mod h1:G8SbvL0rFk4WOJroU8tKBczhsbhj2p/YY7qeJezJ3CI= +github.com/aws/smithy-go v1.14.0 h1:+X90sB94fizKjDmwb4vyl2cTTPXTE5E2G/1mjByb0io= +github.com/aws/smithy-go v1.14.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/aymanbagabas/go-osc52 v1.0.3 h1:DTwqENW7X9arYimJrPeGZcV0ln14sGMt3pHZspWD+Mg= github.com/aymanbagabas/go-osc52 v1.0.3/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= @@ -150,6 +150,8 @@ github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= +github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= @@ -288,10 +290,10 @@ github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= -github.com/rs/xid v1.4.0 h1:qd7wPTDkN6KQx2VmMBLrpHkiyQwgFXRnkOLacUiaSNY= -github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.29.1 h1:cO+d60CHkknCbvzEWxP0S9K6KqyTjrCNUy1LdQLCGPc= -github.com/rs/zerolog v1.29.1/go.mod h1:Le6ESbR7hc+DP6Lt1THiV8CQSdkkNrd3R0XbEgp3ZBU= +github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.30.0 h1:SymVODrcRsaRaSInD9yQtKbtWqwsfoPcRff/oRXLj4c= +github.com/rs/zerolog v1.30.0/go.mod h1:/tk+P47gFdPXq4QYjvCmT5/Gsug2nagsFWBWhAiSi1w= 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/sahilm/fuzzy v0.1.0 h1:FzWGaw2Opqyu+794ZQ9SYifWv2EIXpwP4q8dY1kDAwI= @@ -372,10 +374,10 @@ golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= -golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= -golang.org/x/exp v0.0.0-20230725093048-515e97ebf090 h1:Di6/M8l0O2lCLc6VVRWhgCiApHV8MnQurBnFSHsQtNY= -golang.org/x/exp v0.0.0-20230725093048-515e97ebf090/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/exp v0.0.0-20230801115018-d63ba01acd4b h1:r+vk0EmXNmekl0S0BascoeeoHk/L7wmaW2QF90K+kYI= +golang.org/x/exp v0.0.0-20230801115018-d63ba01acd4b/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= 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.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= @@ -389,10 +391,10 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= -golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8= -golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= +golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/oauth2 v0.11.0 h1:vPL4xzxBM4niKCW6g9whtaWVXTJf1U5e4aZxxFx/gbU= +golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= 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= @@ -418,15 +420,15 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= -golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= +golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -435,14 +437,14 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= -golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= +golang.org/x/tools v0.11.1 h1:ojD5zOW8+7dOGzdnNgersm8aPfcDjhMp12UfG93NIMc= +golang.org/x/tools v0.11.1/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/internal/chezmoi/chezmoi_unix.go new/chezmoi-2.37.0/internal/chezmoi/chezmoi_unix.go --- old/chezmoi-2.36.1/internal/chezmoi/chezmoi_unix.go 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/internal/chezmoi/chezmoi_unix.go 2023-08-06 18:42:18.000000000 +0200 @@ -15,8 +15,8 @@ unix.Umask(int(Umask)) } -// isExecutable returns if fileInfo is executable. -func isExecutable(fileInfo fs.FileInfo) bool { +// IsExecutable returns if fileInfo is executable. +func IsExecutable(fileInfo fs.FileInfo) bool { return fileInfo.Mode().Perm()&0o111 != 0 } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/internal/chezmoi/chezmoi_windows.go new/chezmoi-2.37.0/internal/chezmoi/chezmoi_windows.go --- old/chezmoi-2.36.1/internal/chezmoi/chezmoi_windows.go 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/internal/chezmoi/chezmoi_windows.go 2023-08-06 18:42:18.000000000 +0200 @@ -2,13 +2,31 @@ import ( "io/fs" + "os" + "path/filepath" + "strings" + + "golang.org/x/exp/slices" ) const nativeLineEnding = "\r\n" -// isExecutable returns false on Windows. -func isExecutable(fileInfo fs.FileInfo) bool { - return false +var pathExts = strings.Split(os.Getenv("PATHEXT"), string(filepath.ListSeparator)) + +// IsExecutable checks if the file is a regular file and has an extension listed +// in the PATHEXT environment variable as per +// https://www.nextofwindows.com/what-is-pathext-environment-variable-in-windows. +func IsExecutable(fileInfo fs.FileInfo) bool { + if !fileInfo.Mode().IsRegular() { + return false + } + ext := filepath.Ext(fileInfo.Name()) + if ext == "" { + return false + } + return slices.ContainsFunc(pathExts, func(pathExt string) bool { + return strings.EqualFold(pathExt, ext) + }) } // isPrivate returns false on Windows. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/internal/chezmoi/sourcestate.go new/chezmoi-2.37.0/internal/chezmoi/sourcestate.go --- old/chezmoi-2.36.1/internal/chezmoi/sourcestate.go 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/internal/chezmoi/sourcestate.go 2023-08-06 18:42:18.000000000 +0200 @@ -27,6 +27,7 @@ "time" "github.com/coreos/go-semver/semver" + "github.com/mitchellh/copystructure" "github.com/rs/zerolog" "github.com/rs/zerolog/log" vfs "github.com/twpayne/go-vfs/v4" @@ -764,11 +765,10 @@ } } - // Temporarily set .chezmoi.sourceFile to the name of the template. + // Set .chezmoi.sourceFile to the name of the template. templateData := s.TemplateData() if chezmoiTemplateData, ok := templateData["chezmoi"].(map[string]any); ok { chezmoiTemplateData["sourceFile"] = options.Name - defer delete(chezmoiTemplateData, "sourceFile") } return tmpl.Execute(templateData) @@ -1278,7 +1278,7 @@ return targetRelPaths } -// TemplateData returns s's template data. +// TemplateData returns a copy of s's template data. func (s *SourceState) TemplateData() map[string]any { if s.templateData == nil { s.templateData = make(map[string]any) @@ -1289,7 +1289,11 @@ RecursiveMerge(s.templateData, s.userTemplateData) RecursiveMerge(s.templateData, s.priorityTemplateData) } - return s.templateData + templateData, err := copystructure.Copy(s.templateData) + if err != nil { + panic(err) + } + return templateData.(map[string]any) //nolint:forcetypeassert } // addExternal adds external source entries to s. @@ -1857,10 +1861,6 @@ if chezmoiTemplateData, ok := templateData["chezmoi"].(map[string]any); ok { chezmoiTemplateData["stdin"] = string(currentContents) chezmoiTemplateData["sourceFile"] = sourceFile - defer func() { - delete(chezmoiTemplateData, "stdin") - delete(chezmoiTemplateData, "sourceFile") - }() } contents, err = tmpl.Execute(templateData) @@ -2092,7 +2092,7 @@ fileAttr := FileAttr{ TargetName: fileInfo.Name(), Encrypted: options.Encrypt, - Executable: isExecutable(fileInfo), + Executable: IsExecutable(fileInfo), Private: isPrivate(fileInfo), ReadOnly: isReadOnly(fileInfo), Template: options.Template, @@ -2316,7 +2316,7 @@ TargetName: fileInfo.Name(), Type: SourceFileTypeFile, Empty: fileInfo.Size() == 0, - Executable: isExecutable(fileInfo), + Executable: IsExecutable(fileInfo), Private: isPrivate(fileInfo), ReadOnly: isReadOnly(fileInfo), } @@ -2448,7 +2448,7 @@ TargetName: fileInfo.Name(), Type: SourceFileTypeFile, Empty: fileInfo.Size() == 0, - Executable: isExecutable(fileInfo) || external.Executable, + Executable: IsExecutable(fileInfo) || external.Executable, Private: isPrivate(fileInfo), ReadOnly: isReadOnly(fileInfo), } @@ -2530,7 +2530,7 @@ TargetName: fileInfo.Name(), Type: SourceFileTypeFile, Empty: true, - Executable: isExecutable(fileInfo), + Executable: IsExecutable(fileInfo), Private: isPrivate(fileInfo), ReadOnly: isReadOnly(fileInfo), } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/internal/cmd/config.go new/chezmoi-2.37.0/internal/cmd/config.go --- old/chezmoi-2.36.1/internal/cmd/config.go 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/internal/cmd/config.go 2023-08-06 18:42:18.000000000 +0200 @@ -128,6 +128,7 @@ AzureKeyVault azureKeyVaultConfig `json:"azureKeyVault" mapstructure:"azureKeyVault" yaml:"azureKeyVault"` Bitwarden bitwardenConfig `json:"bitwarden" mapstructure:"bitwarden" yaml:"bitwarden"` Dashlane dashlaneConfig `json:"dashlane" mapstructure:"dashlane" yaml:"dashlane"` + Doppler dopplerConfig `json:"doppler" mapstructure:"doppler" yaml:"doppler"` Ejson ejsonConfig `json:"ejson" mapstructure:"ejson" yaml:"ejson"` Gopass gopassConfig `json:"gopass" mapstructure:"gopass" yaml:"gopass"` HCPVaultSecrets hcpVaultSecretConfig `json:"hcpVaultSecrets" mapstructure:"hcpVaultSecrets" yaml:"hcpVaultSecrets"` @@ -396,6 +397,8 @@ "dashlanePassword": c.dashlanePasswordTemplateFunc, "decrypt": c.decryptTemplateFunc, "deleteValueAtPath": c.deleteValueAtPathTemplateFunc, + "doppler": c.dopplerTemplateFunc, + "dopplerProjectJson": c.dopplerProjectJSONTemplateFunc, "ejsonDecrypt": c.ejsonDecryptTemplateFunc, "ejsonDecryptWithKey": c.ejsonDecryptWithKeyTemplateFunc, "encrypt": c.encryptTemplateFunc, @@ -417,6 +420,7 @@ "include": c.includeTemplateFunc, "includeTemplate": c.includeTemplateTemplateFunc, "ioreg": c.ioregTemplateFunc, + "isExecutable": c.isExecutableTemplateFunc, "joinPath": c.joinPathTemplateFunc, "jq": c.jqTemplateFunc, "keepassxc": c.keepassxcTemplateFunc, @@ -2588,6 +2592,9 @@ Dashlane: dashlaneConfig{ Command: "dcli", }, + Doppler: dopplerConfig{ + Command: "doppler", + }, Ejson: ejsonConfig{ KeyDir: firstNonEmptyString(os.Getenv("EJSON_KEYDIR"), "/opt/ejson/keys"), }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/internal/cmd/doctorcmd.go new/chezmoi-2.37.0/internal/cmd/doctorcmd.go --- old/chezmoi-2.36.1/internal/cmd/doctorcmd.go 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/internal/cmd/doctorcmd.go 2023-08-06 18:42:18.000000000 +0200 @@ -314,6 +314,14 @@ versionRx: regexp.MustCompile(`^(\d+\.\d+\.\d+)`), }, &binaryCheck{ + name: "doppler-command", + binaryname: c.Doppler.Command, + ifNotSet: checkResultWarning, + ifNotExist: checkResultInfo, + versionArgs: []string{"--version"}, + versionRx: regexp.MustCompile(`^v(\d+\.\d+\.\d+)`), + }, + &binaryCheck{ name: "gopass-command", binaryname: c.Gopass.Command, ifNotSet: checkResultWarning, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/internal/cmd/dopplertemplatefuncs.go new/chezmoi-2.37.0/internal/cmd/dopplertemplatefuncs.go --- old/chezmoi-2.36.1/internal/cmd/dopplertemplatefuncs.go 1970-01-01 01:00:00.000000000 +0100 +++ new/chezmoi-2.37.0/internal/cmd/dopplertemplatefuncs.go 2023-08-06 18:42:18.000000000 +0200 @@ -0,0 +1,111 @@ +package cmd + +import ( + "encoding/json" + "fmt" + "os" + "os/exec" + "strings" + + "golang.org/x/exp/slices" + + "github.com/twpayne/chezmoi/v2/internal/chezmoilog" +) + +type dopplerConfig struct { + Command string `json:"command" mapstructure:"command" yaml:"command"` + Args []string `json:"args" mapstructure:"args" yaml:"args"` + Project string `json:"project" mapstructure:"project" yaml:"project"` + Config string `json:"config" mapstructure:"config" yaml:"config"` + outputCache map[string][]byte +} + +func (c *Config) dopplerTemplateFunc(key string, additionalArgs ...string) any { + if len(additionalArgs) > 2 { + // Add one to the number of received arguments as the key + // is the first argument. + panic(fmt.Errorf("expected 1 to 3 arguments, got %d", len(additionalArgs)+1)) + } + + args := c.appendDopplerAdditionalArgs( + []string{"secrets", "download", "--json", "--no-file"}, + additionalArgs, + ) + + data, err := c.dopplerOutput(args) + if err != nil { + panic(err) + } + var value map[string]any + if err := json.Unmarshal(data, &value); err != nil { + panic(err) + } + + secret, ok := value[key] + if !ok { + panic(fmt.Errorf("could not find requested secret: %s", key)) + } + + return secret +} + +func (c *Config) dopplerProjectJSONTemplateFunc(additionalArgs ...string) any { + if len(additionalArgs) > 2 { + panic(fmt.Errorf("expected 0 to 2 arguments, got %d", len(additionalArgs))) + } + args := c.appendDopplerAdditionalArgs( + []string{"secrets", "download", "--json", "--no-file"}, + additionalArgs, + ) + + data, err := c.dopplerOutput(args) + if err != nil { + panic(err) + } + var value any + if err := json.Unmarshal(data, &value); err != nil { + panic(err) + } + return value +} + +func (c *Config) appendDopplerAdditionalArgs( + args, additionalArgs []string, +) []string { + if len(additionalArgs) > 0 && additionalArgs[0] != "" { + args = append(args, "--project", additionalArgs[0]) + } else if c.Doppler.Project != "" { + args = append(args, "--project", c.Doppler.Project) + } + if len(additionalArgs) > 1 && additionalArgs[1] != "" { + args = append(args, "--config", additionalArgs[1]) + } else if c.Doppler.Config != "" { + args = append(args, "--config", c.Doppler.Config) + } + + return args +} + +func (c *Config) dopplerOutput(args []string) ([]byte, error) { + args = append(slices.Clone(c.Doppler.Args), args...) + key := strings.Join(args, "\x00") + if data, ok := c.Doppler.outputCache[key]; ok { + return data, nil + } + cmd := exec.Command(c.Doppler.Command, args...) //nolint:gosec + // Always run the doppler command in the destination path because doppler uses + // relative paths to find its .doppler.json config file. + cmd.Dir = c.DestDirAbsPath.String() + cmd.Stdin = os.Stdin + cmd.Stderr = os.Stderr + output, err := chezmoilog.LogCmdOutput(cmd) + if err != nil { + return nil, newCmdOutputError(cmd, output, err) + } + + if c.Doppler.outputCache == nil { + c.Doppler.outputCache = make(map[string][]byte) + } + c.Doppler.outputCache[key] = output + return output, nil +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/internal/cmd/mackupcmd_darwin.go new/chezmoi-2.37.0/internal/cmd/mackupcmd_darwin.go --- old/chezmoi-2.36.1/internal/cmd/mackupcmd_darwin.go 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/internal/cmd/mackupcmd_darwin.go 2023-08-06 18:42:18.000000000 +0200 @@ -5,7 +5,9 @@ import ( "bufio" "bytes" + "errors" "fmt" + "os" "os/exec" "regexp" "strings" @@ -70,11 +72,14 @@ return err } + mackupDirAbsPath := c.homeDirAbsPath.JoinString(".mackup") var addArgs []string for _, arg := range args { - data, err := c.baseSystem.ReadFile( - mackupApplicationsDir.Join(chezmoi.NewRelPath(arg + ".cfg")), - ) + configRelPath := chezmoi.NewRelPath(arg + ".cfg") + data, err := c.baseSystem.ReadFile(mackupDirAbsPath.Join(configRelPath)) + if errors.Is(err, os.ErrNotExist) { + data, err = c.baseSystem.ReadFile(mackupApplicationsDir.Join(configRelPath)) + } if err != nil { return err } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/internal/cmd/main_test.go new/chezmoi-2.37.0/internal/cmd/main_test.go --- old/chezmoi-2.36.1/internal/cmd/main_test.go 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/internal/cmd/main_test.go 2023-08-06 18:42:18.000000000 +0200 @@ -653,6 +653,9 @@ env.Setenv("HOME", homeDir) env.Setenv("PATH", prependDirToPath(binDir, env.Getenv("PATH"))) + if runtime.GOOS == "windows" { + env.Setenv("PATHEXT", ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL") + } env.Setenv("CHEZMOICONFIGDIR", path.Join(absSlashHomeDir, ".config", "chezmoi")) env.Setenv("CHEZMOISOURCEDIR", path.Join(absSlashHomeDir, ".local", "share", "chezmoi")) env.Setenv("CHEZMOI_GITHUB_TOKEN", os.Getenv("CHEZMOI_GITHUB_TOKEN")) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/internal/cmd/readdcmd.go new/chezmoi-2.37.0/internal/cmd/readdcmd.go --- old/chezmoi-2.36.1/internal/cmd/readdcmd.go 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/internal/cmd/readdcmd.go 2023-08-06 18:42:18.000000000 +0200 @@ -4,6 +4,7 @@ "bytes" "fmt" "io/fs" + "path/filepath" "sort" "github.com/spf13/cobra" @@ -22,7 +23,7 @@ Long: mustLongHelp("re-add"), Example: example("re-add"), ValidArgsFunction: c.targetValidArgs, - Args: cobra.NoArgs, + Args: cobra.ArbitraryArgs, RunE: c.makeRunEWithSourceState(c.runReAddCmd), Annotations: newAnnotations( modifiesSourceDirectory, @@ -47,13 +48,29 @@ ) error { var targetRelPaths chezmoi.RelPaths sourceStateEntries := make(map[chezmoi.RelPath]chezmoi.SourceStateEntry) - _ = sourceState.ForEach( - func(targetRelPath chezmoi.RelPath, sourceStateEntry chezmoi.SourceStateEntry) error { + if len(args) == 0 { + _ = sourceState.ForEach( + func(targetRelPath chezmoi.RelPath, sourceStateEntry chezmoi.SourceStateEntry) error { + targetRelPaths = append(targetRelPaths, targetRelPath) + sourceStateEntries[targetRelPath] = sourceStateEntry + return nil + }, + ) + } else { + for _, arg := range args { + arg = filepath.Clean(arg) + destAbsPath, err := chezmoi.NewAbsPathFromExtPath(arg, c.homeDirAbsPath) + if err != nil { + return err + } + targetRelPath, err := c.targetRelPath(destAbsPath) + if err != nil { + return err + } targetRelPaths = append(targetRelPaths, targetRelPath) - sourceStateEntries[targetRelPath] = sourceStateEntry - return nil - }, - ) + sourceStateEntries[targetRelPath] = sourceState.Get(targetRelPath) + } + } sort.Sort(targetRelPaths) TARGET_REL_PATH: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/internal/cmd/templatefuncs.go new/chezmoi-2.37.0/internal/cmd/templatefuncs.go --- old/chezmoi-2.36.1/internal/cmd/templatefuncs.go 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/internal/cmd/templatefuncs.go 2023-08-06 18:42:18.000000000 +0200 @@ -315,6 +315,17 @@ } } +func (c *Config) isExecutableTemplateFunc(file string) bool { + switch fileInfo, err := c.fileSystem.Stat(file); { + case err == nil: + return chezmoi.IsExecutable(fileInfo) + case errors.Is(err, fs.ErrNotExist): + return false + default: + panic(err) + } +} + func (c *Config) lstatTemplateFunc(name string) any { switch fileInfo, err := c.fileSystem.Lstat(name); { case err == nil: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/internal/cmd/testdata/scripts/doctor_unix.txtar new/chezmoi-2.37.0/internal/cmd/testdata/scripts/doctor_unix.txtar --- old/chezmoi-2.36.1/internal/cmd/testdata/scripts/doctor_unix.txtar 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/internal/cmd/testdata/scripts/doctor_unix.txtar 2023-08-06 18:42:18.000000000 +0200 @@ -3,6 +3,7 @@ chmod 755 bin/age chmod 755 bin/bw chmod 755 bin/dcli +chmod 755 bin/doppler chmod 755 bin/git chmod 755 bin/gopass chmod 755 bin/gpg @@ -48,6 +49,7 @@ stdout '^ok\s+1password-command\s+' stdout '^ok\s+bitwarden-command\s+' stdout '^ok\s+dashlane-command\s+' +stdout '^ok\s+doppler-command\s+' stdout '^ok\s+gopass-command\s+' stdout '^ok\s+keepassxc-command\s+' stdout '^info\s+keepassxc-db\s+' @@ -93,6 +95,10 @@ #!/bin/sh echo 1.0.0 +-- bin/doppler -- +#!/bin/sh + +echo "v3.65.1" -- bin/git -- #!/bin/sh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/internal/cmd/testdata/scripts/doppler.txtar new/chezmoi-2.37.0/internal/cmd/testdata/scripts/doppler.txtar --- old/chezmoi-2.36.1/internal/cmd/testdata/scripts/doppler.txtar 1970-01-01 01:00:00.000000000 +0100 +++ new/chezmoi-2.37.0/internal/cmd/testdata/scripts/doppler.txtar 2023-08-06 18:42:18.000000000 +0200 @@ -0,0 +1,151 @@ +[!windows] chmod 755 bin/doppler +[windows] unix2dos bin/doppler.cmd + +# test doppler template function (global configuration) +exec chezmoi execute-template '{{ doppler "PASSWORD_123"}}' +stdout ^staplebatteryhorsecorrect$ + +# test doppler template function with project and config arguments (supplied configuration) +exec chezmoi execute-template '{{ doppler "PASSWORD" "project" "config" }}' +stdout ^correcthorsebatterystaple$ + +# test doppler template function with empty project and config arguments (global configuration) +exec chezmoi execute-template '{{ doppler "PASSWORD" "" "" }}' +stdout ^correcthorsebatterystaple$ + +# test dopplerProjectJson template function with project and config arguments (supplied configuration) +exec chezmoi execute-template '{{ (dopplerProjectJson "project" "config").PASSWORD_123 }}' +stdout ^staplebatteryhorsecorrect$ + +# test dopplerProjectJson template function with JSON secret piped to fromJson function, project and config arguments +exec chezmoi execute-template '{{ ((dopplerProjectJson "project" "config").JSON_SECRET | fromJson).created_by.email }}' +stdout ^user@example\.com$ + +# test dopplerProjectJson template function with project and empty config arguments (global configuration) +exec chezmoi execute-template '{{ (dopplerProjectJson "project" "").PASSWORD }}' +stdout ^correcthorsebatterystaple$ + +# test dopplerProjectJson template function with empty project and empty config arguments (global configuration) +exec chezmoi execute-template '{{ (dopplerProjectJson "" "").PASSWORD }}' +stdout ^correcthorsebatterystaple$ + +# test dopplerProjectJson template function without project and config arguments (global configuration) +exec chezmoi execute-template '{{ dopplerProjectJson.PASSWORD }}' +stdout ^correcthorsebatterystaple$ + +chhome home3/user + +# test doppler template function with default project and config arguments (chezmoi configuration) +exec chezmoi execute-template '{{ doppler "PASSWORD" }}' +stdout ^default-project-password$ + +# test doppler template function with project and default config arguments (chezmoi configuration) +exec chezmoi execute-template '{{ doppler "PASSWORD" "other-project" }}' +stdout ^other-project-password$ + +# test doppler template function with project and default config arguments (supplied configuration) +exec chezmoi execute-template '{{ doppler "PASSWORD" "project" "config" }}' +stdout ^correcthorsebatterystaple$ + +# test dopplerProjectJson template function with project and default config arguments (chezmoi configuration) +exec chezmoi execute-template '{{ (dopplerProjectJson "default-project").DOPPLER_CONFIG }}' +stdout ^default-config$ + +# test dopplerProjectJson template function with default project and config arguments (chezmoi configuration) +exec chezmoi execute-template '{{ (dopplerProjectJson).DOPPLER_PROJECT }}' +stdout ^default-project$ + +-- bin/doppler -- +#!/bin/sh + +case "$*" in +"secrets download --json --no-file --project project --config config"|"secrets download --json --no-file --project project"|"secrets download --json --no-file") + cat <<EOF +{ + "DOPPLER_CONFIG": "config", + "DOPPLER_ENVIRONMENT": "config", + "DOPPLER_PROJECT": "project", + "PASSWORD": "correcthorsebatterystaple", + "PASSWORD_123": "staplebatteryhorsecorrect", + "JSON_SECRET": "{\n \"created_at\": \"2023-06-09T13:14:28.140Z\",\n \"created_by\": {\n \"email\": \"u...@example.com\",\n \"name\": \"example\",\n \"type\": \"TYPE_USER\"\n },\n \"latest_version\": \"2\",\n \"name\": \"password\"\n}" +} +EOF + ;; +"secrets download --json --no-file --project default-project --config default-config") + cat <<EOF +{ + "DOPPLER_CONFIG": "default-config", + "DOPPLER_ENVIRONMENT": "default-config", + "DOPPLER_PROJECT": "default-project", + "PASSWORD": "default-project-password" +} +EOF + ;; +"secrets download --json --no-file --project other-project --config default-config") + cat <<EOF +{ + "DOPPLER_CONFIG": "default-config", + "DOPPLER_ENVIRONMENT": "default-config", + "DOPPLER_PROJECT": "other-project", + "PASSWORD": "other-project-password" +} +EOF + ;; +*) + echo "$*: unknown command" + exit 1 + ;; +esac +-- bin/doppler.cmd -- +@echo off +IF "%*" == "secrets download --json --no-file --project project --config config" ( + goto download-project +) ELSE IF "%*" == "secrets download --json --no-file --project project" ( + goto download-project +) ELSE IF "%*" == "secrets download --json --no-file" ( + goto download-project +) ELSE IF "%*" == "secrets download --json --no-file --project default-project --config default-config" ( + goto download-default-project +) ELSE IF "%*" == "secrets download --json --no-file --project other-project --config default-config" ( + goto download-other-project +) ELSE ( + echo unknown command: $* + exit /b 1 +) + +exit /b 0 + +:download-project +echo.{ +echo. "DOPPLER_CONFIG": "config", +echo. "DOPPLER_ENVIRONMENT": "config", +echo. "DOPPLER_PROJECT": "project", +echo. "PASSWORD": "correcthorsebatterystaple", +echo. "PASSWORD_123": "staplebatteryhorsecorrect", +echo. "JSON_SECRET": "{\n \"created_at\": \"2023-06-09T13:14:28.140Z\",\n \"created_by\": {\n \"email\": \"u...@example.com\",\n \"name\": \"example\",\n \"type\": \"TYPE_USER\"\n },\n \"latest_version\": \"2\",\n \"name\": \"password\"\n}" +echo.} +exit /b 0 + +:download-default-project +echo.{ +echo. "DOPPLER_CONFIG": "default-config", +echo. "DOPPLER_ENVIRONMENT": "default-config", +echo. "DOPPLER_PROJECT": "default-project", +echo. "PASSWORD": "default-project-password" +echo.} +exit /b 0 + +:download-other-project +echo.{ +echo. "DOPPLER_CONFIG": "default-config", +echo. "DOPPLER_ENVIRONMENT": "default-config", +echo. "DOPPLER_PROJECT": "other-project", +echo. "PASSWORD": "other-project-password" +echo.} +exit /b 0 + +-- home/user/.keep -- +-- home3/user/.config/chezmoi/chezmoi.toml -- +[doppler] + project = "default-project" + config = "default-config" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/internal/cmd/testdata/scripts/mackup_darwin.txt new/chezmoi-2.37.0/internal/cmd/testdata/scripts/mackup_darwin.txt --- old/chezmoi-2.36.1/internal/cmd/testdata/scripts/mackup_darwin.txt 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/internal/cmd/testdata/scripts/mackup_darwin.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,63 +0,0 @@ -[!darwin] skip 'Darwin only' - -chmod 755 bin/brew -chmod 755 bin/mackup - -# test that chezmoi mackup add adds normal dotfiles -exec chezmoi mackup add curl -cmp $CHEZMOISOURCEDIR/dot_curlrc golden/dot_curlrc - -# test that chezmoi mackup add adds XDG configuration files -exec chezmoi mackup add vscode -cmp $CHEZMOISOURCEDIR/dot_config/Code/User/settings.json golden/settings.json - --- bin/brew -- -#!/bin/sh - -case "$*" in -"--prefix") - echo "opt/homebrew" - ;; -*) - echo "Error: Unknown command $*" - ;; -esac --- bin/mackup -- -#!/bin/sh - -case "$*" in -"--version") - echo "Mackup 0.8.32" - ;; -*) - echo "Usage:" - ;; -esac --- golden/dot_curlrc -- -# contents of .curlrc --- golden/settings.json -- -# contents of .config/Code/User/settings.json --- home/user/.config/Code/User/settings.json -- -# contents of .config/Code/User/settings.json --- home/user/.curlrc -- -# contents of .curlrc --- opt/homebrew/Cellar/mackup/0.8.32/libexec/lib/python3.9/site-packages/mackup/applications/curl.cfg -- -[application] -name = Curl - -[configuration_files] -.netrc -.curlrc --- opt/homebrew/Cellar/mackup/0.8.32/libexec/lib/python3.9/site-packages/mackup/applications/vscode.cfg -- -[application] -name = Visual Studio Code - -[configuration_files] -Library/Application Support/Code/User/snippets -Library/Application Support/Code/User/keybindings.json -Library/Application Support/Code/User/settings.json - -[xdg_configuration_files] -Code/User/snippets -Code/User/keybindings.json -Code/User/settings.json diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/internal/cmd/testdata/scripts/mackup_darwin.txtar new/chezmoi-2.37.0/internal/cmd/testdata/scripts/mackup_darwin.txtar --- old/chezmoi-2.36.1/internal/cmd/testdata/scripts/mackup_darwin.txtar 1970-01-01 01:00:00.000000000 +0100 +++ new/chezmoi-2.37.0/internal/cmd/testdata/scripts/mackup_darwin.txtar 2023-08-06 18:42:18.000000000 +0200 @@ -0,0 +1,63 @@ +[!darwin] skip 'Darwin only' + +chmod 755 bin/brew +chmod 755 bin/mackup + +# test that chezmoi mackup add adds normal dotfiles +exec chezmoi mackup add curl +cmp $CHEZMOISOURCEDIR/dot_curlrc golden/dot_curlrc + +# test that chezmoi mackup add adds XDG configuration files +exec chezmoi mackup add vscode +cmp $CHEZMOISOURCEDIR/dot_config/Code/User/settings.json golden/settings.json + +-- bin/brew -- +#!/bin/sh + +case "$*" in +"--prefix") + echo "opt/homebrew" + ;; +*) + echo "Error: Unknown command $*" + ;; +esac +-- bin/mackup -- +#!/bin/sh + +case "$*" in +"--version") + echo "Mackup 0.8.32" + ;; +*) + echo "Usage:" + ;; +esac +-- golden/dot_curlrc -- +# contents of .curlrc +-- golden/settings.json -- +# contents of .config/Code/User/settings.json +-- home/user/.config/Code/User/settings.json -- +# contents of .config/Code/User/settings.json +-- home/user/.curlrc -- +# contents of .curlrc +-- home/user/.mackup/curl.cfg -- +[application] +name = Curl + +[configuration_files] +.netrc +.curlrc +-- opt/homebrew/Cellar/mackup/0.8.32/libexec/lib/python3.9/site-packages/mackup/applications/vscode.cfg -- +[application] +name = Visual Studio Code + +[configuration_files] +Library/Application Support/Code/User/snippets +Library/Application Support/Code/User/keybindings.json +Library/Application Support/Code/User/settings.json + +[xdg_configuration_files] +Code/User/snippets +Code/User/keybindings.json +Code/User/settings.json diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/internal/cmd/testdata/scripts/re-add.txtar new/chezmoi-2.37.0/internal/cmd/testdata/scripts/re-add.txtar --- old/chezmoi-2.36.1/internal/cmd/testdata/scripts/re-add.txtar 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/internal/cmd/testdata/scripts/re-add.txtar 2023-08-06 18:42:18.000000000 +0200 @@ -12,3 +12,12 @@ grep '# edited' $CHEZMOISOURCEDIR/dot_dir/exact_subdir/file exec chezmoi diff ! stdout . + +# test that chezmoi re-add adds only specified targets +edit $HOME/.file +edit $HOME/.dir/file +edit $HOME/.dir/subdir/file +exec chezmoi re-add ~/.dir/file +grep -count=1 '# edited' $CHEZMOISOURCEDIR/dot_file +grep -count=2 '# edited' $CHEZMOISOURCEDIR/dot_dir/file +grep -count=1 '# edited' $CHEZMOISOURCEDIR/dot_dir/exact_subdir/file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.36.1/internal/cmd/testdata/scripts/templatefuncs.txtar new/chezmoi-2.37.0/internal/cmd/testdata/scripts/templatefuncs.txtar --- old/chezmoi-2.36.1/internal/cmd/testdata/scripts/templatefuncs.txtar 2023-07-30 13:56:41.000000000 +0200 +++ new/chezmoi-2.37.0/internal/cmd/testdata/scripts/templatefuncs.txtar 2023-08-06 18:42:18.000000000 +0200 @@ -1,6 +1,7 @@ [!windows] chmod 755 bin/chezmoi-output-test [!windows] chmod 755 bin/generate-color-formats [!windows] chmod 755 bin/ioreg +[!windows] chmod 755 bin/executable [windows] unix2dos bin/chezmoi-output-test.cmd symlink $HOME/symlink -> dir @@ -68,6 +69,15 @@ exec chezmoi execute-template '{{ dict "key" "value" | jq ".key" | first }}' stdout ^value$ +# test isExecutable template function positive test case +[!windows] exec chezmoi execute-template '{{ isExecutable "bin/executable" }}' +[windows] exec chezmoi execute-template '{{ isExecutable "bin/executable.cmd" }}' +stdout ^true$ + +# test isExecutable template function negative test case +exec chezmoi execute-template '{{ isExecutable "bin/not-executable" }}' +stdout ^false$ + # test lookPath template function to find in PATH exec chezmoi execute-template '{{ lookPath "go" }}' stdout go$exe @@ -152,6 +162,9 @@ set out=%out:\=% echo %out% endlocal +-- bin/executable -- +#!/bin/sh +-- bin/executable.cmd -- -- bin/generate-color-formats -- #!/bin/sh @@ -194,6 +207,7 @@ echo ' <string>Darwin Kernel Version 21.1.0: Wed Oct 13 17:33:24 PDT 2021; root:xnu-8019.41.5~1/RELEASE_ARM64_T8101</string>' echo '</dict>' echo '</plist>' +-- bin/not-executable -- -- golden/comment -- # line1 # line2 ++++++ chezmoi.obsinfo ++++++ --- /var/tmp/diff_new_pack.PfMxWL/_old 2023-08-08 15:55:05.925054988 +0200 +++ /var/tmp/diff_new_pack.PfMxWL/_new 2023-08-08 15:55:05.929055013 +0200 @@ -1,5 +1,5 @@ name: chezmoi -version: 2.36.1 -mtime: 1690718201 -commit: 0b0fa89f612f5f885ccfc8c3890f515cc668c5c6 +version: 2.37.0 +mtime: 1691340138 +commit: 552d2556aa4b53ecd2677f9ef811376c42fc6c8e ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/chezmoi/vendor.tar.gz /work/SRC/openSUSE:Factory/.chezmoi.new.22712/vendor.tar.gz differ: char 5, line 1