Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package chezmoi for openSUSE:Factory checked 
in at 2023-03-02 23:04:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/chezmoi (Old)
 and      /work/SRC/openSUSE:Factory/.chezmoi.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "chezmoi"

Thu Mar  2 23:04:31 2023 rev:16 rq:1068708 version:2.31.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/chezmoi/chezmoi.changes  2023-02-17 
16:46:17.703298532 +0100
+++ /work/SRC/openSUSE:Factory/.chezmoi.new.31432/chezmoi.changes       
2023-03-02 23:04:50.188253463 +0100
@@ -1,0 +2,8 @@
+Thu Mar  2 13:40:59 UTC 2023 - Filippo Bonazzi <filippo.bona...@suse.com>
+
+- Update to version 2.31.1:
+  * feat: Add Dashlane password manager support
+  * feat: Add Dashlane secure notes support
+  * chore: Update dependencies
+
+-------------------------------------------------------------------

Old:
----
  chezmoi-2.31.0.obscpio

New:
----
  chezmoi-2.31.1.obscpio

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

Other differences:
------------------
++++++ chezmoi.spec ++++++
--- /var/tmp/diff_new_pack.qyMPbr/_old  2023-03-02 23:04:51.084257939 +0100
+++ /var/tmp/diff_new_pack.qyMPbr/_new  2023-03-02 23:04:51.088257959 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           chezmoi
-Version:        2.31.0
+Version:        2.31.1
 Release:        0
 Summary:        A multi-host manager for dotfiles
 License:        MIT

++++++ _service ++++++
--- /var/tmp/diff_new_pack.qyMPbr/_old  2023-03-02 23:04:51.128258159 +0100
+++ /var/tmp/diff_new_pack.qyMPbr/_new  2023-03-02 23:04:51.132258179 +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.31.0</param>
+    <param name="revision">v2.31.1</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
   </service>

++++++ chezmoi-2.31.0.obscpio -> chezmoi-2.31.1.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.31.0/.github/workflows/main.yml 
new/chezmoi-2.31.1/.github/workflows/main.yml
--- old/chezmoi-2.31.0/.github/workflows/main.yml       2023-02-17 
12:19:43.000000000 +0100
+++ new/chezmoi-2.31.1/.github/workflows/main.yml       2023-03-01 
10:50:00.000000000 +0100
@@ -12,7 +12,7 @@
   AGE_VERSION: 1.1.1
   GO_VERSION: '1.20.1'
   GOFUMPT_VERSION: 0.4.0
-  GOLANGCI_LINT_VERSION: 1.51.1
+  GOLANGCI_LINT_VERSION: 1.51.2
   GOVERSIONINFO_VERSION: 1.4.0
 jobs:
   changes:
@@ -47,10 +47,10 @@
     - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
       with:
         fetch-depth: 1
-    - uses: github/codeql-action/init@3ebbd71c74ef574dbc558c82f70e52732c8b44fe
+    - uses: github/codeql-action/init@32dc499307d133bb5085bae78498c0ac2cf762d5
       with:
         languages: go
-    - uses: 
github/codeql-action/analyze@3ebbd71c74ef574dbc558c82f70e52732c8b44fe
+    - uses: 
github/codeql-action/analyze@32dc499307d133bb5085bae78498c0ac2cf762d5
   misspell:
     runs-on: ubuntu-22.04
     steps:
@@ -86,7 +86,7 @@
     runs-on: macos-12
     steps:
     - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
-    - uses: actions/cache@627f0f41f6904a5b1efbaed9f96d9eb58e92e920
+    - uses: actions/cache@69d9d449aced6a2ede0bc19182fadc3a0a42d2b0
       with:
         path: ~/.vagrant.d
         key: ${{ runner.os }}-vagrant-debian-i386-${{ 
hashFiles('assets/vagrant/debian11-i386.Vagrantfile') }}
@@ -112,7 +112,7 @@
     runs-on: macos-12
     steps:
     - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
-    - uses: actions/cache@627f0f41f6904a5b1efbaed9f96d9eb58e92e920
+    - uses: actions/cache@69d9d449aced6a2ede0bc19182fadc3a0a42d2b0
       with:
         path: ~/.vagrant.d
         key: ${{ runner.os }}-vagrant-freebsd13-${{ 
hashFiles('assets/vagrant/freebsd13.Vagrantfile') }}
@@ -304,7 +304,7 @@
       with:
         cache: true
         go-version: ${{ env.GO_VERSION }}
-    - uses: actions/cache@627f0f41f6904a5b1efbaed9f96d9eb58e92e920
+    - uses: actions/cache@69d9d449aced6a2ede0bc19182fadc3a0a42d2b0
       with:
         path: ~/go/pkg/mod
         key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
@@ -452,7 +452,7 @@
         cp assets/scripts/install.ps1 assets/get.chezmoi.io/ps1
         cp LICENSE assets/get.chezmoi.io/LICENSE
     - name: push-get.chezmoi.io
-      uses: 
cpina/github-action-push-to-another-repository@9e487f29582587eeb4837c0552c886bb0644b6b9
+      uses: 
cpina/github-action-push-to-another-repository@0a14457bb28b04dfa1652e0ffdfda866d2845c73
       env:
         SSH_DEPLOY_KEY: ${{ secrets.GET_CHEZMOI_IO_SSH_DEPLOY_KEY }}
       with:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.31.0/.golangci.yml 
new/chezmoi-2.31.1/.golangci.yml
--- old/chezmoi-2.31.0/.golangci.yml    2023-02-17 12:19:43.000000000 +0100
+++ new/chezmoi-2.31.1/.golangci.yml    2023-03-01 10:50:00.000000000 +0100
@@ -3,6 +3,7 @@
   - asciicheck
   - bidichk
   - bodyclose
+  - containedctx
   - contextcheck
   - decorder
   - depguard
@@ -19,8 +20,8 @@
   - forbidigo
   - forcetypeassert
   - gci
-  - gocritic
   - gocheckcompilerdirectives
+  - gocritic
   - godot
   - goerr113
   - gofmt
@@ -31,6 +32,7 @@
   - gosec
   - gosimple
   - govet
+  - grouper
   - importas
   - ineffassign
   - interfacebloat
@@ -39,6 +41,7 @@
   - loggercheck
   - makezero
   - misspell
+  - musttag
   - nilerr
   - noctx
   - nolintlint
@@ -58,12 +61,12 @@
   - unconvert
   - unparam
   - unused
+  - usestdlibvars
   - whitespace
   disable:
   - asasalint
   - cyclop
   - exhaustive
-  - exhaustivestruct
   - exhaustruct
   - funlen
   - ginkgolinter
@@ -83,10 +86,8 @@
   - nilnil
   - nlreturn
   - nonamedreturns
-  - nosnakecase
   - paralleltest
   - rowserrcheck # https://github.com/golangci/golangci-lint/issues/2649
-  - sqlclosecheck # https://github.com/golangci/golangci-lint/issues/2649
   - testpackage
   - tparallel
   - varnamelen
@@ -113,6 +114,11 @@
     module-path: github.com/twpayne/chezmoi
   goimports:
     local-prefixes: github.com/twpayne/chezmoi
+  govet:
+    disable:
+    - fieldalignment
+    - shadow
+    enable-all: true
   ireturn:
     allow:
     - anon
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/reference/configuration-file/editor.md
 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/reference/configuration-file/editor.md
--- 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/reference/configuration-file/editor.md
    2023-02-17 12:19:43.000000000 +0100
+++ 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/reference/configuration-file/editor.md
    2023-03-01 10:50:00.000000000 +0100
@@ -6,7 +6,7 @@
 on Windows systems and `vi` on non-Windows systems.
 
 When the `edit.command` configuration variable is used, extra arguments can be
-passed to the editor with the `editor.args` configuration variable.
+passed to the editor with the `edit.args` configuration variable.
 
 chezmoi will emit a warning if the editor returns in less than
 `edit.minDuration` (default `1s`). To disable this warning, set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/reference/configuration-file/variables.md.yaml
 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/reference/configuration-file/variables.md.yaml
