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)

Reply via email to