Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package chezmoi for openSUSE:Factory checked in at 2022-11-26 18:45:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/chezmoi (Old) and /work/SRC/openSUSE:Factory/.chezmoi.new.1597 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "chezmoi" Sat Nov 26 18:45:16 2022 rev:6 rq:1038245 version:2.27.2 Changes: -------- --- /work/SRC/openSUSE:Factory/chezmoi/chezmoi.changes 2022-11-15 13:21:38.376867087 +0100 +++ /work/SRC/openSUSE:Factory/.chezmoi.new.1597/chezmoi.changes 2022-11-26 18:45:23.523191040 +0100 @@ -1,0 +2,12 @@ +Fri Nov 25 17:19:34 UTC 2022 - Filippo Bonazzi <filippo.bona...@suse.com> + +- Update to version 2.27.2: + * fix: Respect diff filter in removes with external diff tool + * fix: Allow underscores in SourceHut usernames + * feat: Add update.command and update.args config variables + * feat: Add an optional path argument to the cd command + * chore: Check that not both of --force and --interactive flags are set + * fix: Make re-add command respect --interactive flag + * chore: Update dependencies + +------------------------------------------------------------------- Old: ---- chezmoi-2.27.1.obscpio New: ---- chezmoi-2.27.2.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ chezmoi.spec ++++++ --- /var/tmp/diff_new_pack.w9TpmP/_old 2022-11-26 18:45:25.115200479 +0100 +++ /var/tmp/diff_new_pack.w9TpmP/_new 2022-11-26 18:45:25.119200502 +0100 @@ -17,7 +17,7 @@ Name: chezmoi -Version: 2.27.1 +Version: 2.27.2 Release: 0 Summary: A multi-host manager for dotfiles License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.w9TpmP/_old 2022-11-26 18:45:25.155200715 +0100 +++ /var/tmp/diff_new_pack.w9TpmP/_new 2022-11-26 18:45:25.159200739 +0100 @@ -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.27.1</param> + <param name="revision">v2.27.2</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.w9TpmP/_old 2022-11-26 18:45:25.175200834 +0100 +++ /var/tmp/diff_new_pack.w9TpmP/_new 2022-11-26 18:45:25.179200858 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/twpayne/chezmoi.git</param> - <param name="changesrevision">b6039e787dfffe970fec4f9165ec9ebe1b3ceaa6</param></service></servicedata> + <param name="changesrevision">882d0808feb1fc8112b411ed2216f31306656861</param></service></servicedata> (No newline at EOF) ++++++ chezmoi-2.27.1.obscpio -> chezmoi-2.27.2.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/.goreleaser.yaml new/chezmoi-2.27.2/.goreleaser.yaml --- old/chezmoi-2.27.1/.goreleaser.yaml 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/.goreleaser.yaml 2022-11-24 22:50:16.000000000 +0100 @@ -131,6 +131,7 @@ description: Manage your dotfiles across multiple diverse machines, securely. license: MIT formats: + - archlinux - deb - rpm dependencies: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/assets/chezmoi.io/docs/install.md.tmpl new/chezmoi-2.27.2/assets/chezmoi.io/docs/install.md.tmpl --- old/chezmoi-2.27.1/assets/chezmoi.io/docs/install.md.tmpl 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/assets/chezmoi.io/docs/install.md.tmpl 2022-11-24 22:50:16.000000000 +0100 @@ -170,22 +170,28 @@ === "deb" -{{ range $arch := list "amd64" "arm64" "armel" "i386" "mips64" "mips64le" "ppc64" "ppc64le" "riscv64" "s390x" }} +{{ range $arch := list "amd64" "arm64" "armel" "i386" "loong64" "mips64" "mips64le" "ppc64" "ppc64le" "riscv64" "s390x" }} [`{{ $arch }}`](https://github.com/twpayne/chezmoi/releases/download/v{{ $version }}/chezmoi_{{ $version }}_linux_{{ $arch }}.deb) {{- end }} === "rpm" -{{ range $arch := list "aarch64" "armhfp" "i686" "mips64" "mips64le" "ppc64" "ppc64le" "s390x" "riscv64" "x86_64" }} +{{ range $arch := list "aarch64" "armhfp" "i686" "loong64" "mips64" "mips64le" "ppc64" "ppc64le" "s390x" "riscv64" "x86_64" }} [`{{ $arch }}`](https://github.com/twpayne/chezmoi/releases/download/v{{ $version }}/chezmoi-{{ $version }}-{{ $arch }}.rpm) {{- end }} === "apk" -{{ range $arch := list "386" "amd64" "arm" "arm64" "mips64" "mips64le" "ppc64" "ppc64le" "riscv64" "s390x" }} +{{ range $arch := list "386" "amd64" "arm" "arm64" "loong64" "mips64_hardfloat" "mips64le_hardfloat" "ppc64" "ppc64le" "riscv64" "s390x" }} [`{{ $arch }}`](https://github.com/twpayne/chezmoi/releases/download/v{{ $version }}/chezmoi_{{ $version }}_linux_{{ $arch }}.apk) {{- end }} +=== "Arch Linux" + +{{ range $arch := list "386" "amd64" "arm" "arm64" "loong64" "mips64_hardfloat" "mips64le_hardfloat" "ppc64" "ppc64le" "riscv64" "s390x" }} + [`{{ $arch }}`](https://github.com/twpayne/chezmoi/releases/download/v{{ $version }}/chezmoi_{{ $version }}_linux_{{ $arch }}.pkg.tar.zst) +{{- end }} + ## Download a pre-built binary Download an archive for your operating system and architecture containing a diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/assets/chezmoi.io/docs/reference/command-line-flags/global.md new/chezmoi-2.27.2/assets/chezmoi.io/docs/reference/command-line-flags/global.md --- old/chezmoi-2.27.1/assets/chezmoi.io/docs/reference/command-line-flags/global.md 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/assets/chezmoi.io/docs/reference/command-line-flags/global.md 2022-11-24 22:50:16.000000000 +0100 @@ -48,8 +48,7 @@ ## `--no-tty` -Do not attempt to get a TTY to read input and passwords. Instead, read them -from stdin. +Do not attempt to get a TTY for prompts. Instead, read them from stdin. ## `-o`, `--output` *filename* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/assets/chezmoi.io/docs/reference/commands/cd.md new/chezmoi-2.27.2/assets/chezmoi.io/docs/reference/commands/cd.md --- old/chezmoi-2.27.1/assets/chezmoi.io/docs/reference/commands/cd.md 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/assets/chezmoi.io/docs/reference/commands/cd.md 2022-11-24 22:50:16.000000000 +0100 @@ -1,10 +1,13 @@ -# `cd` +# `cd` [*path*] Launch a shell in the working tree (typically the source directory). chezmoi will launch the command set by the `cd.command` configuration variable with any extra arguments specified by `cd.args`. If this is not set, chezmoi will attempt to detect your shell and finally fall back to an OS-specific default. +If the optional argument *path* is present, the shell will be launched in the +source directory corresponding to *path*. + !!! hint This does not change the current directory of the current shell. To do diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/assets/chezmoi.io/docs/reference/commands/re-add.md new/chezmoi-2.27.2/assets/chezmoi.io/docs/reference/commands/re-add.md --- old/chezmoi-2.27.1/assets/chezmoi.io/docs/reference/commands/re-add.md 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/assets/chezmoi.io/docs/reference/commands/re-add.md 2022-11-24 22:50:16.000000000 +0100 @@ -3,6 +3,10 @@ Re-add all modified files in the target state. chezmoi will not overwrite templates, and all entries that are not files are ignored. +!!! hint + + If you want to re-add a single file uncondtionally, use `chezmoi add --force` instead. + !!! example ```console diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/assets/chezmoi.io/docs/reference/commands/update.md new/chezmoi-2.27.2/assets/chezmoi.io/docs/reference/commands/update.md --- old/chezmoi-2.27.1/assets/chezmoi.io/docs/reference/commands/update.md 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/assets/chezmoi.io/docs/reference/commands/update.md 2022-11-24 22:50:16.000000000 +0100 @@ -2,6 +2,11 @@ Pull changes from the source repo and apply any changes. +If `update.command` is set then chezmoi will run `update.command` with +`update.args` in the working tree. Otherwise, chezmoi will run `git pull +--autostash --rebase [--recurse-submodules]` , using chezmoi's builtin git if +`useBuiltinGit` is `true` or if `git.command` cannot be found in `$PATH`. + ## `-i`, `--include` *types* Only update entries of type *types*. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/assets/chezmoi.io/docs/reference/configuration-file/variables.md.yaml new/chezmoi-2.27.2/assets/chezmoi.io/docs/reference/configuration-file/variables.md.yaml --- old/chezmoi-2.27.1/assets/chezmoi.io/docs/reference/configuration-file/variables.md.yaml 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/assets/chezmoi.io/docs/reference/configuration-file/variables.md.yaml 2022-11-24 22:50:16.000000000 +0100 @@ -271,6 +271,11 @@ default: '`vault`' description: Vault CLI command update: + args: + type: "[]string" + description: Extra args to update command + command: + description: Update command recurseSubmodules: type: bool default: '`true`' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/assets/chezmoi.io/docs/reference/target-types.md new/chezmoi-2.27.2/assets/chezmoi.io/docs/reference/target-types.md --- old/chezmoi-2.27.1/assets/chezmoi.io/docs/reference/target-types.md 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/assets/chezmoi.io/docs/reference/target-types.md 2022-11-24 22:50:16.000000000 +0100 @@ -113,13 +113,16 @@ | `.ps1` | `powershell` | `-NoLogo` | | `.rb` | `ruby` | *none* | -Script interpreters can be added or overridden with the -`interpreters.`*extension* section in the configuration file. +Script interpreters can be added or overridden by adding the corresponding +extension (without the leading dot) as a key under the `interpreters` +section of the configuration file. !!! note The leading `.` is dropped from *extension*, for example to specify the - interpreter for `.pl` files you configure `interpreters.pl`. + interpreter for `.pl` files you configure `interpreters.pl` (where `.` + in this case just means "a child of" in the configuration file, however + that is specified in your preferred format). !!! example @@ -133,6 +136,26 @@ command = "tclsh" ``` + Or if using YAML: + + ```yaml title="~/.config/chezmoi/chezmoi.yaml" + interpreters: + py: + command: "C:\Python39\python3.exe" + tcl: + command: "tclsh" + ``` + + Note that the TOML version can also be written like this, which + resembles the YAML version more and makes it clear that the key + for each file extension should not have a leading `.`: + + ```toml title="~/.config/chezmoi/chezmoi.toml" + [interpreters] + py = { command = 'C:\Python39\python3.exe' } + tcl = { command = "tclsh" } + ``` + !!! note If you intend to use PowerShell Core (`pwsh.exe`) as the `.ps1` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/assets/chezmoi.io/docs/user-guide/advanced/customize-your-source-directory.md new/chezmoi-2.27.2/assets/chezmoi.io/docs/user-guide/advanced/customize-your-source-directory.md --- old/chezmoi-2.27.1/assets/chezmoi.io/docs/user-guide/advanced/customize-your-source-directory.md 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/assets/chezmoi.io/docs/user-guide/advanced/customize-your-source-directory.md 2022-11-24 22:50:16.000000000 +0100 @@ -28,3 +28,59 @@ do not need to move files that are ignored by chezmoi in all cases (i.e. are listed in `.chezmoiignore` when executed as a template on all machines), and you can afterwards remove their entries from `home/.chezmoiignore`. + +## Use a different version control system to git + +Although chezmoi is primarily designed to use a git repo for the source state, +it does not require git and can be used with other version control systems, such +as [fossil](https://www.fossil-scm.org/) or [pijul](https://pijul.org/). + +The version control system is used in only three places: + +* `chezmoi init` will use `git clone` to clone the source repo if it does not + already exist. +* `chezmoi update` will use `git pull` by default to pull the latest changes. +* chezmoi's auto add, commit, and push functionality use `git status`, `git + add`, `git commit` and `git push`. + +Using a different version control system (VCS) to git can be achieved in two +ways. + +Firstly, if your VCS is compatible with git's CLI, then you can set the +`git.command` configuration variable to your VCS command and set `useBuiltinGit` +to `false`. + +Otherwise, you can use your VCS to create the source directory before running +`chezmoi init`, for example: + +```console +$ fossil clone https://dotfiles.example.com/ dotfiles.fossil +$ mkdir -p .local/share/chezmoi/.git +$ cd .local/share/chezmoi +$ fossil open ~/dotfiles.fossil +$ chezmoi init --apply +``` + +!!! note + + The creation of an empty `.git` directory in the source directory is + required for chezmoi to be able to identify the work tree. + +For updates, you can set the `update.command` and `update.args` configuration +variables and `chezmoi update` will use these instead of `git pull`, for example: + +```toml title="~/.config/chezmoi/chezmoi.toml" +[update] + command = "fossil" + args = ["update"] +``` + +Currently, it is not possible to override the auto add, commit, and push +behavior for non-git VCSs, so you will have to commit changes manually, for +example: + +```console +$ chezmoi cd +$ fossil add . +$ fossil commit +``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/go.mod new/chezmoi-2.27.2/go.mod --- old/chezmoi-2.27.1/go.mod 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/go.mod 2022-11-24 22:50:16.000000000 +0100 @@ -6,23 +6,23 @@ filippo.io/age v1.0.0 github.com/Masterminds/sprig/v3 v3.2.2 github.com/aws/aws-sdk-go-v2 v1.17.1 - github.com/aws/aws-sdk-go-v2/config v1.17.10 - github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.16.4 - github.com/bmatcuk/doublestar/v4 v4.3.1 + github.com/aws/aws-sdk-go-v2/config v1.18.3 + github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.16.8 + github.com/bmatcuk/doublestar/v4 v4.4.0 github.com/bradenhilton/mozillainstallhash v1.0.0 github.com/charmbracelet/bubbles v0.14.0 - github.com/charmbracelet/bubbletea v0.22.1 - github.com/charmbracelet/glamour v0.5.0 + github.com/charmbracelet/bubbletea v0.23.1 + github.com/charmbracelet/glamour v0.6.0 github.com/coreos/go-semver v0.3.0 github.com/fsnotify/fsnotify v1.6.0 github.com/go-git/go-git/v5 v5.4.2 - github.com/google/go-github/v48 v48.0.0 + github.com/google/go-github/v48 v48.1.0 github.com/google/renameio/v2 v2.0.0 github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 github.com/mitchellh/mapstructure v1.5.0 github.com/muesli/combinator v0.3.0 github.com/muesli/termenv v0.13.0 - github.com/pelletier/go-toml/v2 v2.0.5 + github.com/pelletier/go-toml/v2 v2.0.6 github.com/rogpeppe/go-internal v1.9.0 github.com/rs/zerolog v1.28.0 github.com/sergi/go-diff v1.1.0 @@ -37,11 +37,11 @@ github.com/zalando/go-keyring v0.2.1 go.etcd.io/bbolt v1.3.7-0.20220226045046-fd5535f71f48 go.uber.org/multierr v1.8.0 - golang.org/x/exp v0.0.0-20221106115401-f9659909a136 - golang.org/x/oauth2 v0.1.0 + golang.org/x/exp v0.0.0-20221114191408-850992195362 + golang.org/x/oauth2 v0.2.0 golang.org/x/sync v0.1.0 - golang.org/x/sys v0.1.0 - golang.org/x/term v0.1.0 + golang.org/x/sys v0.2.0 + golang.org/x/term v0.2.0 gopkg.in/ini.v1 v1.67.0 gopkg.in/yaml.v3 v3.0.1 howett.net/plist v1.0.0 @@ -57,7 +57,7 @@ github.com/alecthomas/chroma v0.10.0 // indirect github.com/alessio/shellescape v1.4.1 // indirect github.com/atotto/clipboard v0.1.4 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.12.23 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.13.3 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.19 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.25 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.19 // indirect @@ -65,14 +65,14 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.19 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.11.25 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.8 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.17.1 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.17.5 // indirect github.com/aws/smithy-go v1.13.4 // indirect github.com/aymanbagabas/go-osc52 v1.2.1 // indirect github.com/aymerick/douceur v0.2.0 // indirect github.com/bradenhilton/cityhash v1.0.0 // indirect github.com/charmbracelet/harmonica v0.2.0 // indirect github.com/charmbracelet/lipgloss v0.6.0 // indirect - github.com/cloudflare/circl v1.2.0 // indirect + github.com/cloudflare/circl v1.3.0 // indirect github.com/containerd/console v1.0.3 // indirect github.com/danieljoos/wincred v1.1.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -108,18 +108,18 @@ github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/rivo/uniseg v0.4.2 // indirect + github.com/rivo/uniseg v0.4.3 // indirect github.com/shopspring/decimal v1.3.1 // indirect github.com/spf13/cast v1.5.0 // indirect - github.com/xanzy/ssh-agent v0.3.2 // indirect - github.com/yuin/goldmark v1.5.2 // indirect + github.com/xanzy/ssh-agent v0.3.3 // indirect + github.com/yuin/goldmark v1.5.3 // indirect github.com/yuin/goldmark-emoji v1.0.1 // indirect go.uber.org/atomic v1.10.0 // indirect - golang.org/x/crypto v0.1.0 // indirect - golang.org/x/mod v0.6.0 // indirect - golang.org/x/net v0.1.0 // indirect + golang.org/x/crypto v0.3.0 // indirect + golang.org/x/mod v0.7.0 // indirect + golang.org/x/net v0.2.0 // indirect golang.org/x/text v0.4.0 // indirect - golang.org/x/tools v0.2.0 // indirect + golang.org/x/tools v0.3.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/go.sum new/chezmoi-2.27.2/go.sum --- old/chezmoi-2.27.1/go.sum 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/go.sum 2022-11-24 22:50:16.000000000 +0100 @@ -1,4 +1,4 @@ -cloud.google.com/go/compute v1.7.0 h1:v/k9Eueb8aAJ0vZuxKMrgm6kPhCLZU9HxFU+AFDs9Uk= +cloud.google.com/go/compute/metadata v0.2.0 h1:nBbNSZyDpkNlo3DepaaLKVuO7ClyifSAmNloSCZrHnQ= filippo.io/age v1.0.0 h1:V6q14n0mqYU3qKFkZ6oOaF9oXneOviS3ubXsSVBRSzc= filippo.io/age v1.0.0/go.mod h1:PaX+Si/Sd5G8LgfCwldsSba3H1DDQZhIhFGkhbHaBq8= filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmGfU= @@ -30,10 +30,10 @@ github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= github.com/aws/aws-sdk-go-v2 v1.17.1 h1:02c72fDJr87N8RAC2s3Qu0YuvMRZKNZJ9F+lAehCazk= github.com/aws/aws-sdk-go-v2 v1.17.1/go.mod h1:JLnGeGONAyi2lWXI1p0PCIOIy333JMVK1U7Hf0aRFLw= -github.com/aws/aws-sdk-go-v2/config v1.17.10 h1:zBy5QQ/mkvHElM1rygHPAzuH+sl8nsdSaxSWj0+rpdE= -github.com/aws/aws-sdk-go-v2/config v1.17.10/go.mod h1:/4np+UiJJKpWHN7Q+LZvqXYgyjgeXm5+lLfDI6TPZao= -github.com/aws/aws-sdk-go-v2/credentials v1.12.23 h1:LctvcJMIb8pxvk5hQhChpCu0WlU6oKQmcYb1HA4IZSA= -github.com/aws/aws-sdk-go-v2/credentials v1.12.23/go.mod h1:0awX9iRr/+UO7OwRQFpV1hNtXxOVuehpjVEzrIAYNcA= +github.com/aws/aws-sdk-go-v2/config v1.18.3 h1:3kfBKcX3votFX84dm00U8RGA1sCCh3eRMOGzg5dCWfU= +github.com/aws/aws-sdk-go-v2/config v1.18.3/go.mod h1:BYdrbeCse3ZnOD5+2/VE/nATOK8fEUpBtmPMdKSyhMU= +github.com/aws/aws-sdk-go-v2/credentials v1.13.3 h1:ur+FHdp4NbVIv/49bUjBW+FE7e57HOo03ELodttmagk= +github.com/aws/aws-sdk-go-v2/credentials v1.13.3/go.mod h1:/rOMmqYBcFfNbRPU0iN9IgGqD5+V2yp3iWNmIlz0wI4= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.19 h1:E3PXZSI3F2bzyj6XxUXdTIfvp425HHhwKsFvmzBwHgs= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.19/go.mod h1:VihW95zQpeKQWVPGkwT+2+WJNQV8UXFfMTWdU6VErL8= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.25 h1:nBO/RFxeq/IS5G9Of+ZrgucRciie2qpLy++3UGZ+q2E= @@ -44,14 +44,14 @@ github.com/aws/aws-sdk-go-v2/internal/ini v1.3.26/go.mod h1:Y2OJ+P+MC1u1VKnavT+PshiEuGPyh/7DqxoDNij4/bg= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.19 h1:GE25AWCdNUPh9AOJzI9KIJnja7IwUc1WyUqz/JTyJ/I= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.19/go.mod h1:02CP6iuYP+IVnBX5HULVdSAku/85eHB2Y9EsFhrkEwU= -github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.16.4 h1:Hx79EGrkKNJya2iz2U5A7nyr7DjOu/TGTRefThfBZ1w= -github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.16.4/go.mod h1:k6CPuxyzO247nYEM1baEwHH1kRtosRCvgahAepaaShw= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.16.8 h1:Zw48FHykP40fKMxPmagkuzklpEuDPLhvUjKP8Ygrds0= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.16.8/go.mod h1:k6CPuxyzO247nYEM1baEwHH1kRtosRCvgahAepaaShw= github.com/aws/aws-sdk-go-v2/service/sso v1.11.25 h1:GFZitO48N/7EsFDt8fMa5iYdmWqkUDDB3Eje6z3kbG0= github.com/aws/aws-sdk-go-v2/service/sso v1.11.25/go.mod h1:IARHuzTXmj1C0KS35vboR0FeJ89OkEy1M9mWbK2ifCI= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.8 h1:jcw6kKZrtNfBPJkaHrscDOZoe5gvi9wjudnxvozYFJo= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.8/go.mod h1:er2JHN+kBY6FcMfcBBKNGCT3CarImmdFzishsqBmSRI= -github.com/aws/aws-sdk-go-v2/service/sts v1.17.1 h1:KRAix/KHvjGODaHAMXnxRk9t0D+4IJVUuS/uwXxngXk= -github.com/aws/aws-sdk-go-v2/service/sts v1.17.1/go.mod h1:bXcN3koeVYiJcdDU89n3kCYILob7Y34AeLopUbZgLT4= +github.com/aws/aws-sdk-go-v2/service/sts v1.17.5 h1:60SJ4lhvn///8ygCzYy2l53bFW/Q15bVfyjyAWo6zuw= +github.com/aws/aws-sdk-go-v2/service/sts v1.17.5/go.mod h1:bXcN3koeVYiJcdDU89n3kCYILob7Y34AeLopUbZgLT4= github.com/aws/smithy-go v1.13.4 h1:/RN2z1txIJWeXeOkzX+Hk/4Uuvv7dWtCjbmVJcrskyk= github.com/aws/smithy-go v1.13.4/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/aymanbagabas/go-osc52 v1.0.3/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4= @@ -59,30 +59,29 @@ github.com/aymanbagabas/go-osc52 v1.2.1/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= -github.com/bmatcuk/doublestar/v4 v4.3.1 h1:JmbSJX7X1c6ImkExYeRTcviuGnp3QFUK468GPrMlW9w= -github.com/bmatcuk/doublestar/v4 v4.3.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= +github.com/bmatcuk/doublestar/v4 v4.4.0 h1:LmAwNwhjEbYtyVLzjcP/XeVw4nhuScHGkF/XWXnvIic= +github.com/bmatcuk/doublestar/v4 v4.4.0/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bradenhilton/cityhash v1.0.0 h1:1QauDCwfxwIGwO2jBTJdEBqXgfCusAgQOSgdl4RsTMI= github.com/bradenhilton/cityhash v1.0.0/go.mod h1:Wmb8yW1egA9ulrsRX4mxfYx5zq4nBWOCZ+j63oK6uz8= github.com/bradenhilton/mozillainstallhash v1.0.0 h1:QL9byVGb4FrVOI7MubnME3uPNj5R78tqYQPlxuBmXMw= github.com/bradenhilton/mozillainstallhash v1.0.0/go.mod h1:yVD0OX1izZHYl1lBm2UDojyE/k0xIqKJK78k+tdWV+k= github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/bwesterb/go-ristretto v1.2.1 h1:Xd9ZXmjKE2aY8Ub7+4bX7tXsIPsV1pIZaUlJUjI1toE= -github.com/bwesterb/go-ristretto v1.2.1/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/bwesterb/go-ristretto v1.2.2 h1:S2C0mmSjCLS3H9+zfXoIoKzl+cOncvBvt6pE+zTm5Ms= github.com/charmbracelet/bubbles v0.14.0 h1:DJfCwnARfWjZLvMglhSQzo76UZ2gucuHPy9jLWX45Og= github.com/charmbracelet/bubbles v0.14.0/go.mod h1:bbeTiXwPww4M031aGi8UK2HT9RDWoiNibae+1yCMtcc= github.com/charmbracelet/bubbletea v0.21.0/go.mod h1:GgmJMec61d08zXsOhqRC/AiOx4K4pmz+VIcRIm1FKr4= -github.com/charmbracelet/bubbletea v0.22.1 h1:z66q0LWdJNOWEH9zadiAIXp2GN1AWrwNXU8obVY9X24= -github.com/charmbracelet/bubbletea v0.22.1/go.mod h1:8/7hVvbPN6ZZPkczLiB8YpLkLJ0n7DMho5Wvfd2X1C0= -github.com/charmbracelet/glamour v0.5.0 h1:wu15ykPdB7X6chxugG/NNfDUbyyrCLV9XBalj5wdu3g= -github.com/charmbracelet/glamour v0.5.0/go.mod h1:9ZRtG19AUIzcTm7FGLGbq3D5WKQ5UyZBbQsMQN0XIqc= +github.com/charmbracelet/bubbletea v0.23.1 h1:CYdteX1wCiCzKNUlwm25ZHBIc1GXlYFyUIte8WPvhck= +github.com/charmbracelet/bubbletea v0.23.1/go.mod h1:JAfGK/3/pPKHTnAS8JIE2u9f61BjWTQY57RbT25aMXU= +github.com/charmbracelet/glamour v0.6.0 h1:wi8fse3Y7nfcabbbDuwolqTqMQPMnVPeZhDM273bISc= +github.com/charmbracelet/glamour v0.6.0/go.mod h1:taqWV4swIMMbWALc0m7AfE9JkPSU8om2538k9ITBxOc= 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.5.0/go.mod h1:EZLha/HbzEt7cYqdFPovlqy5FZPj0xFhg5SaqxScmgs= github.com/charmbracelet/lipgloss v0.6.0 h1:1StyZB9vBSOyuZxQUcUwGr17JmojPNm87inij9N3wJY= github.com/charmbracelet/lipgloss v0.6.0/go.mod h1:tHh2wr34xcHjC2HCXIlGSG1jaDF0S0atAUvBMP6Ppuk= github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= -github.com/cloudflare/circl v1.2.0 h1:NheeISPSUcYftKlfrLuOo4T62FkmD4t4jviLfFFYaec= -github.com/cloudflare/circl v1.2.0/go.mod h1:Ch2UgYr6ti2KTtlejELlROl0YIYj7SLjAC8M+INXlMk= +github.com/cloudflare/circl v1.3.0 h1:Anq00jxDtoyX3+aCaYUZ0vXC5r4k4epberfWGDXV1zE= +github.com/cloudflare/circl v1.3.0/go.mod h1:+CauBF6R70Jqcyl8N2hC8pAXYbWkGIezuSbuGLtRhnw= github.com/containerd/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw= github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= @@ -137,8 +136,8 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-github/v48 v48.0.0 h1:9H5fWVXFK6ZsRriyPbjtnFAkJnoj0WKFtTYfpCRrTm8= -github.com/google/go-github/v48 v48.0.0/go.mod h1:dDlehKBDo850ZPvCTK0sEqTCVWcrGl2LcDiajkYi89Y= +github.com/google/go-github/v48 v48.1.0 h1:nqPqq+0oRY2AMR/SRskGrrP4nnewPB7e/m2+kbT/UvM= +github.com/google/go-github/v48 v48.1.0/go.mod h1:dDlehKBDo850ZPvCTK0sEqTCVWcrGl2LcDiajkYi89Y= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/renameio v1.0.1 h1:Lh/jXZmvZxb0BBeSY5VKEfidcbcbenKjZFzM/q0fSeU= @@ -191,7 +190,6 @@ github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -203,7 +201,6 @@ github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/microcosm-cc/bluemonday v1.0.17/go.mod h1:Z0r70sCuXHig8YpBzCc5eGHAap2K7e/u082ZUpDRRqM= github.com/microcosm-cc/bluemonday v1.0.21 h1:dNH3e4PSyE4vNX+KlRGHT5KrSvjeUkoNPwEORjffHJg= github.com/microcosm-cc/bluemonday v1.0.21/go.mod h1:ytNkv4RrDrLJ2pqlsSI46O6IVXmZOBBD4SaJyDwwTkM= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= @@ -227,7 +224,6 @@ github.com/muesli/reflow v0.2.1-0.20210115123740-9e1d0d53df68/go.mod h1:Xk+z4oIWdQqJzsxyjgl3P22oYZnHdZ8FFTHAQQt5BMQ= 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.9.0/go.mod h1:R/LzAKf+suGs4IsO95y7+7DpFHO0KABgnZqtlyx2mBw= github.com/muesli/termenv v0.11.1-0.20220204035834-5ac8409525e0/go.mod h1:Bd5NYQ7pd+SrtBSrSNoBBmXlcY8+Xj4BMJgh8qcZrvs= github.com/muesli/termenv v0.11.1-0.20220212125758-44cd13922739/go.mod h1:Bd5NYQ7pd+SrtBSrSNoBBmXlcY8+Xj4BMJgh8qcZrvs= github.com/muesli/termenv v0.13.0 h1:wK20DRpJdDX8b7Ek2QfhvqhRQFZ237RGRO0RQ/Iqdy0= @@ -236,8 +232,8 @@ github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= 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/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg= -github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= +github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= +github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A= @@ -249,8 +245,8 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.4.2 h1:YwD0ulJSJytLpiaWua0sBDusfsCZohxjxzVTYjwxfV8= -github.com/rivo/uniseg v0.4.2/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw= +github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rs/xid v1.4.0 h1:qd7wPTDkN6KQx2VmMBLrpHkiyQwgFXRnkOLacUiaSNY= @@ -303,12 +299,12 @@ github.com/withfig/autocomplete-tools/integrations/cobra v1.2.1 h1:+dBg5k7nuTE38VVdoroRsT0Z88fmvdYrI2EjzJst35I= github.com/withfig/autocomplete-tools/integrations/cobra v1.2.1/go.mod h1:nmuySobZb4kFgFy6BptpXp/BBw+xFSyvVPP6auoJB4k= github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= -github.com/xanzy/ssh-agent v0.3.2 h1:eKj4SX2Fe7mui28ZgnFW5fmTz1EIr7ugo5s6wDxdHBM= -github.com/xanzy/ssh-agent v0.3.2/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= +github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.4.4/go.mod h1:rmuwmfZ0+bvzB24eSC//bk1R1Zp3hM0OXYv/G2LIilg= -github.com/yuin/goldmark v1.5.2 h1:ALmeCk/px5FSm1MAcFBAsVKZjDuMVj8Tm7FFIlMJnqU= github.com/yuin/goldmark v1.5.2/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yuin/goldmark v1.5.3 h1:3HUJmBFbQW9fhQOzMgseU134xfi6hU+mjWywx5Ty+/M= +github.com/yuin/goldmark v1.5.3/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/goldmark-emoji v1.0.1 h1:ctuWEyzGBwiucEqxzwe0SOYDXPAucOrE9NQC18Wa1os= github.com/yuin/goldmark-emoji v1.0.1/go.mod h1:2w1E6FEWLcDQkoTE+7HU6QF1F6SLlNGjRIBbIZQFqkQ= github.com/zalando/go-keyring v0.2.1 h1:MBRN/Z8H4U5wEKXiD67YbDAr5cj/DOStmSga70/2qKc= @@ -326,24 +322,23 @@ golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -golang.org/x/exp v0.0.0-20221106115401-f9659909a136 h1:Fq7F/w7MAa1KJ5bt2aJ62ihqp9HDcRuyILskkpIAurw= -golang.org/x/exp v0.0.0-20221106115401-f9659909a136/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= -golang.org/x/mod v0.6.0 h1:b9gGHsz9/HhJ3HF5DHQytPpuwocVTChQJK3AvoLRD5I= -golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/crypto v0.3.0 h1:a06MkbcxBrEFc0w0QIZWXrH/9cCX6KJyWbBOIwAn+7A= +golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/exp v0.0.0-20221114191408-850992195362 h1:NoHlPRbyl1VFI6FjwHtPQCN7wAMXI6cKcqrmXhOOfBQ= +golang.org/x/exp v0.0.0-20221114191408-850992195362/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= -golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.1.0 h1:hZ/3BUoy5aId7sCpA/Tc5lt8DkFgdVS2onTpJsZ/fl0= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/oauth2 v0.1.0 h1:isLCZuhj4v+tYv7eskaN4v/TM+A1begWWgyVJDdl1+Y= -golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= +golang.org/x/net v0.0.0-20221002022538-bcab6841153b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/oauth2 v0.2.0 h1:GtQkldQ9m7yvzCL1V+LrYow3Khe0eJH0w7RbX/VbaIU= +golang.org/x/oauth2 v0.2.0/go.mod h1:Cwn6afJ8jrQwYMxQDTpISoXmXW9I6qF6vDeuuoX3Ibs= golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -352,7 +347,6 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -368,16 +362,16 @@ golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220204135822-1c1b9b1eba6a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A= +golang.org/x/sys v0.2.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.1.0 h1:g6Z6vPFA9dYBAF7DWcH6sCcOntplXsDKcliusYijMlw= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0 h1:z85xZCsEl7bi/KwbNADeBYoOP0++7W1ipu+aGnpwzRM= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= 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= @@ -386,8 +380,8 @@ golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.2.0 h1:G6AHpWxTMGY1KyEYoAQ5WTtIekUUvDNjan3ugu60JvE= -golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.3.0 h1:SrNbZl6ECOS1qFzgTdQfWXZM9XBkiA6tkFrH9YSTPHM= +golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/pkg/chezmoi/externaldiffsystem.go new/chezmoi-2.27.2/pkg/chezmoi/externaldiffsystem.go --- old/chezmoi-2.27.1/pkg/chezmoi/externaldiffsystem.go 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/pkg/chezmoi/externaldiffsystem.go 2022-11-24 22:50:16.000000000 +0100 @@ -134,8 +134,15 @@ // Remove implements System.Remove. func (s *ExternalDiffSystem) Remove(name AbsPath) error { if s.filter.IncludeEntryTypeBits(EntryTypeRemove) { - if err := s.runDiffCommand(name, devNullAbsPath); err != nil { + switch fileInfo, err := s.system.Lstat(name); { + case errors.Is(err, fs.ErrNotExist): + // Do nothing. + case err != nil: return err + case s.filter.IncludeFileInfo(fileInfo): + if err := s.runDiffCommand(name, devNullAbsPath); err != nil { + return err + } } } return s.system.Remove(name) @@ -144,8 +151,15 @@ // RemoveAll implements System.RemoveAll. func (s *ExternalDiffSystem) RemoveAll(name AbsPath) error { if s.filter.IncludeEntryTypeBits(EntryTypeRemove) { - if err := s.runDiffCommand(name, devNullAbsPath); err != nil { + switch fileInfo, err := s.system.Lstat(name); { + case errors.Is(err, fs.ErrNotExist): + // Do nothing. + case err != nil: return err + case s.filter.IncludeFileInfo(fileInfo): + if err := s.runDiffCommand(name, devNullAbsPath); err != nil { + return err + } } } return s.system.RemoveAll(name) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/pkg/cmd/cdcmd.go new/chezmoi-2.27.2/pkg/cmd/cdcmd.go --- old/chezmoi-2.27.1/pkg/cmd/cdcmd.go 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/pkg/cmd/cdcmd.go 2022-11-24 22:50:16.000000000 +0100 @@ -3,6 +3,7 @@ import ( "github.com/spf13/cobra" + "github.com/twpayne/chezmoi/v2/pkg/chezmoi" "github.com/twpayne/chezmoi/v2/pkg/shell" ) @@ -13,12 +14,12 @@ func (c *Config) newCDCmd() *cobra.Command { cdCmd := &cobra.Command{ - Use: "cd", + Use: "cd [path]", Short: "Launch a shell in the source directory", Long: mustLongHelp("cd"), Example: example("cd"), RunE: c.runCDCmd, - Args: cobra.NoArgs, + Args: cobra.MaximumNArgs(1), Annotations: newAnnotations( createSourceDirectoryIfNeeded, doesNotRequireValidConfig, @@ -35,7 +36,21 @@ if err != nil { return err } - return c.run(c.WorkingTreeAbsPath, cdCommand, cdArgs) + var dir chezmoi.AbsPath + if len(args) == 0 { + dir = c.WorkingTreeAbsPath + } else { + sourceState, err := c.getSourceState(cmd.Context()) + if err != nil { + return err + } + sourceAbsPaths, err := c.sourceAbsPaths(sourceState, args) + if err != nil { + return err + } + dir = sourceAbsPaths[0] + } + return c.run(dir, cdCommand, cdArgs) } func (c *Config) cdCommand() (string, []string, error) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/pkg/cmd/config.go new/chezmoi-2.27.2/pkg/cmd/config.go --- old/chezmoi-2.27.1/pkg/cmd/config.go 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/pkg/cmd/config.go 2022-11-24 22:50:16.000000000 +0100 @@ -1367,7 +1367,7 @@ persistentFlags.BoolVar(&c.interactive, "interactive", c.interactive, "Prompt for all changes") persistentFlags.BoolVarP(&c.keepGoing, "keep-going", "k", c.keepGoing, "Keep going as far as possible after an error") persistentFlags.BoolVar(&c.noPager, "no-pager", c.noPager, "Do not use the pager") - persistentFlags.BoolVar(&c.noTTY, "no-tty", c.noTTY, "Do not attempt to get a TTY for reading passwords") + persistentFlags.BoolVar(&c.noTTY, "no-tty", c.noTTY, "Do not attempt to get a TTY for prompts") persistentFlags.VarP(&c.outputAbsPath, "output", "o", "Write output to path instead of stdout") persistentFlags.VarP(&c.refreshExternals, "refresh-externals", "R", "Refresh external cache") persistentFlags.Lookup("refresh-externals").NoOptDefVal = chezmoi.RefreshExternalsAlways.String() @@ -1669,6 +1669,10 @@ } } + if c.force && c.interactive { + return errors.New("the --force and --interactive flags are mutually exclusive") + } + // Configure the logger. log.Logger = log.Output(zerolog.NewConsoleWriter( func(w *zerolog.ConsoleWriter) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/pkg/cmd/initcmd.go new/chezmoi-2.27.2/pkg/cmd/initcmd.go --- old/chezmoi-2.27.1/pkg/cmd/initcmd.go 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/pkg/cmd/initcmd.go 2022-11-24 22:50:16.000000000 +0100 @@ -80,13 +80,13 @@ sshRepoGuessRepl: "git@$2:$3/$4.git", }, { - rx: regexp.MustCompile(`\Asr\.ht/~([-0-9A-Za-z]+)\z`), + rx: regexp.MustCompile(`\Asr\.ht/~([a-z_][a-z0-9_-]+)\z`), httpRepoGuessRepl: "https://$1...@git.sr.ht/~$1/dotfiles", httpUsernameGuessRepl: "$1", sshRepoGuessRepl: "g...@git.sr.ht:~$1/dotfiles", }, { - rx: regexp.MustCompile(`\Asr\.ht/~([-0-9A-Za-z]+)/([-0-9A-Za-z]+)\z`), + rx: regexp.MustCompile(`\Asr\.ht/~([a-z_][a-z0-9_-]+)/([-0-9A-Za-z]+)\z`), httpRepoGuessRepl: "https://$1...@git.sr.ht/~$1/$2", httpUsernameGuessRepl: "$1", sshRepoGuessRepl: "g...@git.sr.ht:~$1/$2", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/pkg/cmd/initcmd_test.go new/chezmoi-2.27.2/pkg/cmd/initcmd_test.go --- old/chezmoi-2.27.1/pkg/cmd/initcmd_test.go 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/pkg/cmd/initcmd_test.go 2022-11-24 22:50:16.000000000 +0100 @@ -67,16 +67,16 @@ expectedSSHRepoURL: "g...@gitlab.com:user/dots.git", }, { - arg: "sr.ht/~user", - expectedHTTPRepoURL: "https://u...@git.sr.ht/~user/dotfiles", - expectedHTTPUsername: "user", - expectedSSHRepoURL: "g...@git.sr.ht:~user/dotfiles", + arg: "sr.ht/~user_name", + expectedHTTPRepoURL: "https://user_n...@git.sr.ht/~user_name/dotfiles", + expectedHTTPUsername: "user_name", + expectedSSHRepoURL: "g...@git.sr.ht:~user_name/dotfiles", }, { - arg: "sr.ht/~user/dots", - expectedHTTPRepoURL: "https://u...@git.sr.ht/~user/dots", - expectedHTTPUsername: "user", - expectedSSHRepoURL: "g...@git.sr.ht:~user/dots", + arg: "sr.ht/~user_name/dots", + expectedHTTPRepoURL: "https://user_n...@git.sr.ht/~user_name/dots", + expectedHTTPUsername: "user_name", + expectedSSHRepoURL: "g...@git.sr.ht:~user_name/dots", }, { arg: "user", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/pkg/cmd/prompt.go new/chezmoi-2.27.2/pkg/cmd/prompt.go --- old/chezmoi-2.27.1/pkg/cmd/prompt.go 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/pkg/cmd/prompt.go 2022-11-24 22:50:16.000000000 +0100 @@ -242,6 +242,6 @@ func runModel[M tea.Model](initModel M) (M, error) { //nolint:ireturn,nolintlint program := tea.NewProgram(initModel) - finalModel, err := program.StartReturningModel() + finalModel, err := program.Run() return finalModel.(M), err //nolint:forcetypeassert } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/pkg/cmd/readdcmd.go new/chezmoi-2.27.2/pkg/cmd/readdcmd.go --- old/chezmoi-2.27.1/pkg/cmd/readdcmd.go 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/pkg/cmd/readdcmd.go 2022-11-24 22:50:16.000000000 +0100 @@ -2,6 +2,7 @@ import ( "bytes" + "fmt" "io/fs" "sort" @@ -49,6 +50,7 @@ }) sort.Sort(targetRelPaths) +TARGETRELPATH: for _, targetRelPath := range targetRelPaths { sourceStateFile, ok := sourceStateEntries[targetRelPath].(*chezmoi.SourceStateFile) if !ok { @@ -93,6 +95,41 @@ continue } + if c.interactive { + prompt := fmt.Sprintf("Re-add %s", targetRelPath) + var choices []string + if actualContents != nil || targetContents != nil { + choices = append(choices, "diff") + } + choices = append(choices, choicesYesNoAllQuit...) + FOR: + for { + switch choice, err := c.promptChoice(prompt, choices); { + case err != nil: + return err + case choice == "diff": + if err := c.diffFile( + targetRelPath, + targetContents, targetStateFile.Perm(c.Umask), + actualContents, actualStateFile.Perm(), + ); err != nil { + return err + } + case choice == "yes": + break FOR + case choice == "no": + continue TARGETRELPATH + case choice == "all": + c.interactive = false + break FOR + case choice == "quit": + return chezmoi.ExitCodeError(0) + default: + panic(fmt.Sprintf("%s: unexpected choice", choice)) + } + } + } + destAbsPathInfos := map[chezmoi.AbsPath]fs.FileInfo{ destAbsPath: destAbsPathInfo, } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/pkg/cmd/readhttpresponse.go new/chezmoi-2.27.2/pkg/cmd/readhttpresponse.go --- old/chezmoi-2.27.1/pkg/cmd/readhttpresponse.go 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/pkg/cmd/readhttpresponse.go 2022-11-24 22:50:16.000000000 +0100 @@ -181,7 +181,7 @@ }) }() - if model, err := program.StartReturningModel(); err != nil { + if model, err := program.Run(); err != nil { return nil, err } else if model.(cancelableModel).Canceled() { //nolint:forcetypeassert return nil, chezmoi.ExitCodeError(0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/pkg/cmd/testdata/scripts/cd_unix.txtar new/chezmoi-2.27.2/pkg/cmd/testdata/scripts/cd_unix.txtar --- old/chezmoi-2.27.1/pkg/cmd/testdata/scripts/cd_unix.txtar 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/pkg/cmd/testdata/scripts/cd_unix.txtar 2022-11-24 22:50:16.000000000 +0100 @@ -2,15 +2,19 @@ chmod 755 bin/shell -# test chezmoi cd creates source directory if needed +# test that chezmoi cd creates source directory if needed exec chezmoi cd exists $CHEZMOISOURCEDIR grep -count=1 ${CHEZMOISOURCEDIR@R} shell.log -# test chezmoi cd changes into an existing directory +# test that chezmoi cd changes into an existing directory exec chezmoi cd grep -count=2 ${CHEZMOISOURCEDIR@R} shell.log +# test chat chezmoi cd with an argument changes into the corresponding source directory +exec chezmoi cd $HOME${/}.dir +grep ${CHEZMOISOURCEDIR@R}/dot_dir shell.log + # test that chezmoi cd works when $SHELL environment variable contains spaces env SHELL='shell arg1' exec chezmoi cd @@ -27,6 +31,8 @@ pwd >> $WORK/shell.log echo shell $* +-- home/user/.dir/.keep -- +-- home/user/.local/share/chezmoi/dot_dir/.keep -- -- home2/user/.config/chezmoi/chezmoi.toml -- [cd] command = "shell" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/pkg/cmd/testdata/scripts/issue2573.txt new/chezmoi-2.27.2/pkg/cmd/testdata/scripts/issue2573.txt --- old/chezmoi-2.27.1/pkg/cmd/testdata/scripts/issue2573.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/chezmoi-2.27.2/pkg/cmd/testdata/scripts/issue2573.txt 2022-11-24 22:50:16.000000000 +0100 @@ -0,0 +1,17 @@ +[windows] skip 'UNIX only' +chmod 755 bin/diff + +# test that chezmoi apply --verbose with an external diff command and dirs excluded does not run the diff command when a directory is removed +exec chezmoi apply --verbose +! stdout diff + +-- bin/diff -- +#!/bin/sh + +echo diff $* +-- home/user/.config/chezmoi/chezmoi.toml -- +[diff] + command = "diff" + exclude = ["dirs"] +-- home/user/.dir/subdir/.keep -- +-- home/user/.local/share/chezmoi/exact_dot_dir/.keep -- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/pkg/cmd/testdata/scripts/issue2577.txt new/chezmoi-2.27.2/pkg/cmd/testdata/scripts/issue2577.txt --- old/chezmoi-2.27.1/pkg/cmd/testdata/scripts/issue2577.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/chezmoi-2.27.2/pkg/cmd/testdata/scripts/issue2577.txt 2022-11-24 22:50:16.000000000 +0100 @@ -0,0 +1,27 @@ +[windows] skip 'UNIX only' +chmod 755 bin/fossil + +# test that chezmoi update runs a custom update command and applies changes +exec chezmoi update +cmp $HOME/.file golden/.file + +-- bin/fossil -- +#!/bin/sh + +case "$*" in +"update") + echo "# contents of .file" > dot_file + ;; +*) + echo fossil: unknown command: $* + echo fossil: use "help" for more information + exit 1 + ;; +esac +-- golden/.file -- +# contents of .file +-- home/user/.config/chezmoi/chezmoi.toml -- +[update] + command = "fossil" + args = ["update"] +-- home/user/.local/share/chezmoi/.keep -- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.27.1/pkg/cmd/updatecmd.go new/chezmoi-2.27.2/pkg/cmd/updatecmd.go --- old/chezmoi-2.27.1/pkg/cmd/updatecmd.go 2022-11-11 19:25:15.000000000 +0100 +++ new/chezmoi-2.27.2/pkg/cmd/updatecmd.go 2022-11-24 22:50:16.000000000 +0100 @@ -10,7 +10,9 @@ ) type updateCmdConfig struct { - RecurseSubmodules bool `json:"recurseSubmodules" mapstructure:"recurseSubmodules" yaml:"recurseSubmodules"` + Command string `json:"command" mapstructure:"command" yaml:"command"` + Args []string `json:"args" mapstructure:"args" yaml:"args"` + RecurseSubmodules bool `json:"recurseSubmodules" mapstructure:"recurseSubmodules" yaml:"recurseSubmodules"` apply bool filter *chezmoi.EntryTypeFilter init bool @@ -48,7 +50,12 @@ } func (c *Config) runUpdateCmd(cmd *cobra.Command, args []string) error { - if c.UseBuiltinGit.Value(c.useBuiltinGitAutoFunc) { + switch { + case c.Update.Command != "": + if err := c.run(c.WorkingTreeAbsPath, c.Update.Command, c.Update.Args); err != nil { + return err + } + case c.UseBuiltinGit.Value(c.useBuiltinGitAutoFunc): rawWorkingTreeAbsPath, err := c.baseSystem.RawPath(c.WorkingTreeAbsPath) if err != nil { return err @@ -66,7 +73,7 @@ }); err != nil && !errors.Is(err, git.NoErrAlreadyUpToDate) { return err } - } else { + default: args := []string{ "pull", "--autostash", ++++++ chezmoi.obsinfo ++++++ --- /var/tmp/diff_new_pack.w9TpmP/_old 2022-11-26 18:45:25.543203016 +0100 +++ /var/tmp/diff_new_pack.w9TpmP/_new 2022-11-26 18:45:25.547203039 +0100 @@ -1,5 +1,5 @@ name: chezmoi -version: 2.27.1 -mtime: 1668191115 -commit: b6039e787dfffe970fec4f9165ec9ebe1b3ceaa6 +version: 2.27.2 +mtime: 1669326616 +commit: 882d0808feb1fc8112b411ed2216f31306656861 ++++++ vendor.tar.gz ++++++ ++++ 26715 lines of diff (skipped)