--- 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/reference/configuration-file/variables.md.yaml
    2023-02-17 12:19:43.000000000 +0100
+++ 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/reference/configuration-file/variables.md.yaml
    2023-03-01 10:50:00.000000000 +0100
@@ -101,6 +101,13 @@
     custom:
       type: bool
       description: Enable custom shell completions
+  dashlane:
+    args:
+      type: '[]string'
+      description: Extra args to Dashlane CLI command
+    command:
+      default: '`dcli`'
+      description: Dashlane CLI command
   diff:
     args:
       type: '[]string'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/reference/special-files-and-directories/chezmoiexternal-format.md
 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/reference/special-files-and-directories/chezmoiexternal-format.md
--- 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/reference/special-files-and-directories/chezmoiexternal-format.md
 2023-02-17 12:19:43.000000000 +0100
+++ 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/reference/special-files-and-directories/chezmoiexternal-format.md
 2023-03-01 10:50:00.000000000 +0100
@@ -22,16 +22,12 @@
 | Variable          | Type     | Default value | Description                   
                                |
 | ----------------- | -------- | ------------- | 
------------------------------------------------------------- |
 | `type`            | string   | *none*        | External type (`file`, 
`archive`, or `git-repo`)              |
-| `clone.args`      | []string | *none*        | Extra args to `git clone`     
                                |
 | `encrypted`       | bool     | `false`       | Whether the external is 
encrypted                             |
 | `exact`           | bool     | `false`       | Add `exact_` attribute to 
directories in archive              |
 | `exclude`         | []string | *none*        | Patterns to exclude from 
archive                              |
 | `executable`      | bool     | `false`       | Add `executable_` attribute 
to file                           |
-| `filter.command`  | string   | *none*        | Command to filter contents    
                                |
-| `filter.args`     | []string | *none*        | Extra args to command to 
filter contents                      |
 | `format`          | string   | *autodetect*  | Format of archive             
                                |
 | `include`         | []string | *none*        | Patterns to include from 
archive                              |
-| `pull.args`       | []string | *none*        | Extra args to `git pull`      
                                |
 | `refreshPeriod`   | duration | `0`           | Refresh period                
                                |
 | `stripComponents` | int      | `0`           | Number of leading directory 
components to strip from archives |
 | `url`             | string   | *none*        | URL                           
                                |
@@ -39,6 +35,10 @@
 | `checksum.sha384` | string   | *none*        | Expected SHA384 checksum of 
data                              |
 | `checksum.sha512` | string   | *none*        | Expected SHA512 checksum of 
data                              |
 | `checksum.size`   | int      | *none*        | Expected size of data         
                                |
+| `clone.args`      | []string | *none*        | Extra args to `git clone`     
                                |
+| `filter.command`  | string   | *none*        | Command to filter contents    
                                |
+| `filter.args`     | []string | *none*        | Extra args to command to 
filter contents                      |
+| `pull.args`       | []string | *none*        | Extra args to `git pull`      
                                |
 
 If any of the optional `checksum.sha256`, `checksum.sha384`, or
 `checksum.sha512` fields are set, chezmoi will verify that the downloaded data
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/reference/templates/dashlane-functions/dashlaneNote.md
 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/reference/templates/dashlane-functions/dashlaneNote.md
--- 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/reference/templates/dashlane-functions/dashlaneNote.md
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/reference/templates/dashlane-functions/dashlaneNote.md
    2023-03-01 10:50:00.000000000 +0100
@@ -0,0 +1,15 @@
+# `dashlaneNote` *filter*
+
+`dashlaneNote` returns the content of a secure note from 
[Dashlane](https://dashlane.com)
+using the [Dashlane CLI](https://github.com/Dashlane/dashlane-cli) (`dcli`).
+*filter* is passed to `dcli note`, and the output from `dcli
+note` is just read as a multiline string.
+
+The output from `dcli note` is cached so calling `dashlaneNote` multiple
+times with the same *filter* will only invoke `dcli note` once.
+
+!!! example
+
+    ```
+    {{ dashlaneNote "filter" }}
+    ```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/reference/templates/dashlane-functions/dashlanePassword.md
 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/reference/templates/dashlane-functions/dashlanePassword.md
--- 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/reference/templates/dashlane-functions/dashlanePassword.md
        1970-01-01 01:00:00.000000000 +0100
+++ 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/reference/templates/dashlane-functions/dashlanePassword.md
        2023-03-01 10:50:00.000000000 +0100
@@ -0,0 +1,15 @@
+# `dashlanePassword` *filter*
+
+`dashlanePassword` returns structured data from 
[Dashlane](https://dashlane.com)
+using the [Dashlane CLI](https://github.com/Dashlane/dashlane-cli) (`dcli`).
+*filter* is passed to `dcli password --output json`, and the output from `dcli
+password` is parsed as JSON.
+
+The output from `dcli password` cached so calling `dashlanePassword` multiple
+times with the same *filter* will only invoke `dcli password` once.
+
+!!! example
+
+    ```
+    {{ (index (dashlanePassword "filter") 0).password }}
+    ```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/reference/templates/dashlane-functions/index.md
 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/reference/templates/dashlane-functions/index.md
--- 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/reference/templates/dashlane-functions/index.md
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/reference/templates/dashlane-functions/index.md
   2023-03-01 10:50:00.000000000 +0100
@@ -0,0 +1,4 @@
+# Dashlane functions
+
+The `dashlane*` functions return data from [Dashlane](https://dashlane.com)
+using the [Dashlane CLI](https://github.com/Dashlane/dashlane-cli).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/reference/templates/directives.md 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/reference/templates/directives.md
--- old/chezmoi-2.31.0/assets/chezmoi.io/docs/reference/templates/directives.md 
2023-02-17 12:19:43.000000000 +0100
+++ new/chezmoi-2.31.1/assets/chezmoi.io/docs/reference/templates/directives.md 
2023-03-01 10:50:00.000000000 +0100
@@ -48,11 +48,11 @@
 
 `$VALUE` can be an arbitrary string or one of:
 
-| Value    | Effect                                                            
    |
-| -------- | 
--------------------------------------------------------------------- |
-| `crlf`   | Use Windows line endings (`\r\n`).                                
    |
-| `lf`     | Use UNIX-style line endings (`\n`).                               
    |
-| `native` | Use platform-native line endings (`crlf` on Windows, `lf` 
elsewhere). |
+| Value    | Effect                                                            
   |
+| -------- | 
-------------------------------------------------------------------- |
+| `crlf`   | Use Windows line endings (`\r\n`)                                 
   |
+| `lf`     | Use UNIX-style line endings (`\n`)                                
   |
+| `native` | Use platform-native line endings (`crlf` on Windows, `lf` 
elsewhere) |
 
 ## Missing keys
 
@@ -64,8 +64,8 @@
 
 `$VALUE` can be one of:
 
-| Value     | Effect                                                           
                              |
-| --------- | 
----------------------------------------------------------------------------------------------
 |
-| `error`   | Return an error on any missing key (default).                    
                              |
-| `invalid` | Ignore missing keys. If printed, the result of the index 
operation is the string `<no value>`. |
-| `zero`    | Ignore missing keys. If printed, the result of the index 
operation is the zero value.          |
+| Value     | Effect                                                           
                             |
+| --------- | 
---------------------------------------------------------------------------------------------
 |
+| `error`   | Return an error on any missing key (default)                     
                             |
+| `invalid` | Ignore missing keys. If printed, the result of the index 
operation is the string `<no value>` |
+| `zero`    | Ignore missing keys. If printed, the result of the index 
operation is the zero value          |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/user-guide/frequently-asked-questions/externals.md
 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/user-guide/frequently-asked-questions/externals.md
--- 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/user-guide/frequently-asked-questions/externals.md
        1970-01-01 01:00:00.000000000 +0100
+++ 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/user-guide/frequently-asked-questions/externals.md
        2023-03-01 10:50:00.000000000 +0100
@@ -0,0 +1,8 @@
+# Externals
+
+## Why do files in `git-repo` externals appear in `chezmoi unmanaged`?
+
+chezmoi's support for `git-repo` externals is limited to running `git init` and
+`git pull` in the directory. This means that the directory is managed by 
chezmoi
+but its contents are not. Consequently, `git-repo` directories are listed by
+`chezmoi managed` but their contents are listed in `chezmoi unmanaged`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/user-guide/include-files-from-elsewhere.md
 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/user-guide/include-files-from-elsewhere.md
--- 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/user-guide/include-files-from-elsewhere.md
        2023-02-17 12:19:43.000000000 +0100
+++ 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/user-guide/include-files-from-elsewhere.md
        2023-03-01 10:50:00.000000000 +0100
@@ -207,7 +207,8 @@
     directory to git. chezmoi cannot manage any other files in that directory.
 
     The contents of `git-repo` externals will not be manifested in commands
-    like `chezmoi archive` or `chezmoi dump`.
+    like `chezmoi diff` or `chezmoi dump`, and will be listed by `chezmoi
+    unmanaged`.
 
 !!! hint
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/user-guide/password-managers/dashlane.md
 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/user-guide/password-managers/dashlane.md
--- 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/user-guide/password-managers/dashlane.md
  1970-01-01 01:00:00.000000000 +0100
+++ 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/user-guide/password-managers/dashlane.md
  2023-03-01 10:50:00.000000000 +0100
@@ -0,0 +1,17 @@
+# Dashlane
+
+chezmoi includes support for [Dashlane](https://dashlane.com).
+
+Structured data can be retrieved with the `dashlanePassword` template function,
+for example:
+
+```
+examplePassword = {{ (index (dashlanePassword "filter") 0).password }}
+```
+
+Secure notes can be retrieved with the `dashlaneNote` template function,
+for example:
+
+```
+exampleNote = {{ dashlaneNote "filter" }}
+```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/chezmoi-2.31.0/assets/chezmoi.io/docs/what-does-chezmoi-do.md 
new/chezmoi-2.31.1/assets/chezmoi.io/docs/what-does-chezmoi-do.md
--- old/chezmoi-2.31.0/assets/chezmoi.io/docs/what-does-chezmoi-do.md   
2023-02-17 12:19:43.000000000 +0100
+++ new/chezmoi-2.31.1/assets/chezmoi.io/docs/what-does-chezmoi-do.md   
2023-03-01 10:50:00.000000000 +0100
@@ -44,9 +44,10 @@
 format of your choice. chezmoi can retrieve secrets from
 [1Password](https://1password.com/), [AWS Secrets
 Manager](https://aws.amazon.com/secrets-manager/),
-[Bitwarden](https://bitwarden.com/), [gopass](https://www.gopass.pw/),
-[KeePassXC](https://keepassxc.org/), [Keeper](https://www.keepersecurity.com/),
-[LastPass](https://lastpass.com/), [pass](https://www.passwordstore.org/),
+[Bitwarden](https://bitwarden.com/), [Dashlane](https://www.dashlane.com/),
+[gopass](https://www.gopass.pw/), [KeePassXC](https://keepassxc.org/),
+[Keeper](https://www.keepersecurity.com/), [LastPass](https://lastpass.com/),
+[pass](https://www.passwordstore.org/),
 [passhole](https://github.com/Evidlo/passhole),
 [Vault](https://www.vaultproject.io/), Keychain,
 [Keyring](https://wiki.gnome.org/Projects/GnomeKeyring), or any command-line
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.31.0/assets/chezmoi.io/mkdocs.yml 
new/chezmoi-2.31.1/assets/chezmoi.io/mkdocs.yml
--- old/chezmoi-2.31.0/assets/chezmoi.io/mkdocs.yml     2023-02-17 
12:19:43.000000000 +0100
+++ new/chezmoi-2.31.1/assets/chezmoi.io/mkdocs.yml     2023-03-01 
10:50:00.000000000 +0100
@@ -62,6 +62,7 @@
     - 1Password: user-guide/password-managers/1password.md
     - AWS Secrets Manager: user-guide/password-managers/aws-secrets-manager.md
     - Bitwarden: user-guide/password-managers/bitwarden.md
+    - Dashlane: user-guide/password-managers/dashlane.md
     - gopass: user-guide/password-managers/gopass.md
     - KeePassXC: user-guide/password-managers/keepassxc.md
     - Keychain and Windows Credentials Manager: 
user-guide/password-managers/keychain-and-windows-credentials-manager.md
@@ -88,6 +89,7 @@
   - Frequently asked questions:
     - Usage: user-guide/frequently-asked-questions/usage.md
     - Encryption: user-guide/frequently-asked-questions/encryption.md
+    - Externals: user-guide/frequently-asked-questions/externals.md
     - Troubleshooting: user-guide/frequently-asked-questions/troubleshooting.md
     - Design: user-guide/frequently-asked-questions/design.md
     - General: user-guide/frequently-asked-questions/general.md
@@ -239,6 +241,10 @@
       - reference/templates/gopass-functions/index.md
       - gopass: reference/templates/gopass-functions/gopass.md
       - gopassRaw: reference/templates/gopass-functions/gopassRaw.md
+    - Dashlane functions:
+      - reference/templates/dashlane-functions/index.md
+      - dashlaneNote: reference/templates/dashlane-functions/dashlaneNote.md
+      - dashlanePassword: 
reference/templates/dashlane-functions/dashlanePassword.md
     - KeePassXC functions:
       - reference/templates/keepassxc-functions/index.md
       - keepassxc: reference/templates/keepassxc-functions/keepassxc.md
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.31.0/go.mod new/chezmoi-2.31.1/go.mod
--- old/chezmoi-2.31.0/go.mod   2023-02-17 12:19:43.000000000 +0100
+++ new/chezmoi-2.31.1/go.mod   2023-03-01 10:50:00.000000000 +0100
@@ -5,9 +5,9 @@
 require (
        filippo.io/age v1.1.1
        github.com/Masterminds/sprig/v3 v3.2.3
-       github.com/aws/aws-sdk-go-v2 v1.17.4
-       github.com/aws/aws-sdk-go-v2/config v1.18.13
-       github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.18.4
+       github.com/aws/aws-sdk-go-v2 v1.17.5
+       github.com/aws/aws-sdk-go-v2/config v1.18.15
+       github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.18.6
        github.com/bmatcuk/doublestar/v4 v4.6.0
        github.com/bradenhilton/mozillainstallhash v1.0.0
        github.com/charmbracelet/bubbles v0.15.0
@@ -15,31 +15,31 @@
        github.com/charmbracelet/glamour v0.6.0
        github.com/coreos/go-semver v0.3.1
        github.com/fsnotify/fsnotify v1.6.0
-       github.com/go-git/go-git/v5 v5.5.2
-       github.com/google/go-github/v50 v50.0.0
+       github.com/go-git/go-git/v5 v5.6.0
+       github.com/google/go-github/v50 v50.1.0
        github.com/google/renameio/v2 v2.0.0
        github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79
-       github.com/klauspost/compress v1.15.15
+       github.com/klauspost/compress v1.16.0
        github.com/mitchellh/mapstructure v1.5.0
        github.com/muesli/combinator v0.3.0
        github.com/muesli/termenv v0.14.0
-       github.com/pelletier/go-toml/v2 v2.0.6
+       github.com/pelletier/go-toml/v2 v2.0.7
        github.com/rogpeppe/go-internal v1.9.0
        github.com/rs/zerolog v1.29.0
        github.com/sergi/go-diff v1.1.0
        github.com/spf13/cobra v1.6.1
        github.com/spf13/pflag v1.0.5
-       github.com/stretchr/testify v1.8.1
+       github.com/stretchr/testify v1.8.2
        github.com/twpayne/go-pinentry v0.2.0
-       github.com/twpayne/go-vfs/v4 v4.1.0
-       github.com/twpayne/go-xdg/v6 v6.0.0
+       github.com/twpayne/go-vfs/v4 v4.2.0
+       github.com/twpayne/go-xdg/v6 v6.1.1
        github.com/ulikunitz/xz v0.5.11
        github.com/withfig/autocomplete-tools/integrations/cobra v1.2.1
        github.com/zalando/go-keyring v0.2.2
        go.etcd.io/bbolt v1.3.7
        go.uber.org/multierr v1.9.0
        golang.org/x/crypto v0.6.0
-       golang.org/x/exp v0.0.0-20230213192124-5e25df0256eb
+       golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2
        golang.org/x/oauth2 v0.5.0
        golang.org/x/sync v0.1.0
        golang.org/x/sys v0.5.0
@@ -54,22 +54,22 @@
        github.com/Masterminds/goutils v1.1.1 // indirect
        github.com/Masterminds/semver/v3 v3.2.0 // indirect
        github.com/Microsoft/go-winio v0.6.0 // indirect
-       github.com/ProtonMail/go-crypto v0.0.0-20230214155104-81033d7f4442 // 
indirect
-       github.com/acomagu/bufpipe v1.0.3 // indirect
+       github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 // 
indirect
+       github.com/acomagu/bufpipe v1.0.4 // indirect
        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.13.13 // indirect
-       github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.22 // indirect
-       github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.28 // indirect
-       github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.22 // indirect
-       github.com/aws/aws-sdk-go-v2/internal/ini v1.3.29 // indirect
-       github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.22 // 
indirect
-       github.com/aws/aws-sdk-go-v2/service/sso v1.12.2 // indirect
-       github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.2 // indirect
-       github.com/aws/aws-sdk-go-v2/service/sts v1.18.3 // indirect
+       github.com/aws/aws-sdk-go-v2/credentials v1.13.15 // indirect
+       github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.23 // indirect
+       github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.29 // indirect
+       github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.23 // indirect
+       github.com/aws/aws-sdk-go-v2/internal/ini v1.3.30 // indirect
+       github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.23 // 
indirect
+       github.com/aws/aws-sdk-go-v2/service/sso v1.12.4 // indirect
+       github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.4 // indirect
+       github.com/aws/aws-sdk-go-v2/service/sts v1.18.5 // indirect
        github.com/aws/smithy-go v1.13.5 // indirect
-       github.com/aymanbagabas/go-osc52 v1.2.1 // indirect
+       github.com/aymanbagabas/go-osc52 v1.2.2 // 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
@@ -78,7 +78,7 @@
        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
-       github.com/dlclark/regexp2 v1.8.0 // indirect
+       github.com/dlclark/regexp2 v1.8.1 // indirect
        github.com/emirpasic/gods v1.18.1 // indirect
        github.com/go-git/gcfg v1.5.0 // indirect
        github.com/go-git/go-billy/v5 v5.4.1 // indirect
@@ -106,11 +106,11 @@
        github.com/muesli/reflow v0.3.0 // indirect
        github.com/olekukonko/tablewriter v0.0.5 // indirect
        github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
-       github.com/pjbgf/sha1cd v0.2.3 // indirect
+       github.com/pjbgf/sha1cd v0.3.0 // indirect
        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.3 // indirect
+       github.com/rivo/uniseg v0.4.4 // indirect
        github.com/shopspring/decimal v1.3.1 // indirect
        github.com/skeema/knownhosts v1.1.0 // indirect
        github.com/spf13/cast v1.5.0 // indirect
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.31.0/go.sum new/chezmoi-2.31.1/go.sum
--- old/chezmoi-2.31.0/go.sum   2023-02-17 12:19:43.000000000 +0100
+++ new/chezmoi-2.31.1/go.sum   2023-03-01 10:50:00.000000000 +0100
@@ -12,10 +12,11 @@
 github.com/Microsoft/go-winio v0.6.0 
h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg=
 github.com/Microsoft/go-winio v0.6.0/go.mod 
h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE=
 github.com/ProtonMail/go-crypto v0.0.0-20221026131551-cf6655e29de4/go.mod 
h1:UBYPn8k0D56RtnR8RFQMjmh4KrZzWJ5o7Z9SYjossQ8=
-github.com/ProtonMail/go-crypto v0.0.0-20230214155104-81033d7f4442 
h1:OUJ54Fkd+AQXYmr9eOUxZfWNzpK3/e/KD40qa2rKHS4=
-github.com/ProtonMail/go-crypto v0.0.0-20230214155104-81033d7f4442/go.mod 
h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g=
-github.com/acomagu/bufpipe v1.0.3 
h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk=
+github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 
h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA=
+github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod 
h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g=
 github.com/acomagu/bufpipe v1.0.3/go.mod 
h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
+github.com/acomagu/bufpipe v1.0.4 
h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ=
+github.com/acomagu/bufpipe v1.0.4/go.mod 
h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
 github.com/alecthomas/chroma v0.10.0 
h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek=
 github.com/alecthomas/chroma v0.10.0/go.mod 
h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s=
 github.com/alessio/shellescape v1.4.1 
h1:V7yhSDDn8LP4lc4jS8pFkt0zCnzVJlG5JXy9BVKJUX0=
@@ -26,35 +27,36 @@
 github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod 
h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 github.com/atotto/clipboard v0.1.4 
h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
 github.com/atotto/clipboard v0.1.4/go.mod 
h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
-github.com/aws/aws-sdk-go-v2 v1.17.4 
h1:wyC6p9Yfq6V2y98wfDsj6OnNQa4w2BLGCLIxzNhwOGY=
-github.com/aws/aws-sdk-go-v2 v1.17.4/go.mod 
h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw=
-github.com/aws/aws-sdk-go-v2/config v1.18.13 
h1:v0xlYqbO6/EVlM8tUn2QEOA7btQxcgidEq2JRDBPTho=
-github.com/aws/aws-sdk-go-v2/config v1.18.13/go.mod 
h1:r39wGSZB7wPDW1i54JyQXUpc5KsWjh5z/3S5D9eCqDg=
-github.com/aws/aws-sdk-go-v2/credentials v1.13.13 
h1:zw1KAc1kl00NYd3ofVmFrb09qnYlSQMeh+fmlQRAihI=
-github.com/aws/aws-sdk-go-v2/credentials v1.13.13/go.mod 
h1:DW9nbIIF9MrIja0cBQrUpeWYQMSlNmP8fevLUyF9W38=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.22 
h1:3aMfcTmoXtTZnaT86QlVaYh+BRMbvrrmZwIQ5jWqCZQ=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.22/go.mod 
h1:YGSIJyQ6D6FjKMQh16hVFSIUD54L4F7zTGePqYMYYJU=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.28 
h1:r+XwaCLpIvCKjBIYy/HVZujQS9tsz5ohHG3ZIe0wKoE=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.28/go.mod 
h1:3lwChorpIM/BhImY/hy+Z6jekmN92cXGPI1QJasVPYY=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.22 
h1:7AwGYXDdqRQYsluvKFmWoqpcOQJ4bH634SkYf3FNj/A=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.22/go.mod 
h1:EqK7gVrIGAHyZItrD1D8B0ilgwMD1GiWAmbU4u/JHNk=
-github.com/aws/aws-sdk-go-v2/internal/ini v1.3.29 
h1:J4xhFd6zHhdF9jPP0FQJ6WknzBboGMBNjKOv4iTuw4A=
-github.com/aws/aws-sdk-go-v2/internal/ini v1.3.29/go.mod 
h1:TwuqRBGzxjQJIwH16/fOZodwXt2Zxa9/cwJC5ke4j7s=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.22 
h1:LjFQf8hFuMO22HkV5VWGLBvmCLBCLPivUAmpdpnp4Vs=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.22/go.mod 
h1:xt0Au8yPIwYXf/GYPy/vl4K3CgwhfQMYbrH7DlUUIws=
-github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.18.4 
h1:0P9VF9miVGT40WSZSuMzHwkwTVIltpDrTrvswMLjbx0=
-github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.18.4/go.mod 
h1:hqPcyOuLU6yWIbLy3qMnQnmidgKuIEwqIlW6+chYnog=
-github.com/aws/aws-sdk-go-v2/service/sso v1.12.2 
h1:EN102fWY7hI5u/2FPheTrwwMHkSXfl49RYkeEnJsrCU=
-github.com/aws/aws-sdk-go-v2/service/sso v1.12.2/go.mod 
h1:IgV8l3sj22nQDd5qcAGY0WenwCzCphqdbFOpfktZPrI=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.2 
h1:f1lmlce7r13CX1BPyPqt9oh/H+uqOWc9367lDoGGwNQ=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.2/go.mod 
h1:O1YSOg3aekZibh2SngvCRRG+cRHKKlYgxf/JBF/Kr/k=
-github.com/aws/aws-sdk-go-v2/service/sts v1.18.3 
h1:s49mSnsBZEXjfGBkRfmK+nPqzT7Lt3+t2SmAKNyHblw=
-github.com/aws/aws-sdk-go-v2/service/sts v1.18.3/go.mod 
h1:b+psTJn33Q4qGoDaM7ZiOVVG8uVjGI6HaZ8WBHdgDgU=
+github.com/aws/aws-sdk-go-v2 v1.17.5 
h1:TzCUW1Nq4H8Xscph5M/skINUitxM5UBAyvm2s7XBzL4=
+github.com/aws/aws-sdk-go-v2 v1.17.5/go.mod 
h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw=
+github.com/aws/aws-sdk-go-v2/config v1.18.15 
h1:509yMO0pJUGUugBP2H9FOFyV+7Mz7sRR+snfDN5W4NY=
+github.com/aws/aws-sdk-go-v2/config v1.18.15/go.mod 
h1:vS0tddZqpE8cD9CyW0/kITHF5Bq2QasW9Y1DFHD//O0=
+github.com/aws/aws-sdk-go-v2/credentials v1.13.15 
h1:0rZQIi6deJFjOEgHI9HI2eZcLPPEGQPictX66oRFLL8=
+github.com/aws/aws-sdk-go-v2/credentials v1.13.15/go.mod 
h1:vRMLMD3/rXU+o6j2MW5YefrGMBmdTvkLLGqFwMLBHQc=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.23 
h1:Kbiv9PGnQfG/imNI4L/heyUXvzKmcWSBeDvkrQz5pFc=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.23/go.mod 
h1:mOtmAg65GT1HIL/HT/PynwPbS+UG0BgCZ6vhkPqnxWo=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.29 
h1:9/aKwwus0TQxppPXFmf010DFrE+ssSbzroLVYINA+xE=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.29/go.mod 
h1:Dip3sIGv485+xerzVv24emnjX5Sg88utCL8fwGmCeWg=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.23 
h1:b/Vn141DBuLVgXbhRWIrl9g+ww7G+ScV5SzniWR13jQ=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.23/go.mod 
h1:mr6c4cHC+S/MMkrjtSlG4QA36kOznDep+0fga5L/fGQ=
+github.com/aws/aws-sdk-go-v2/internal/ini v1.3.30 
h1:IVx9L7YFhpPq0tTnGo8u8TpluFu7nAn9X3sUDMb11c0=
+github.com/aws/aws-sdk-go-v2/internal/ini v1.3.30/go.mod 
h1:vsbq62AOBwQ1LJ/GWKFxX8beUEYeRp/Agitrxee2/qM=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.23 
h1:QoOybhwRfciWUBbZ0gp9S7XaDnCuSTeK/fySB99V1ls=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.23/go.mod 
h1:9uPh+Hrz2Vn6oMnQYiUi/zbh3ovbnQk19YKINkQny44=
+github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.18.6 
h1:VjvQw/1Qf/rhDSl+NNOeybSpdPRjBfH60//5vzveVsY=
+github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.18.6/go.mod 
h1:CJcdJtrO6ulXfI8l2DotKWmJShhXHCEcd9Wibyx3kC0=
+github.com/aws/aws-sdk-go-v2/service/sso v1.12.4 
h1:qJdM48OOLl1FBSzI7ZrA1ZfLwOyCYqkXV5lko1hYDBw=
+github.com/aws/aws-sdk-go-v2/service/sso v1.12.4/go.mod 
h1:jtLIhd+V+lft6ktxpItycqHqiVXrPIRjWIsFIlzMriw=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.4 
h1:YRkWXQveFb0tFC0TLktmmhGsOcCgLwvq88MC2al47AA=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.4/go.mod 
h1:zVwRrfdSmbRZWkUkWjOItY7SOalnFnq/Yg2LVPqDjwc=
+github.com/aws/aws-sdk-go-v2/service/sts v1.18.5 
h1:L1600eLr0YvTT7gNh3Ni24yGI7NSHkq9Gp62vijPRCs=
+github.com/aws/aws-sdk-go-v2/service/sts v1.18.5/go.mod 
h1:1mKZHLLpDMHTNSYPJ7qrcnCQdHCWsNQaT0xRvq2u80s=
 github.com/aws/smithy-go v1.13.5 
h1:hgz0X/DX0dGqTYpGALqXJoRKRj5oQ7150i5FdTePzO8=
 github.com/aws/smithy-go v1.13.5/go.mod 
h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
 github.com/aymanbagabas/go-osc52 v1.0.3/go.mod 
h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4=
-github.com/aymanbagabas/go-osc52 v1.2.1 
h1:q2sWUyDcozPLcLabEMd+a+7Ea2DitxZVN9hTxab9L4E=
 github.com/aymanbagabas/go-osc52 v1.2.1/go.mod 
h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4=
+github.com/aymanbagabas/go-osc52 v1.2.2 
h1:NT7wkhEhPTcKnBCdPi9djmyy9L3JOL4+3SsfJyqptCo=
+github.com/aymanbagabas/go-osc52 v1.2.2/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.6.0 
h1:HTuxyug8GyFbRkrffIpzNCSK4luc0TY3wzXvzIZhEXc=
@@ -95,8 +97,8 @@
 github.com/davecgh/go-spew v1.1.1 
h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod 
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/dlclark/regexp2 v1.4.0/go.mod 
h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
-github.com/dlclark/regexp2 v1.8.0 
h1:rJD5HeGIT/2b5CDk63FVCwZA3qgYElfg+oQK7uH5pfE=
-github.com/dlclark/regexp2 v1.8.0/go.mod 
h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
+github.com/dlclark/regexp2 v1.8.1 
h1:6Lcdwya6GjPUNsBct8Lg/yRPwMhABj269AAzdGSiR+0=
+github.com/dlclark/regexp2 v1.8.1/go.mod 
h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
 github.com/emirpasic/gods v1.18.1 
h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
 github.com/emirpasic/gods v1.18.1/go.mod 
h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
 github.com/frankban/quicktest v1.14.4 
h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY=
@@ -112,8 +114,8 @@
 github.com/go-git/go-billy/v5 v5.4.1/go.mod 
h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg=
 github.com/go-git/go-git-fixtures/v4 v4.3.1 
h1:y5z6dd3qi8Hl+stezc8p3JxDkoTRqMAlKnXHuzrfjTQ=
 github.com/go-git/go-git-fixtures/v4 v4.3.1/go.mod 
h1:8LHG1a3SRW71ettAD/jW13h8c6AqjVSeL11RAdgaqpo=
-github.com/go-git/go-git/v5 v5.5.2 
h1:v8lgZa5k9ylUw+OR/roJHTxR4QItsNFI5nKtAXFuynw=
-github.com/go-git/go-git/v5 v5.5.2/go.mod 
h1:BE5hUJ5yaV2YMxhmaP4l6RBQ08kMxKSPD4BlxtH7OjI=
+github.com/go-git/go-git/v5 v5.6.0 
h1:JvBdYfcttd+0kdpuWO7KTu0FYgCf5W0t5VwkWGobaa4=
+github.com/go-git/go-git/v5 v5.6.0/go.mod 
h1:6nmJ0tJ3N4noMV1Omv7rC5FG3/o8Cm51TB4CJp7mRmE=
 github.com/godbus/dbus/v5 v5.0.4/go.mod 
h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 github.com/godbus/dbus/v5 v5.1.0 
h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
 github.com/godbus/dbus/v5 v5.1.0/go.mod 
h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
@@ -129,8 +131,8 @@
 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-cmp v0.5.9/go.mod 
h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-github/v50 v50.0.0 
h1:gdO1AeuSZZK4iYWwVbjni7zg8PIQhp7QfmPunr016Jk=
-github.com/google/go-github/v50 v50.0.0/go.mod 
h1:Ev4Tre8QoKiolvbpOSG3FIi4Mlon3S2Nt9W5JYqKiwA=
+github.com/google/go-github/v50 v50.1.0 
h1:hMUpkZjklC5GJ+c3GquSqOP/T4BNsB7XohaPhtMOzRk=
+github.com/google/go-github/v50 v50.1.0/go.mod 
h1:Ev4Tre8QoKiolvbpOSG3FIi4Mlon3S2Nt9W5JYqKiwA=
 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/v2 v2.0.0 
h1:UifI23ZTGY8Tt29JbYFiuyIU3eX+RNFtUwefq9qAhxg=
@@ -162,8 +164,8 @@
 github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod 
h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
 github.com/kevinburke/ssh_config v1.2.0 
h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
 github.com/kevinburke/ssh_config v1.2.0/go.mod 
h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
-github.com/klauspost/compress v1.15.15 
h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw=
-github.com/klauspost/compress v1.15.15/go.mod 
h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4=
+github.com/klauspost/compress v1.16.0 
h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4=
+github.com/klauspost/compress v1.16.0/go.mod 
h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
 github.com/kr/pretty v0.1.0/go.mod 
h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 github.com/kr/pretty v0.2.1/go.mod 
h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
@@ -204,6 +206,8 @@
 github.com/mitchellh/reflectwalk v1.0.0/go.mod 
h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
 github.com/mitchellh/reflectwalk v1.0.2 
h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
 github.com/mitchellh/reflectwalk v1.0.2/go.mod 
h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
+github.com/mmcloughlin/avo v0.5.0 
h1:nAco9/aI9Lg2kiuROBY6BhCI/z0t5jEvJfjWbL8qXLU=
+github.com/mmcloughlin/avo v0.5.0/go.mod 
h1:ChHFdoV7ql95Wi7vuq2YT1bwCJqiWdZrQ1im3VujLYM=
 github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b/go.mod 
h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho=
 github.com/muesli/ansi v0.0.0-20221106050444-61f0cd9a192a 
h1:jlDOeO5TU0pYlbc/y6PFguab5IjANI0Knrpg3u/ton4=
 github.com/muesli/ansi v0.0.0-20221106050444-61f0cd9a192a/go.mod 
h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo=
@@ -222,12 +226,12 @@
 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.6 
h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU=
-github.com/pelletier/go-toml/v2 v2.0.6/go.mod 
h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek=
+github.com/pelletier/go-toml/v2 v2.0.7 
h1:muncTPStnKRos5dpVKULv2FVd4bMOhNePj9CjgDb8Us=
+github.com/pelletier/go-toml/v2 v2.0.7/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/pjbgf/sha1cd v0.2.3 h1:uKQP/7QOzNtKYH7UTohZLcjF5/55EnTw0jO/Ru4jZwI=
-github.com/pjbgf/sha1cd v0.2.3/go.mod 
h1:HOK9QrgzdHpbc2Kzip0Q1yi3M2MFGPADtR6HjG65m5M=
+github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
+github.com/pjbgf/sha1cd v0.3.0/go.mod 
h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
 github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e 
h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A=
 github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod 
h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@@ -236,8 +240,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.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw=
-github.com/rivo/uniseg v0.4.3/go.mod 
h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
+github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
+github.com/rivo/uniseg v0.4.4/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=
@@ -274,16 +278,15 @@
 github.com/stretchr/testify v1.7.0/go.mod 
h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.1/go.mod 
h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.8.0/go.mod 
h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
-github.com/stretchr/testify v1.8.1 
h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
 github.com/stretchr/testify v1.8.1/go.mod 
h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/stretchr/testify v1.8.2 
h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
+github.com/stretchr/testify v1.8.2/go.mod 
h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 github.com/twpayne/go-pinentry v0.2.0 
h1:hS5NEJiilop9xP9pBX/1NYduzDlGGMdg1KamTBTrOWw=
 github.com/twpayne/go-pinentry v0.2.0/go.mod 
h1:r6buhMwARxnnL0VRBqfd1tE6Fadk1kfP00GRMutEspY=
-github.com/twpayne/go-vfs/v3 v3.0.0 
h1:rMFBISZVhSowKeX1BxL8utM64V7CuUw9/rfekPdS7to=
-github.com/twpayne/go-vfs/v3 v3.0.0/go.mod 
h1:JKfJtOC57Wqo7xYxFRKSqdXwyj3AhfyRrDxSE/XiAVA=
-github.com/twpayne/go-vfs/v4 v4.1.0 
h1:58tmzvh3AEKgqXlRZvlKn9HD6g1Q9T9bYdob0GhARrs=
-github.com/twpayne/go-vfs/v4 v4.1.0/go.mod 
h1:05bOnh2SNnRsIp/ensn6WLeHSttxklPlQzi4JtTGofc=
-github.com/twpayne/go-xdg/v6 v6.0.0 
h1:kt2KGpflK5q8ZpkmQfX6kJphh6+oAWikf4LiAZxFT0Y=
-github.com/twpayne/go-xdg/v6 v6.0.0/go.mod 
h1:XlfiGBU0iBxudVRWh+SXF+I1Cfb7rMq1IFwOprG4Ts8=
+github.com/twpayne/go-vfs/v4 v4.2.0 
h1:cIjUwaKSCq0y6dT+ev6uLSmKjGTbHCR4xaocROqHFsE=
+github.com/twpayne/go-vfs/v4 v4.2.0/go.mod 
h1:zEoSYKpoOQmqu2Rrjclu2TlDEK+I5ydlh58sGdPKNYI=
+github.com/twpayne/go-xdg/v6 v6.1.1 
h1:OzoxnDWEaqO1b32F8zZaDj3aJWgWyTsL8zOiun7UK3w=
+github.com/twpayne/go-xdg/v6 v6.1.1/go.mod 
h1:+0KSJ4Dx+xaZeDXWZITF84BcNc1UiHDm0DP8txprfD8=
 github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8=
 github.com/ulikunitz/xz v0.5.11/go.mod 
h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
 github.com/withfig/autocomplete-tools/integrations/cobra v1.2.1 
h1:+dBg5k7nuTE38VVdoroRsT0Z88fmvdYrI2EjzJst35I=
@@ -306,17 +309,21 @@
 go.uber.org/atomic v1.10.0/go.mod 
h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
 go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI=
 go.uber.org/multierr v1.9.0/go.mod 
h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ=
+golang.org/x/arch v0.1.0 h1:oMxhUYsO9VsR1dcoVUjJjIGhx1LXol3989T/yZ59Xsw=
+golang.org/x/arch v0.1.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod 
h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod 
h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod 
h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod 
h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
 golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod 
h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.1.0/go.mod 
h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
 golang.org/x/crypto v0.3.0/go.mod 
h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
 golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc=
 golang.org/x/crypto v0.6.0/go.mod 
h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
-golang.org/x/exp v0.0.0-20230213192124-5e25df0256eb 
h1:PaBZQdo+iSDyHT053FjUCgZQ/9uqVwPOcl7KSWhKn6w=
-golang.org/x/exp v0.0.0-20230213192124-5e25df0256eb/go.mod 
h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc=
+golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2 
h1:Jvc7gsqn21cJHCmAWx0LiimpP18LZmUxkT5Mp7EZ1mI=
+golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2/go.mod 
h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc=
 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod 
h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
+golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI=
 golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=
 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod 
h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
@@ -326,6 +333,7 @@
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod 
h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
 golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod 
h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
 golang.org/x/net v0.0.0-20221002022538-bcab6841153b/go.mod 
h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
+golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
 golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
 golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
 golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
@@ -344,7 +352,6 @@
 golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -356,6 +363,7 @@
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/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/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
@@ -363,6 +371,7 @@
 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.0.0-20220722155259-a9ba230a4035/go.mod 
h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
 golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY=
 golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
@@ -377,6 +386,7 @@
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod 
h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod 
h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.1.12/go.mod 
h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
+golang.org/x/tools v0.2.0/go.mod 
h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=
 golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
 golang.org/x/tools v0.6.0/go.mod 
h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -414,3 +424,5 @@
 mvdan.cc/editorconfig v0.2.0 h1:XL+7ys6ls/RKrkUNFQvEwIvNHh+JKx8Mj1pUV5wQxQE=
 mvdan.cc/sh/v3 v3.6.0 h1:gtva4EXJ0dFNvl5bHjcUEvws+KRcDslT8VKheTYkbGU=
 mvdan.cc/sh/v3 v3.6.0/go.mod h1:U4mhtBLZ32iWhif5/lD+ygy1zrgaQhUu+XFy7C8+TTA=
+rsc.io/pdf v0.1.1 h1:k1MczvYDUvJBe93bYd7wrZLLUEcLZAuF824/I4e5Xr4=
+rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/chezmoi-2.31.0/internal/cmds/execute-template/main.go 
new/chezmoi-2.31.1/internal/cmds/execute-template/main.go
--- old/chezmoi-2.31.0/internal/cmds/execute-template/main.go   2023-02-17 
12:19:43.000000000 +0100
+++ new/chezmoi-2.31.1/internal/cmds/execute-template/main.go   2023-03-01 
10:50:00.000000000 +0100
@@ -29,7 +29,7 @@
 )
 
 type gitHubClient struct {
-       ctx    context.Context
+       ctx    context.Context //nolint:containedctx
        client *github.Client
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/chezmoi-2.31.0/internal/cmds/generate-install.sh/main.go 
new/chezmoi-2.31.1/internal/cmds/generate-install.sh/main.go
--- old/chezmoi-2.31.0/internal/cmds/generate-install.sh/main.go        
2023-02-17 12:19:43.000000000 +0100
+++ new/chezmoi-2.31.1/internal/cmds/generate-install.sh/main.go        
2023-03-01 10:50:00.000000000 +0100
@@ -65,10 +65,10 @@
        }
        var goreleaserConfig struct {
                Builds []struct {
-                       GOOS   []string
-                       GOARCH []string
-                       Ignore []platform
-               }
+                       GOOS   []string   `yaml:"goos"`
+                       GOARCH []string   `yaml:"goarch"`
+                       Ignore []platform `yaml:"ignore"`
+               } `yaml:"builds"`
        }
        if err := yaml.Unmarshal(data, &goreleaserConfig); err != nil {
                return err
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.31.0/pkg/chezmoi/sourcestate.go 
new/chezmoi-2.31.1/pkg/chezmoi/sourcestate.go
--- old/chezmoi-2.31.0/pkg/chezmoi/sourcestate.go       2023-02-17 
12:19:43.000000000 +0100
+++ new/chezmoi-2.31.1/pkg/chezmoi/sourcestate.go       2023-03-01 
10:50:00.000000000 +0100
@@ -1180,7 +1180,7 @@
        s.Lock()
        defer s.Unlock()
        for path, external := range externals {
-               if filepath.IsAbs(path) {
+               if strings.HasPrefix(path, "/") || filepath.IsAbs(path) {
                        return fmt.Errorf("%s: %s: path is not relative", 
sourceAbsPath, path)
                }
                targetRelPath := parentTargetSourceRelPath.JoinString(path)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.31.0/pkg/cmd/cdcmd.go 
new/chezmoi-2.31.1/pkg/cmd/cdcmd.go
--- old/chezmoi-2.31.0/pkg/cmd/cdcmd.go 2023-02-17 12:19:43.000000000 +0100
+++ new/chezmoi-2.31.1/pkg/cmd/cdcmd.go 2023-03-01 10:50:00.000000000 +0100
@@ -39,23 +39,26 @@
        var dir chezmoi.AbsPath
        if len(args) == 0 {
                dir = c.WorkingTreeAbsPath
-       } else if argAbsPath, err := chezmoi.NewAbsPathFromExtPath(args[0], 
c.homeDirAbsPath); err != nil { //nolint:gocritic
-               return err
-       } else if argAbsPath == c.DestDirAbsPath {
-               dir, err = c.getSourceDirAbsPath(nil)
-               if err != nil {
-                       return err
-               }
        } else {
-               sourceState, err := c.getSourceState(cmd.Context())
-               if err != nil {
-                       return err
-               }
-               sourceAbsPaths, err := c.sourceAbsPaths(sourceState, args)
-               if err != nil {
+               switch argAbsPath, err := 
chezmoi.NewAbsPathFromExtPath(args[0], c.homeDirAbsPath); {
+               case err != nil:
                        return err
+               case argAbsPath == c.DestDirAbsPath:
+                       dir, err = c.getSourceDirAbsPath(nil)
+                       if err != nil {
+                               return err
+                       }
+               default:
+                       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]
                }
-               dir = sourceAbsPaths[0]
        }
        return c.run(dir, cdCommand, cdArgs)
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.31.0/pkg/cmd/config.go 
new/chezmoi-2.31.1/pkg/cmd/config.go
--- old/chezmoi-2.31.0/pkg/cmd/config.go        2023-02-17 12:19:43.000000000 
+0100
+++ new/chezmoi-2.31.1/pkg/cmd/config.go        2023-03-01 10:50:00.000000000 
+0100
@@ -108,6 +108,7 @@
        // Password manager configurations.
        AWSSecretsManager awsSecretsManagerConfig `json:"awsSecretsManager" 
mapstructure:"awsSecretsManager" yaml:"awsSecretsManager"` //nolint:lll
        Bitwarden         bitwardenConfig         `json:"bitwarden" 
mapstructure:"bitwarden" yaml:"bitwarden"`
+       Dashlane          dashlaneConfig          `json:"dashlane" 
mapstructure:"dashlane" yaml:"dashlane"`
        Gopass            gopassConfig            `json:"gopass" 
mapstructure:"gopass" yaml:"gopass"`
        Keepassxc         keepassxcConfig         `json:"keepassxc" 
mapstructure:"keepassxc" yaml:"keepassxc"`
        Keeper            keeperConfig            `json:"keeper" 
mapstructure:"keeper" yaml:"keeper"`
@@ -361,6 +362,8 @@
                "bitwardenAttachmentByRef": 
c.bitwardenAttachmentByRefTemplateFunc,
                "bitwardenFields":          c.bitwardenFieldsTemplateFunc,
                "comment":                  c.commentTemplateFunc,
+               "dashlaneNote":             c.dashlaneNoteTemplateFunc,
+               "dashlanePassword":         c.dashlanePasswordTemplateFunc,
                "decrypt":                  c.decryptTemplateFunc,
                "deleteValueAtPath":        c.deleteValueAtPathTemplateFunc,
                "encrypt":                  c.encryptTemplateFunc,
@@ -1827,7 +1830,7 @@
                        // Do nothing.
                case err == nil:
                        return fmt.Errorf("%s: not a directory", 
c.SourceDirAbsPath)
-               case err != nil:
+               default:
                        return err
                }
        }
@@ -2205,9 +2208,6 @@
                if err != nil {
                        return nil, err
                }
-               if err != nil {
-                       return nil, err
-               }
                if options.mustBeInSourceState {
                        if !sourceState.Contains(targetRelPath) {
                                return nil, fmt.Errorf("%s: not in source 
state", arg)
@@ -2413,6 +2413,9 @@
                Bitwarden: bitwardenConfig{
                        Command: "bw",
                },
+               Dashlane: dashlaneConfig{
+                       Command: "dcli",
+               },
                Gopass: gopassConfig{
                        Command: "gopass",
                },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.31.0/pkg/cmd/dashlanetemplatefuncs.go 
new/chezmoi-2.31.1/pkg/cmd/dashlanetemplatefuncs.go
--- old/chezmoi-2.31.0/pkg/cmd/dashlanetemplatefuncs.go 1970-01-01 
01:00:00.000000000 +0100
+++ new/chezmoi-2.31.1/pkg/cmd/dashlanetemplatefuncs.go 2023-03-01 
10:50:00.000000000 +0100
@@ -0,0 +1,70 @@
+package cmd
+
+import (
+       "encoding/json"
+       "os"
+       "os/exec"
+
+       "github.com/twpayne/chezmoi/v2/pkg/chezmoilog"
+)
+
+type dashlaneConfig struct {
+       Command       string   `json:"command" mapstructure:"command" 
yaml:"command"`
+       Args          []string `json:"args" mapstructure:"args" yaml:"args"`
+       cacheNote     map[string]any
+       cachePassword map[string]any
+}
+
+func (c *Config) dashlaneNoteTemplateFunc(filter string) any {
+       if data, ok := c.Dashlane.cacheNote[filter]; ok {
+               return data
+       }
+
+       if c.Dashlane.cacheNote == nil {
+               c.Dashlane.cacheNote = make(map[string]any)
+       }
+
+       output, err := c.dashlaneOutput("note", filter)
+       if err != nil {
+               panic(err)
+       }
+
+       data := string(output)
+
+       c.Dashlane.cacheNote[filter] = data
+       return data
+}
+
+func (c *Config) dashlanePasswordTemplateFunc(filter string) any {
+       if data, ok := c.Dashlane.cachePassword[filter]; ok {
+               return data
+       }
+
+       if c.Dashlane.cachePassword == nil {
+               c.Dashlane.cachePassword = make(map[string]any)
+       }
+
+       output, err := c.dashlaneOutput("password", "--output", "json", filter)
+       if err != nil {
+               panic(err)
+       }
+
+       var data any
+       if err := json.Unmarshal(output, &data); err != nil {
+               panic(err)
+       }
+
+       c.Dashlane.cachePassword[filter] = data
+       return data
+}
+
+func (c *Config) dashlaneOutput(args ...string) ([]byte, error) {
+       name := c.Dashlane.Command
+       cmd := exec.Command(name, append(c.Dashlane.Args, args...)...)
+       cmd.Stderr = os.Stderr
+       output, err := chezmoilog.LogCmdOutput(cmd)
+       if err != nil {
+               return nil, err
+       }
+       return output, nil
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.31.0/pkg/cmd/keepassxctemplatefuncs.go 
new/chezmoi-2.31.1/pkg/cmd/keepassxctemplatefuncs.go
--- old/chezmoi-2.31.0/pkg/cmd/keepassxctemplatefuncs.go        2023-02-17 
12:19:43.000000000 +0100
+++ new/chezmoi-2.31.1/pkg/cmd/keepassxctemplatefuncs.go        2023-03-01 
10:50:00.000000000 +0100
@@ -165,7 +165,7 @@
                case match != nil:
                        key = match[1]
                        data[key] = match[2]
-               case match == nil && key != "":
+               case key != "":
                        data[key] += "\n" + s.Text()
                }
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/chezmoi-2.31.0/pkg/cmd/testdata/scripts/dashlane.txtar 
new/chezmoi-2.31.1/pkg/cmd/testdata/scripts/dashlane.txtar
--- old/chezmoi-2.31.0/pkg/cmd/testdata/scripts/dashlane.txtar  1970-01-01 
01:00:00.000000000 +0100
+++ new/chezmoi-2.31.1/pkg/cmd/testdata/scripts/dashlane.txtar  2023-03-01 
10:50:00.000000000 +0100
@@ -0,0 +1,84 @@
+[!windows] chmod 755 bin/dcli
+[windows] unix2dos bin/dcli.cmd
+[windows] unix2dos golden/dashlane-note
+
+# test dashlanePassword template function
+exec chezmoi execute-template '{{ (index (dashlanePassword "filter") 
0).password }}'
+stdout ^<password>$
+
+# test dashlaneNote template function
+exec chezmoi execute-template '{{ dashlaneNote "filter" }}'
+cmp stdout golden/dashlane-note
+
+-- bin/dcli --
+#!/bin/sh
+
+case "$*" in
+"password --output json filter")
+    cat <<EOF
+[
+    {
+        "title": "<name of the entry>",
+        "useFixedUrl": false,
+        "login": "<login>",
+        "status": "ACCOUNT_NOT_VERIFIED",
+        "note": "<any note>",
+        "autoLogin": false,
+        "modificationDatetime": "<timestamp>",
+        "checked": false,
+        "id": "<id>",
+        "anonId": "<anonymous id>",
+        "localeFormat": "UNIVERSAL",
+        "password": "<password>",
+        "creationDatetime": "<timestamp>",
+        "userModificationDatetime": "<timestamp>",
+        "lastBackupTime": "<timestamp>",
+        "autoProtected": false,
+        "strength": 0,
+        "subdomainOnly": false
+    }
+]
+EOF
+   ;;
+"note filter")
+    cat <<EOF
+<note>
+EOF
+   ;;
+*)
+    echo "error: unknown command '$*'"
+    exit 1
+esac
+-- bin/dcli.cmd --
+@echo off
+IF "%*" == "password --output json filter" (
+    echo.[
+    echo.    {
+    echo.        "title": "<name of the entry>",
+    echo.        "useFixedUrl": false,
+    echo.        "login": "<login>",
+    echo.        "status": "ACCOUNT_NOT_VERIFIED",
+    echo.        "note": "<any note>",
+    echo.        "autoLogin": false,
+    echo.        "modificationDatetime": "<timestamp>",
+    echo.        "checked": false,
+    echo.        "id": "<id>",
+    echo.        "anonId": "<anonymous id>",
+    echo.        "localeFormat": "UNIVERSAL",
+    echo.        "password": "<password>",
+    echo.        "creationDatetime": "<timestamp>",
+    echo.        "userModificationDatetime": "<timestamp>",
+    echo.        "lastBackupTime": "<timestamp>",
+    echo.        "autoProtected": false,
+    echo.        "strength": 0,
+    echo.        "subdomainOnly": false
+    echo.    }
+    echo.]
+) ELSE IF "%*" == "note filter" (
+    echo.^<note^>
+) ELSE (
+    echo error: unknown command '$*'
+    exit /b 1
+)
+-- golden/dashlane-note --
+<note>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/chezmoi-2.31.0/pkg/cmd/testdata/scripts/issue2302.txtar 
new/chezmoi-2.31.1/pkg/cmd/testdata/scripts/issue2302.txtar
--- old/chezmoi-2.31.0/pkg/cmd/testdata/scripts/issue2302.txtar 2023-02-17 
12:19:43.000000000 +0100
+++ new/chezmoi-2.31.1/pkg/cmd/testdata/scripts/issue2302.txtar 2023-03-01 
10:50:00.000000000 +0100
@@ -1,5 +1,3 @@
-[windows] skip 'UNIX only'
-
 # test that chezmoi does not panic if an external uses an absolute path
 ! exec chezmoi diff
 stderr 'path is not relative'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/chezmoi-2.31.0/pkg/cmd/updatecmd.go 
new/chezmoi-2.31.1/pkg/cmd/updatecmd.go
--- old/chezmoi-2.31.0/pkg/cmd/updatecmd.go     2023-02-17 12:19:43.000000000 
+0100
+++ new/chezmoi-2.31.1/pkg/cmd/updatecmd.go     2023-03-01 10:50:00.000000000 
+0100
@@ -74,17 +74,17 @@
                        return err
                }
        default:
-               args := []string{
+               gitArgs := []string{
                        "pull",
                        "--autostash",
                        "--rebase",
                }
                if c.Update.RecurseSubmodules {
-                       args = append(args,
+                       gitArgs = append(gitArgs,
                                "--recurse-submodules",
                        )
                }
-               if err := c.run(c.WorkingTreeAbsPath, c.Git.Command, args); err 
!= nil {
+               if err := c.run(c.WorkingTreeAbsPath, c.Git.Command, gitArgs); 
err != nil {
                        return err
                }
        }

++++++ chezmoi.obsinfo ++++++
--- /var/tmp/diff_new_pack.qyMPbr/_old  2023-03-02 23:04:51.640260716 +0100
+++ /var/tmp/diff_new_pack.qyMPbr/_new  2023-03-02 23:04:51.648260756 +0100
@@ -1,5 +1,5 @@
 name: chezmoi
-version: 2.31.0
-mtime: 1676632783
-commit: 4d2bc846212e27fae1e5bbd45d70e00908da603b
+version: 2.31.1
+mtime: 1677664200
+commit: b53467c8cc56e46ef848624193b753c927b89689
 

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

Reply via email to