Full Code of twpayne/chezmoi for AI

master 132329211927 cached
962 files
4.1 MB
1.1M tokens
2141 symbols
1 requests
Download .txt
Showing preview only (4,449K chars total). Download the full file or copy to clipboard to get everything.
Repository: twpayne/chezmoi
Branch: master
Commit: 132329211927
Files: 962
Total size: 4.1 MB

Directory structure:
gitextract_mhbu3wo7/

├── .config/
│   ├── capslock-summary.json
│   ├── editorconfig-checker.json
│   ├── golangci.yml
│   ├── goreleaser.yaml
│   └── markdownlint-cli2.yaml
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── CODE_OF_CONDUCT.md
│   ├── CONTRIBUTING.md
│   ├── ISSUE_TEMPLATE/
│   │   ├── 01_support_request.md
│   │   ├── 02_feature_request.md
│   │   └── 03_bug_report.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── SECURITY.md
│   ├── actions/
│   │   ├── free-disk-space/
│   │   │   └── action.yml
│   │   └── setup-go/
│   │       └── action.yml
│   └── workflows/
│       ├── clear-pr-caches.yml
│       ├── govulncheck.yml
│       ├── installer.yml
│       ├── lock-threads.yml
│       └── main.yml
├── .gitignore
├── LICENSE
├── Makefile
├── README.md
├── assets/
│   ├── chezmoi.io/
│   │   ├── .gitignore
│   │   ├── CNAME
│   │   ├── docs/
│   │   │   ├── chezmoi/
│   │   │   │   └── index.html
│   │   │   ├── comparison-table.md
│   │   │   ├── developer-guide/
│   │   │   │   ├── architecture.md
│   │   │   │   ├── building-on-top-of-chezmoi.md
│   │   │   │   ├── contributing-changes.md
│   │   │   │   ├── index.md
│   │   │   │   ├── install-script.md
│   │   │   │   ├── packaging.md
│   │   │   │   ├── releases.md
│   │   │   │   ├── security.md
│   │   │   │   ├── testing.md
│   │   │   │   ├── using-make.md
│   │   │   │   └── website.md
│   │   │   ├── docs.go
│   │   │   ├── extra/
│   │   │   │   └── refresh_on_toggle_dark_light.js
│   │   │   ├── hooks.py
│   │   │   ├── index.md.tmpl
│   │   │   ├── install.md.tmpl
│   │   │   ├── license.md
│   │   │   ├── links/
│   │   │   │   ├── articles.md.tmpl
│   │   │   │   ├── articles.md.yaml
│   │   │   │   ├── dotfile-repos.md
│   │   │   │   ├── podcasts.md.tmpl
│   │   │   │   ├── podcasts.md.yaml
│   │   │   │   ├── related-software.md
│   │   │   │   ├── social-media.md
│   │   │   │   ├── videos.md.tmpl
│   │   │   │   └── videos.md.yaml
│   │   │   ├── migrating-from-another-dotfile-manager.md
│   │   │   ├── quick-start.md
│   │   │   ├── reference/
│   │   │   │   ├── application-order.md
│   │   │   │   ├── command-line-flags/
│   │   │   │   │   ├── common.md
│   │   │   │   │   ├── developer.md
│   │   │   │   │   ├── global.md
│   │   │   │   │   └── index.md
│   │   │   │   ├── commands/
│   │   │   │   │   ├── add.md
│   │   │   │   │   ├── age-keygen.md
│   │   │   │   │   ├── age.md
│   │   │   │   │   ├── apply.md
│   │   │   │   │   ├── archive.md
│   │   │   │   │   ├── cat-config.md
│   │   │   │   │   ├── cat.md
│   │   │   │   │   ├── cd.md
│   │   │   │   │   ├── chattr.md
│   │   │   │   │   ├── commands.go
│   │   │   │   │   ├── commands_test.go
│   │   │   │   │   ├── completion.md
│   │   │   │   │   ├── data.md
│   │   │   │   │   ├── decrypt.md
│   │   │   │   │   ├── destroy.md
│   │   │   │   │   ├── diff.md
│   │   │   │   │   ├── docker.md
│   │   │   │   │   ├── doctor.md
│   │   │   │   │   ├── dump-config.md
│   │   │   │   │   ├── dump.md
│   │   │   │   │   ├── edit-config-template.md
│   │   │   │   │   ├── edit-config.md
│   │   │   │   │   ├── edit-encrypted.md
│   │   │   │   │   ├── edit.md
│   │   │   │   │   ├── encrypt.md
│   │   │   │   │   ├── execute-template.md
│   │   │   │   │   ├── forget.md
│   │   │   │   │   ├── generate.md
│   │   │   │   │   ├── git.md
│   │   │   │   │   ├── help.md
│   │   │   │   │   ├── ignored.md
│   │   │   │   │   ├── import.md
│   │   │   │   │   ├── index.md
│   │   │   │   │   ├── init.md
│   │   │   │   │   ├── license.md
│   │   │   │   │   ├── list.md
│   │   │   │   │   ├── manage.md
│   │   │   │   │   ├── managed.md
│   │   │   │   │   ├── merge-all.md
│   │   │   │   │   ├── merge.md
│   │   │   │   │   ├── podman.md
│   │   │   │   │   ├── purge.md
│   │   │   │   │   ├── re-add.md
│   │   │   │   │   ├── remove.md
│   │   │   │   │   ├── rm.md
│   │   │   │   │   ├── secret.md
│   │   │   │   │   ├── source-path.md
│   │   │   │   │   ├── ssh.md
│   │   │   │   │   ├── state.md
│   │   │   │   │   ├── status.md
│   │   │   │   │   ├── target-path.md
│   │   │   │   │   ├── unmanage.md
│   │   │   │   │   ├── unmanaged.md
│   │   │   │   │   ├── update.md
│   │   │   │   │   ├── upgrade.md
│   │   │   │   │   └── verify.md
│   │   │   │   ├── concepts.md
│   │   │   │   ├── configuration-file/
│   │   │   │   │   ├── editor.md
│   │   │   │   │   ├── hooks.md
│   │   │   │   │   ├── index.md
│   │   │   │   │   ├── interpreters.md
│   │   │   │   │   ├── pinentry.md
│   │   │   │   │   ├── textconv.md
│   │   │   │   │   ├── umask.md
│   │   │   │   │   ├── variables.md.tmpl
│   │   │   │   │   ├── variables.md.yaml
│   │   │   │   │   └── warnings.md
│   │   │   │   ├── index.md
│   │   │   │   ├── plugins.md
│   │   │   │   ├── release-history.md.tmpl
│   │   │   │   ├── source-state-attributes.md
│   │   │   │   ├── special-directories/
│   │   │   │   │   ├── chezmoidata.md
│   │   │   │   │   ├── chezmoiexternals.md
│   │   │   │   │   ├── chezmoiscripts.md
│   │   │   │   │   ├── chezmoitemplates.md
│   │   │   │   │   └── index.md
│   │   │   │   ├── special-files/
│   │   │   │   │   ├── chezmoi-format-tmpl.md
│   │   │   │   │   ├── chezmoidata-format.md
│   │   │   │   │   ├── chezmoiexternal-format.md
│   │   │   │   │   ├── chezmoiignore.md
│   │   │   │   │   ├── chezmoiremove.md
│   │   │   │   │   ├── chezmoiroot.md
│   │   │   │   │   ├── chezmoiversion.md
│   │   │   │   │   └── index.md
│   │   │   │   ├── target-types.md
│   │   │   │   └── templates/
│   │   │   │       ├── 1password-functions/
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── onepassword.md
│   │   │   │       │   ├── onepasswordDetailsFields.md
│   │   │   │       │   ├── onepasswordDocument.md
│   │   │   │       │   ├── onepasswordItemFields.md
│   │   │   │       │   └── onepasswordRead.md
│   │   │   │       ├── aws-secrets-manager-functions/
│   │   │   │       │   ├── awsSecretsManager.md
│   │   │   │       │   ├── awsSecretsManagerRaw.md
│   │   │   │       │   └── index.md
│   │   │   │       ├── azure-key-vault-functions/
│   │   │   │       │   └── azureKeyVault.md
│   │   │   │       ├── bitwarden-functions/
│   │   │   │       │   ├── bitwarden.md
│   │   │   │       │   ├── bitwardenAttachment.md
│   │   │   │       │   ├── bitwardenAttachmentByRef.md
│   │   │   │       │   ├── bitwardenFields.md
│   │   │   │       │   ├── bitwardenSecrets.md
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── rbw.md
│   │   │   │       │   └── rbwFields.md
│   │   │   │       ├── dashlane-functions/
│   │   │   │       │   ├── dashlaneNote.md
│   │   │   │       │   ├── dashlanePassword.md
│   │   │   │       │   └── index.md
│   │   │   │       ├── directives.md
│   │   │   │       ├── doppler-functions/
│   │   │   │       │   ├── doppler.md
│   │   │   │       │   ├── dopplerProjectJson.md
│   │   │   │       │   └── index.md
│   │   │   │       ├── ejson-functions/
│   │   │   │       │   ├── ejsonDecrypt.md
│   │   │   │       │   ├── ejsonDecryptWithKey.md
│   │   │   │       │   └── index.md
│   │   │   │       ├── functions/
│   │   │   │       │   ├── abortEmpty.md
│   │   │   │       │   ├── comment.md
│   │   │   │       │   ├── completion.md
│   │   │   │       │   ├── decrypt.md
│   │   │   │       │   ├── deleteValueAtPath.md
│   │   │   │       │   ├── encrypt.md
│   │   │   │       │   ├── ensureLinePrefix.md
│   │   │   │       │   ├── eqFold.md
│   │   │   │       │   ├── exec.md
│   │   │   │       │   ├── findExecutable.md
│   │   │   │       │   ├── findOneExecutable.md
│   │   │   │       │   ├── fromIni.md
│   │   │   │       │   ├── fromJson.md
│   │   │   │       │   ├── fromJsonc.md
│   │   │   │       │   ├── fromToml.md
│   │   │   │       │   ├── fromYaml.md
│   │   │   │       │   ├── getRedirectedURL.md
│   │   │   │       │   ├── glob.md
│   │   │   │       │   ├── hexDecode.md
│   │   │   │       │   ├── hexEncode.md
│   │   │   │       │   ├── include.md
│   │   │   │       │   ├── includeTemplate.md
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── ioreg.md
│   │   │   │       │   ├── isExecutable.md
│   │   │   │       │   ├── joinPath.md
│   │   │   │       │   ├── jq.md
│   │   │   │       │   ├── lookPath.md
│   │   │   │       │   ├── lstat.md
│   │   │   │       │   ├── mozillaInstallHash.md
│   │   │   │       │   ├── output.md
│   │   │   │       │   ├── outputList.md
│   │   │   │       │   ├── pruneEmptyDicts.md
│   │   │   │       │   ├── quoteList.md
│   │   │   │       │   ├── replaceAllRegex.md
│   │   │   │       │   ├── setValueAtPath.md
│   │   │   │       │   ├── stat.md
│   │   │   │       │   ├── toIni.md
│   │   │   │       │   ├── toPrettyJson.md
│   │   │   │       │   ├── toString.md
│   │   │   │       │   ├── toStrings.md
│   │   │   │       │   ├── toToml.md
│   │   │   │       │   ├── toYaml.md
│   │   │   │       │   └── warnf.md
│   │   │   │       ├── github-functions/
│   │   │   │       │   ├── gitHubKeys.md
│   │   │   │       │   ├── gitHubLatestRelease.md
│   │   │   │       │   ├── gitHubLatestReleaseAssetURL.md
│   │   │   │       │   ├── gitHubLatestTag.md
│   │   │   │       │   ├── gitHubRelease.md
│   │   │   │       │   ├── gitHubReleaseAssetURL.md
│   │   │   │       │   ├── gitHubReleases.md
│   │   │   │       │   ├── gitHubTags.md
│   │   │   │       │   └── index.md
│   │   │   │       ├── gopass-functions/
│   │   │   │       │   ├── gopass.md
│   │   │   │       │   ├── gopassRaw.md
│   │   │   │       │   └── index.md
│   │   │   │       ├── index.md
│   │   │   │       ├── init-functions/
│   │   │   │       │   ├── exit.md
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── promptBool.md
│   │   │   │       │   ├── promptBoolOnce.md
│   │   │   │       │   ├── promptChoice.md
│   │   │   │       │   ├── promptChoiceOnce.md
│   │   │   │       │   ├── promptInt.md
│   │   │   │       │   ├── promptIntOnce.md
│   │   │   │       │   ├── promptMultichoice.md
│   │   │   │       │   ├── promptMultichoiceOnce.md
│   │   │   │       │   ├── promptString.md
│   │   │   │       │   ├── promptStringOnce.md
│   │   │   │       │   ├── stdinIsATTY.md
│   │   │   │       │   └── writeToStdout.md
│   │   │   │       ├── keepassxc-functions/
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── keepassxc.md
│   │   │   │       │   ├── keepassxcAttachment.md
│   │   │   │       │   └── keepassxcAttribute.md
│   │   │   │       ├── keeper-functions/
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── keeper.md
│   │   │   │       │   ├── keeperDataFields.md
│   │   │   │       │   └── keeperFindPassword.md
│   │   │   │       ├── keyring-functions/
│   │   │   │       │   └── keyring.md
│   │   │   │       ├── lastpass-functions/
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── lastpass.md
│   │   │   │       │   └── lastpassRaw.md
│   │   │   │       ├── pass-functions/
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── pass.md
│   │   │   │       │   ├── passFields.md
│   │   │   │       │   └── passRaw.md
│   │   │   │       ├── passhole-functions/
│   │   │   │       │   ├── index.md
│   │   │   │       │   └── passhole.md
│   │   │   │       ├── protonpass-functions/
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── protonPass.md
│   │   │   │       │   └── protonPassJSON.md
│   │   │   │       ├── secret-functions/
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── secret.md
│   │   │   │       │   └── secretJSON.md
│   │   │   │       ├── variables.md
│   │   │   │       └── vault-functions/
│   │   │   │           └── vault.md
│   │   │   ├── user-guide/
│   │   │   │   ├── advanced/
│   │   │   │   │   ├── customize-your-source-directory.md
│   │   │   │   │   ├── install-packages-declaratively.md
│   │   │   │   │   ├── install-your-password-manager-on-init.md
│   │   │   │   │   ├── migrate-away-from-chezmoi.md
│   │   │   │   │   └── use-chezmoi-with-watchman.md
│   │   │   │   ├── command-overview.md
│   │   │   │   ├── daily-operations.md
│   │   │   │   ├── encryption/
│   │   │   │   │   ├── age.md
│   │   │   │   │   ├── gpg.md
│   │   │   │   │   ├── index.md
│   │   │   │   │   ├── rage.md
│   │   │   │   │   └── transparent.md
│   │   │   │   ├── frequently-asked-questions/
│   │   │   │   │   ├── design.md
│   │   │   │   │   ├── encryption.md
│   │   │   │   │   ├── general.md
│   │   │   │   │   ├── troubleshooting.md
│   │   │   │   │   └── usage.md
│   │   │   │   ├── include-files-from-elsewhere.md
│   │   │   │   ├── machines/
│   │   │   │   │   ├── containers-and-vms.md
│   │   │   │   │   ├── general.md
│   │   │   │   │   ├── linux.md
│   │   │   │   │   ├── macos.md
│   │   │   │   │   └── windows.md
│   │   │   │   ├── manage-different-types-of-file.md
│   │   │   │   ├── manage-machine-to-machine-differences.md
│   │   │   │   ├── password-managers/
│   │   │   │   │   ├── 1password.md
│   │   │   │   │   ├── aws-secrets-manager.md
│   │   │   │   │   ├── azure-key-vault.md
│   │   │   │   │   ├── bitwarden.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── dashlane.md
│   │   │   │   │   ├── doppler.md
│   │   │   │   │   ├── ejson.md
│   │   │   │   │   ├── gopass.md
│   │   │   │   │   ├── index.md
│   │   │   │   │   ├── keepassxc.md
│   │   │   │   │   ├── keeper.md
│   │   │   │   │   ├── keychain-and-windows-credentials-manager.md
│   │   │   │   │   ├── lastpass.md
│   │   │   │   │   ├── pass.md
│   │   │   │   │   ├── passhole.md
│   │   │   │   │   ├── proton-pass.md
│   │   │   │   │   └── vault.md
│   │   │   │   ├── setup.md
│   │   │   │   ├── templating.md
│   │   │   │   ├── tools/
│   │   │   │   │   ├── diff.md
│   │   │   │   │   ├── editor.md
│   │   │   │   │   ├── http-or-socks5-proxy.md
│   │   │   │   │   └── merge.md
│   │   │   │   └── use-scripts-to-perform-actions.md
│   │   │   ├── voice_30-04-2025_09-20-13.ogx
│   │   │   ├── voice_30-04-2025_09-20-48.ogx
│   │   │   ├── voice_30-04-2025_09-20-56.ogx
│   │   │   ├── what-does-chezmoi-do.md
│   │   │   └── why-use-chezmoi.md
│   │   ├── mkdocs.yml
│   │   └── snippets/
│   │       ├── common-flags/
│   │       │   ├── exclude.md
│   │       │   ├── format.md
│   │       │   ├── include.md
│   │       │   ├── init.md
│   │       │   ├── nul-path-separator.md
│   │       │   ├── override-data-file.md
│   │       │   ├── override-data.md
│   │       │   ├── parent-dirs.md
│   │       │   ├── path-style.md
│   │       │   ├── recursive.md
│   │       │   └── tree.md
│   │       └── config-format.md
│   ├── cosign/
│   │   ├── cosign.key
│   │   └── cosign.pub
│   ├── docker/
│   │   ├── alpine.Dockerfile
│   │   ├── archlinux.Dockerfile
│   │   ├── entrypoint.sh
│   │   ├── fedora.Dockerfile
│   │   ├── test.sh
│   │   └── voidlinux.Dockerfile
│   ├── get.chezmoi.io/
│   │   ├── .nojekyll
│   │   └── CNAME
│   ├── images/
│   │   ├── logotype_black.ai
│   │   └── logotype_blue.ai
│   ├── scripts/
│   │   ├── format-yaml.py
│   │   ├── install-local-bin.sh
│   │   ├── install.ps1
│   │   ├── install.sh
│   │   └── stow-to-chezmoi.sh
│   ├── templates/
│   │   ├── COMMIT_MESSAGE.tmpl
│   │   ├── install-init-shell.sh.tmpl
│   │   ├── install.sh
│   │   ├── templates.go
│   │   └── versioninfo.json.tmpl
│   └── vagrant/
│       ├── freebsd14.Vagrantfile
│       ├── freebsd14.test-chezmoi.sh
│       ├── openbsd7.Vagrantfile
│       ├── openbsd7.test-chezmoi.sh
│       └── test.sh
├── bin/
│   └── .gitignore
├── completions/
│   ├── chezmoi-completion.bash
│   ├── chezmoi.fish
│   ├── chezmoi.ps1
│   └── chezmoi.zsh
├── go.mod
├── go.sum
├── internal/
│   ├── archivetest/
│   │   ├── archivetest.go
│   │   ├── tar.go
│   │   ├── tar_test.go
│   │   ├── zip.go
│   │   └── zip_test.go
│   ├── chezmoi/
│   │   ├── abspath.go
│   │   ├── abspath_test.go
│   │   ├── actualstateentry.go
│   │   ├── ageencryption.go
│   │   ├── ageencryption_test.go
│   │   ├── archive.go
│   │   ├── archive_test.go
│   │   ├── archivereadersystem.go
│   │   ├── archivereadersystem_test.go
│   │   ├── attr.go
│   │   ├── attr_test.go
│   │   ├── autotemplate.go
│   │   ├── autotemplate_test.go
│   │   ├── boltpersistentstate.go
│   │   ├── boltpersistentstate_test.go
│   │   ├── byteordermarks.go
│   │   ├── chezmoi.go
│   │   ├── chezmoi_test.go
│   │   ├── chezmoi_unix.go
│   │   ├── chezmoi_unix_test.go
│   │   ├── chezmoi_windows.go
│   │   ├── compression.go
│   │   ├── data.go
│   │   ├── data_test.go
│   │   ├── debugencryption.go
│   │   ├── debugpersistentstate.go
│   │   ├── debugsystem.go
│   │   ├── debugsystem_test.go
│   │   ├── diff.go
│   │   ├── dryrunsystem.go
│   │   ├── dryrunsystem_test.go
│   │   ├── dumpsystem.go
│   │   ├── dumpsystem_test.go
│   │   ├── duration.go
│   │   ├── encryption.go
│   │   ├── encryption_test.go
│   │   ├── entrystate.go
│   │   ├── entrystate_test.go
│   │   ├── entrytypefilter.go
│   │   ├── entrytypeset.go
│   │   ├── entrytypeset_test.go
│   │   ├── erroronwritesystem.go
│   │   ├── erroronwritesystem_test.go
│   │   ├── errors.go
│   │   ├── externaldiffsystem.go
│   │   ├── externaldiffsystem_test.go
│   │   ├── findexecutable.go
│   │   ├── findexecutable_darwin_test.go
│   │   ├── findexecutable_unix_test.go
│   │   ├── findexecutable_windows_test.go
│   │   ├── format.go
│   │   ├── format_test.go
│   │   ├── gitdiffsystem.go
│   │   ├── gitdiffsystem_test.go
│   │   ├── github.go
│   │   ├── glob.go
│   │   ├── gpgencryption.go
│   │   ├── gpgencryption_test.go
│   │   ├── hexbytes.go
│   │   ├── hexbytes_test.go
│   │   ├── interpreter.go
│   │   ├── lookpath.go
│   │   ├── mockpersistentstate.go
│   │   ├── mockpersistentstate_test.go
│   │   ├── mode.go
│   │   ├── noencryption.go
│   │   ├── noencryption_test.go
│   │   ├── nullpersistentstate.go
│   │   ├── nullsystem.go
│   │   ├── nullsystem_test.go
│   │   ├── path_unix.go
│   │   ├── path_windows.go
│   │   ├── path_windows_test.go
│   │   ├── patternset.go
│   │   ├── patternset_test.go
│   │   ├── persistentstate.go
│   │   ├── persistentstate_test.go
│   │   ├── readonlysystem.go
│   │   ├── readonlysystem_test.go
│   │   ├── realsystem.go
│   │   ├── realsystem_test.go
│   │   ├── realsystem_unix.go
│   │   ├── realsystem_windows.go
│   │   ├── recursivemerge.go
│   │   ├── recursivemerge_test.go
│   │   ├── refreshexternals.go
│   │   ├── relpath.go
│   │   ├── sourcerelpath.go
│   │   ├── sourcerelpath_test.go
│   │   ├── sourcestate.go
│   │   ├── sourcestate_test.go
│   │   ├── sourcestateentry.go
│   │   ├── sourcestatetreenode.go
│   │   ├── sourcestatetreenode_test.go
│   │   ├── system.go
│   │   ├── system_test.go
│   │   ├── targetstateentry.go
│   │   ├── targetstateentry_test.go
│   │   ├── tarwritersystem.go
│   │   ├── tarwritersystem_test.go
│   │   ├── template.go
│   │   ├── template_test.go
│   │   ├── templatefuncs.go
│   │   ├── transparentencryption.go
│   │   ├── transparentencryption_test.go
│   │   ├── zipwritersystem.go
│   │   └── zipwritersystem_test.go
│   ├── chezmoiassert/
│   │   └── chezmoiassert.go
│   ├── chezmoibubbles/
│   │   ├── boolinputmodel.go
│   │   ├── boolinputmodel_test.go
│   │   ├── chezmoibubbles.go
│   │   ├── chezmoibubbles_test.go
│   │   ├── choiceinputmodel.go
│   │   ├── choiceinputmodel_test.go
│   │   ├── intinputmodel.go
│   │   ├── intinputmodel_test.go
│   │   ├── multichoiceinputmodel.go
│   │   ├── passwordinputmodel.go
│   │   ├── passwordinputmodel_test.go
│   │   ├── stringinputmodel.go
│   │   ├── stringinputmodel_test.go
│   │   └── test-all.sh
│   ├── chezmoierrors/
│   │   └── chezmoierrors.go
│   ├── chezmoigit/
│   │   ├── chezmoigit.go
│   │   ├── status.go
│   │   └── status_test.go
│   ├── chezmoilog/
│   │   ├── chezmoilog.go
│   │   ├── nullhandler.go
│   │   └── nullhandler_test.go
│   ├── chezmoiset/
│   │   └── chezmoiset.go
│   ├── chezmoitest/
│   │   ├── chezmoitest.go
│   │   ├── chezmoitest_test.go
│   │   ├── chezmoitest_unix.go
│   │   └── chezmoitest_windows.go
│   ├── cmd/
│   │   ├── addcmd.go
│   │   ├── addcmd_test.go
│   │   ├── agecmd.go
│   │   ├── agekeygencmd.go
│   │   ├── annotation.go
│   │   ├── applycmd.go
│   │   ├── applycmd_test.go
│   │   ├── archivecmd.go
│   │   ├── autobool.go
│   │   ├── awssecretsmanagertemplatefuncs.go
│   │   ├── azurekeyvaulttemplatefuncs.go
│   │   ├── bitwardensecretstemplatefuncs.go
│   │   ├── bitwardentemplatefuncs.go
│   │   ├── catcmd.go
│   │   ├── catcmd_test.go
│   │   ├── catconfigcmd.go
│   │   ├── cdcmd.go
│   │   ├── chattrcmd.go
│   │   ├── chattrcmd_test.go
│   │   ├── choiceflag.go
│   │   ├── cmd.go
│   │   ├── cmd_test.go
│   │   ├── completioncmd.go
│   │   ├── config.go
│   │   ├── config_tags_test.go
│   │   ├── config_test.go
│   │   ├── dashlanetemplatefuncs.go
│   │   ├── datacmd.go
│   │   ├── datacmd_test.go
│   │   ├── dataformat.go
│   │   ├── decryptcmd.go
│   │   ├── destroycmd.go
│   │   ├── diffcmd.go
│   │   ├── diffcmd_test.go
│   │   ├── dockercmd.go
│   │   ├── doctorcmd.go
│   │   ├── doctorcmd_unix.go
│   │   ├── doctorcmd_windows.go
│   │   ├── dopplertemplatefuncs.go
│   │   ├── dumpcmd.go
│   │   ├── dumpconfigcmd.go
│   │   ├── editcmd.go
│   │   ├── editconfigcmd.go
│   │   ├── editconfigtemplatecmd.go
│   │   ├── editencryptedcmd.go
│   │   ├── ejsontemplatefuncs.go
│   │   ├── encryptcmd.go
│   │   ├── encryptiontemplatefuncs.go
│   │   ├── errors.go
│   │   ├── executetemplatecmd.go
│   │   ├── forgetcmd.go
│   │   ├── generatecmd.go
│   │   ├── gitcmd.go
│   │   ├── githubtemplatefuncs.go
│   │   ├── gopasstemplatefuncs.go
│   │   ├── helpcmd.go
│   │   ├── helps.gen.go
│   │   ├── ignoredcmd.go
│   │   ├── importcmd.go
│   │   ├── importcmd_test.go
│   │   ├── initcmd.go
│   │   ├── initcmd_test.go
│   │   ├── inittemplatefuncs.go
│   │   ├── inittemplatefuncs_test.go
│   │   ├── interactivetemplatefuncs.go
│   │   ├── internaltestcmd.go
│   │   ├── interpreters.go
│   │   ├── interpreters_test.go
│   │   ├── interpreters_unix_test.go
│   │   ├── interpreters_windows_test.go
│   │   ├── keepassxctemplatefuncs.go
│   │   ├── keepassxctemplatefuncs_test.go
│   │   ├── keepertemplatefuncs.go
│   │   ├── keyringtemplatefuncs.go
│   │   ├── keyringtemplatefuncs_freebsdnocgo.go
│   │   ├── lastpasstemplatefuncs.go
│   │   ├── lastpasstemplatefuncs_test.go
│   │   ├── lazyscryptidentity.go
│   │   ├── lazywriter.go
│   │   ├── license.gen.go
│   │   ├── licensecmd.go
│   │   ├── mackupcmd_darwin.go
│   │   ├── mackupcmd_darwin_test.go
│   │   ├── mackupcmd_nodarwin.go
│   │   ├── main_test.go
│   │   ├── managedcmd.go
│   │   ├── managedcmd_test.go
│   │   ├── mergeallcmd.go
│   │   ├── mergecmd.go
│   │   ├── mockcommand.cmd.tmpl
│   │   ├── mockcommand.tmpl
│   │   ├── noupgradecmd.go
│   │   ├── onepasswordtemplatefuncs.go
│   │   ├── onepasswordtemplatefuncs_test.go
│   │   ├── passholetemplatefuncs.go
│   │   ├── passtemplatefuncs.go
│   │   ├── pathlist.go
│   │   ├── pathlist_test.go
│   │   ├── pathstyle.go
│   │   ├── pinentry.go
│   │   ├── prompt.go
│   │   ├── protonpasstemplatefuncs.go
│   │   ├── purgecmd.go
│   │   ├── rbwtemplatefuncs.go
│   │   ├── readdcmd.go
│   │   ├── readdcmd_test.go
│   │   ├── readhttpresponse.go
│   │   ├── readhttpresponse_test.go
│   │   ├── removecmd.go
│   │   ├── secretcmd.go
│   │   ├── secretkeyringcmd.go
│   │   ├── secretkeyringcmd_freebsdnocgo.go
│   │   ├── secrettemplatefuncs.go
│   │   ├── shellquote.go
│   │   ├── shellquote_test.go
│   │   ├── sourcepathcmd.go
│   │   ├── sshcmd.go
│   │   ├── statecmd.go
│   │   ├── statuscmd.go
│   │   ├── statuscmd_test.go
│   │   ├── symlinks_test.go
│   │   ├── targetpathcmd.go
│   │   ├── templatefuncs.go
│   │   ├── templatefuncs_test.go
│   │   ├── testdata/
│   │   │   └── scripts/
│   │   │       ├── add.txtar
│   │   │       ├── addattributes.txtar
│   │   │       ├── addautotemplate.txtar
│   │   │       ├── addencrypted.txtar
│   │   │       ├── addnew.txtar
│   │   │       ├── addsecrets.txtar
│   │   │       ├── age.txtar
│   │   │       ├── ageencryption.txtar
│   │   │       ├── ageencryptionsymmetric.txtar
│   │   │       ├── agekeygen.txtar
│   │   │       ├── apply.txtar
│   │   │       ├── applychmod_unix.txtar
│   │   │       ├── applyexact.txtar
│   │   │       ├── applyremove.txtar
│   │   │       ├── applyskipencrypted.txtar
│   │   │       ├── applysourcepath.txtar
│   │   │       ├── applystate.txtar
│   │   │       ├── applytype.txtar
│   │   │       ├── applyverbose.txtar
│   │   │       ├── archivetar.txtar
│   │   │       ├── archivezip.txtar
│   │   │       ├── autocommit.txtar
│   │   │       ├── autopush.txtar
│   │   │       ├── bitwarden.txtar
│   │   │       ├── bitwardenunlock.txtar
│   │   │       ├── builtinage.txtar
│   │   │       ├── builtingit.txtar
│   │   │       ├── cat.txtar
│   │   │       ├── catconfig.txtar
│   │   │       ├── cd_unix.txtar
│   │   │       ├── cd_windows.txtar
│   │   │       ├── chattr.txtar
│   │   │       ├── chattrencrypted.txtar
│   │   │       ├── completion.txtar
│   │   │       ├── completion_unix.txtar
│   │   │       ├── config.txtar
│   │   │       ├── configstate.txtar
│   │   │       ├── create.txtar
│   │   │       ├── dashlane.txtar
│   │   │       ├── data.txtar
│   │   │       ├── debug.txtar
│   │   │       ├── destroy.txtar
│   │   │       ├── diff.txtar
│   │   │       ├── diffcommand_unix.txtar
│   │   │       ├── diffcommand_windows.txtar
│   │   │       ├── discussion4732.txtar
│   │   │       ├── doctor_unix.txtar
│   │   │       ├── doctor_windows.txtar
│   │   │       ├── doppler.txtar
│   │   │       ├── dumpconfig.txtar
│   │   │       ├── dumpjson.txtar
│   │   │       ├── dumpyaml.txtar
│   │   │       ├── edgecases.txtar
│   │   │       ├── edgecasesumask.txtar
│   │   │       ├── edit.txtar
│   │   │       ├── editconfig.txtar
│   │   │       ├── editconfigtemplate.txtar
│   │   │       ├── editencrypted.txtar
│   │   │       ├── edithardlink.txtar
│   │   │       ├── ejson.txtar
│   │   │       ├── encryptiontemplatefuncs.txtar
│   │   │       ├── errors.txtar
│   │   │       ├── exclude.txtar
│   │   │       ├── exectemplatefunc.txtar
│   │   │       ├── executetemplate.txtar
│   │   │       ├── external.txtar
│   │   │       ├── externalarchiveinclude.txtar
│   │   │       ├── externalcompression.txtar
│   │   │       ├── externaldiff.txtar
│   │   │       ├── externaldir.txtar
│   │   │       ├── externalencrypted.txtar
│   │   │       ├── externalfileurl.txtar
│   │   │       ├── externalfilter.txtar
│   │   │       ├── externalgitrepo.txtar
│   │   │       ├── externalguess.txtar
│   │   │       ├── externalrar.txtar
│   │   │       ├── externalzip.txtar
│   │   │       ├── forget.txtar
│   │   │       ├── generate.txtar
│   │   │       ├── git.txtar
│   │   │       ├── githubtemplatefuncs.txtar
│   │   │       ├── gitleaks.txtar
│   │   │       ├── gopass.txtar
│   │   │       ├── gpg.txtar
│   │   │       ├── gpgencryption.txtar
│   │   │       ├── gpgencryptionsymmetric.txtar
│   │   │       ├── help.txtar
│   │   │       ├── hooks.txtar
│   │   │       ├── hooks_windows.txtar
│   │   │       ├── ignore.txtar
│   │   │       ├── ignored.txtar
│   │   │       ├── import.txtar
│   │   │       ├── importtarzst.txtar
│   │   │       ├── importxz.txtar
│   │   │       ├── importzip.txtar
│   │   │       ├── init.txtar
│   │   │       ├── initconfig.txtar
│   │   │       ├── initgitlfs.txtar
│   │   │       ├── inittemplatefuncs.txtar
│   │   │       ├── issue1161.txtar
│   │   │       ├── issue1213.txtar
│   │   │       ├── issue1237.txtar
│   │   │       ├── issue1365.txtar
│   │   │       ├── issue1666.txtar
│   │   │       ├── issue1794.txtar
│   │   │       ├── issue1832.txtar
│   │   │       ├── issue1866.txtar
│   │   │       ├── issue1869.txtar
│   │   │       ├── issue2016.txtar
│   │   │       ├── issue2092.txtar
│   │   │       ├── issue2132.txtar
│   │   │       ├── issue2137.txtar
│   │   │       ├── issue2177.txtar
│   │   │       ├── issue2283.txtar
│   │   │       ├── issue2300.txtar
│   │   │       ├── issue2302.txtar
│   │   │       ├── issue2315.txtar
│   │   │       ├── issue2354.txtar
│   │   │       ├── issue2380.txtar
│   │   │       ├── issue2427.txtar
│   │   │       ├── issue2500.txtar
│   │   │       ├── issue2510.txtar
│   │   │       ├── issue2573.txtar
│   │   │       ├── issue2577.txtar
│   │   │       ├── issue2597.txtar
│   │   │       ├── issue2599.txtar
│   │   │       ├── issue2609.txtar
│   │   │       ├── issue2628.txtar
│   │   │       ├── issue2695.txtar
│   │   │       ├── issue2752.txtar
│   │   │       ├── issue2820.txtar
│   │   │       ├── issue2858.txtar
│   │   │       ├── issue2861.txtar
│   │   │       ├── issue2865.txtar
│   │   │       ├── issue2934.txtar
│   │   │       ├── issue2937.txtar
│   │   │       ├── issue2942.txtar
│   │   │       ├── issue2954.txtar
│   │   │       ├── issue2964.txtar
│   │   │       ├── issue2977.txtar
│   │   │       ├── issue2995.txtar
│   │   │       ├── issue3005.txtar
│   │   │       ├── issue3008.txtar
│   │   │       ├── issue3051.txtar
│   │   │       ├── issue3064.txtar
│   │   │       ├── issue3113.txtar
│   │   │       ├── issue3126.txtar
│   │   │       ├── issue3127.txtar
│   │   │       ├── issue3163.txtar
│   │   │       ├── issue3206.txtar
│   │   │       ├── issue3232.txtar
│   │   │       ├── issue3240.txtar
│   │   │       ├── issue3257.txtar
│   │   │       ├── issue3268.txtar
│   │   │       ├── issue3325.txtar
│   │   │       ├── issue3344.txtar
│   │   │       ├── issue3349.txtar
│   │   │       ├── issue3371.txtar
│   │   │       ├── issue3374.txtar
│   │   │       ├── issue3414.txtar
│   │   │       ├── issue3415.txtar
│   │   │       ├── issue3418.txtar
│   │   │       ├── issue3421.txtar
│   │   │       ├── issue3510.txtar
│   │   │       ├── issue3525.txtar
│   │   │       ├── issue3582.txtar
│   │   │       ├── issue3590.txtar
│   │   │       ├── issue3602.txtar
│   │   │       ├── issue3630.txtar
│   │   │       ├── issue3652.txtar
│   │   │       ├── issue3666.txtar
│   │   │       ├── issue3693.txtar
│   │   │       ├── issue3703.txtar
│   │   │       ├── issue3744.txtar
│   │   │       ├── issue3772.txtar
│   │   │       ├── issue3887.txtar
│   │   │       ├── issue3891.txtar
│   │   │       ├── issue3987.txtar
│   │   │       ├── issue4002.txtar
│   │   │       ├── issue4012.txtar
│   │   │       ├── issue4024.txtar
│   │   │       ├── issue4027.txtar
│   │   │       ├── issue4104.txtar
│   │   │       ├── issue4181.txtar
│   │   │       ├── issue4315.txtar
│   │   │       ├── issue4454.txtar
│   │   │       ├── issue4479.txtar
│   │   │       ├── issue4496.txtar
│   │   │       ├── issue4500.txtar
│   │   │       ├── issue4634.txtar
│   │   │       ├── issue4647.txtar
│   │   │       ├── issue4656.txtar
│   │   │       ├── issue4662.txtar
│   │   │       ├── issue4703.txtar
│   │   │       ├── issue4727.txtar
│   │   │       ├── issue4743.txtar
│   │   │       ├── issue4745.txtar
│   │   │       ├── issue4787.txtar
│   │   │       ├── issue4796.txtar
│   │   │       ├── issue4816.txtar
│   │   │       ├── issue4824.txtar
│   │   │       ├── issue4827.txtar
│   │   │       ├── issue4845.txtar
│   │   │       ├── issue4927.txtar
│   │   │       ├── issue796.txtar
│   │   │       ├── keepassxc.txtar
│   │   │       ├── keeper.txtar
│   │   │       ├── keepgoing.txtar
│   │   │       ├── lastpass.txtar
│   │   │       ├── license.txtar
│   │   │       ├── literal.txtar
│   │   │       ├── mackupbrew_darwin.txtar
│   │   │       ├── mackupmacports_darwin.txtar
│   │   │       ├── mackuppip_darwin.txtar
│   │   │       ├── mackuppipx_darwin.txtar
│   │   │       ├── managed.txtar
│   │   │       ├── managedtree.txtar
│   │   │       ├── merge_unix.txtar
│   │   │       ├── mergeall_unix.txtar
│   │   │       ├── mergeencryptedage_unix.txtar
│   │   │       ├── mergeencryptedgpg_unix.txtar
│   │   │       ├── modesymlink.txtar
│   │   │       ├── modify_unix.txtar
│   │   │       ├── modify_windows.txtar
│   │   │       ├── modifyencrypted.txtar
│   │   │       ├── modifypython_windows.txtar
│   │   │       ├── noencryption.txtar
│   │   │       ├── nosourcedir.txtar
│   │   │       ├── onepassword2.txtar
│   │   │       ├── onepassword2connect.txtar
│   │   │       ├── onepassword2service.txtar
│   │   │       ├── options.txtar
│   │   │       ├── pager.txtar
│   │   │       ├── pass.txtar
│   │   │       ├── passhole.txtar
│   │   │       ├── plugin.txtar
│   │   │       ├── protonpass.txtar
│   │   │       ├── purge.txtar
│   │   │       ├── rbw.txtar
│   │   │       ├── re-add.txtar
│   │   │       ├── readd-exact.txtar
│   │   │       ├── readdreencrypt.txtar
│   │   │       ├── remove.txtar
│   │   │       ├── removedir.txtar
│   │   │       ├── root.txtar
│   │   │       ├── runscriptdir_unix.txtar
│   │   │       ├── script.txtar
│   │   │       ├── script_unix.txtar
│   │   │       ├── script_windows.txtar
│   │   │       ├── scriptenv.txtar
│   │   │       ├── scriptinterpreters_unix_pwsh.txtar
│   │   │       ├── scriptinterpreters_windows.txtar
│   │   │       ├── scriptinterpreterstemplate.txtar
│   │   │       ├── scriptonce_unix.txtar
│   │   │       ├── scriptonce_windows.txtar
│   │   │       ├── scriptonchange_unix.txtar
│   │   │       ├── scriptorder_unix.txtar
│   │   │       ├── scriptorder_windows.txtar
│   │   │       ├── scriptperl.txtar
│   │   │       ├── scriptpython.txtar
│   │   │       ├── scriptruby.txtar
│   │   │       ├── scriptsdir_unix.txtar
│   │   │       ├── scriptsubdir_unix.txtar
│   │   │       ├── scriptsubdir_windows.txtar
│   │   │       ├── scripttempdir.txtar
│   │   │       ├── secret.txtar
│   │   │       ├── sourcedir.txtar
│   │   │       ├── sourcepath.txtar
│   │   │       ├── state.txtar
│   │   │       ├── state_unix.txtar
│   │   │       ├── state_windows.txtar
│   │   │       ├── status.txtar
│   │   │       ├── symlinks.txtar
│   │   │       ├── symlinks_windows.txtar
│   │   │       ├── targetpath.txtar
│   │   │       ├── templatedata.txtar
│   │   │       ├── templatedirectives.txtar
│   │   │       ├── templatefuncs.txtar
│   │   │       ├── templatevars.txtar
│   │   │       ├── textconv.txtar
│   │   │       ├── tilde.txtar
│   │   │       ├── transparentencryption.txtar
│   │   │       ├── umask_unix.txtar
│   │   │       ├── unmanaged.txtar
│   │   │       ├── unmanagedtree.txtar
│   │   │       ├── update.txtar
│   │   │       ├── upgrade.txtar
│   │   │       ├── vault.txtar
│   │   │       ├── verify.txtar
│   │   │       ├── version.txtar
│   │   │       └── workingtree.txtar
│   │   ├── textconv.go
│   │   ├── unmanagedcmd.go
│   │   ├── unmanagedcmd_test.go
│   │   ├── updatecmd.go
│   │   ├── upgradecmd.go
│   │   ├── upgradecmd_test.go
│   │   ├── upgradecmd_unix.go
│   │   ├── upgradecmd_windows.go
│   │   ├── util.go
│   │   ├── util_test.go
│   │   ├── util_unix.go
│   │   ├── util_windows.go
│   │   ├── vaulttemplatefuncs.go
│   │   ├── verifycmd.go
│   │   └── verifycmd_test.go
│   └── cmds/
│       ├── execute-template/
│       │   ├── main.go
│       │   └── main_test.go
│       ├── generate-commit/
│       │   └── main.go
│       ├── generate-helps/
│       │   ├── helps.go.tmpl
│       │   └── main.go
│       ├── generate-install.sh/
│       │   ├── install.sh.tmpl
│       │   ├── main.go
│       │   └── main_test.go
│       ├── generate-license/
│       │   ├── license.go.tmpl
│       │   └── main.go
│       ├── hexencode/
│       │   └── main.go
│       ├── lint-commit-messages/
│       │   ├── main.go
│       │   └── main_test.go
│       ├── lint-txtar/
│       │   └── main.go
│       └── lint-whitespace/
│           ├── main.go
│           └── main_test.go
├── main.go
├── main_test.go
└── pyproject.toml

================================================
FILE CONTENTS
================================================

================================================
FILE: .config/capslock-summary.json
================================================
{
  "chezmoi.io/chezmoi": [
    "CAPABILITY_ARBITRARY_EXECUTION",
    "CAPABILITY_CGO",
    "CAPABILITY_EXEC",
    "CAPABILITY_FILES",
    "CAPABILITY_MODIFY_SYSTEM_STATE",
    "CAPABILITY_NETWORK",
    "CAPABILITY_OPERATING_SYSTEM",
    "CAPABILITY_READ_SYSTEM_STATE",
    "CAPABILITY_REFLECT",
    "CAPABILITY_RUNTIME",
    "CAPABILITY_SYSTEM_CALLS",
    "CAPABILITY_UNANALYZED",
    "CAPABILITY_UNSAFE_POINTER"
  ],
  "chezmoi.io/chezmoi/internal/chezmoi": [
    "CAPABILITY_ARBITRARY_EXECUTION",
    "CAPABILITY_CGO",
    "CAPABILITY_EXEC",
    "CAPABILITY_MODIFY_SYSTEM_STATE",
    "CAPABILITY_NETWORK",
    "CAPABILITY_OPERATING_SYSTEM",
    "CAPABILITY_RUNTIME",
    "CAPABILITY_SYSTEM_CALLS"
  ],
  "chezmoi.io/chezmoi/internal/cmd": [
    "CAPABILITY_ARBITRARY_EXECUTION",
    "CAPABILITY_CGO",
    "CAPABILITY_EXEC",
    "CAPABILITY_FILES",
    "CAPABILITY_MODIFY_SYSTEM_STATE",
    "CAPABILITY_NETWORK",
    "CAPABILITY_OPERATING_SYSTEM",
    "CAPABILITY_READ_SYSTEM_STATE",
    "CAPABILITY_REFLECT",
    "CAPABILITY_RUNTIME",
    "CAPABILITY_SYSTEM_CALLS",
    "CAPABILITY_UNANALYZED",
    "CAPABILITY_UNSAFE_POINTER"
  ],
  "filippo.io/age": [
    "CAPABILITY_MODIFY_SYSTEM_STATE",
    "CAPABILITY_OPERATING_SYSTEM",
    "CAPABILITY_RUNTIME"
  ],
  "filippo.io/age/agessh": [
    "CAPABILITY_MODIFY_SYSTEM_STATE"
  ],
  "filippo.io/age/internal/format": [
    "CAPABILITY_RUNTIME"
  ],
  "filippo.io/age/plugin": [
    "CAPABILITY_OPERATING_SYSTEM"
  ],
  "github.com/Masterminds/sprig/v3": [
    "CAPABILITY_REFLECT"
  ],
  "github.com/bodgit/sevenzip": [
    "CAPABILITY_CGO",
    "CAPABILITY_EXEC",
    "CAPABILITY_MODIFY_SYSTEM_STATE",
    "CAPABILITY_OPERATING_SYSTEM",
    "CAPABILITY_RUNTIME"
  ],
  "github.com/dsnet/compress/bzip2": [
    "CAPABILITY_UNANALYZED"
  ],
  "github.com/dsnet/compress/internal/prefix": [
    "CAPABILITY_UNANALYZED"
  ],
  "github.com/fatih/color": [
    "CAPABILITY_FILES"
  ],
  "github.com/fsnotify/fsnotify": [
    "CAPABILITY_READ_SYSTEM_STATE"
  ],
  "github.com/go-viper/mapstructure/v2": [
    "CAPABILITY_REFLECT"
  ],
  "github.com/godbus/dbus/v5": [
    "CAPABILITY_MODIFY_SYSTEM_STATE",
    "CAPABILITY_UNSAFE_POINTER"
  ],
  "github.com/gopasspw/gopass/internal/backend/crypto/age": [
    "CAPABILITY_MODIFY_SYSTEM_STATE",
    "CAPABILITY_OPERATING_SYSTEM"
  ],
  "github.com/gopasspw/gopass/internal/store/root": [
    "CAPABILITY_FILES"
  ],
  "github.com/gopasspw/gopass/pkg/gopass/api": [
    "CAPABILITY_FILES"
  ],
  "github.com/klauspost/compress/internal/cpuinfo": [
    "CAPABILITY_ARBITRARY_EXECUTION"
  ],
  "github.com/klauspost/compress/s2": [
    "CAPABILITY_ARBITRARY_EXECUTION"
  ],
  "github.com/klauspost/compress/zstd": [
    "CAPABILITY_ARBITRARY_EXECUTION"
  ],
  "github.com/mholt/archives": [
    "CAPABILITY_CGO",
    "CAPABILITY_EXEC",
    "CAPABILITY_MODIFY_SYSTEM_STATE",
    "CAPABILITY_OPERATING_SYSTEM",
    "CAPABILITY_RUNTIME",
    "CAPABILITY_UNANALYZED"
  ],
  "github.com/twpayne/go-shell": [
    "CAPABILITY_ARBITRARY_EXECUTION",
    "CAPABILITY_CGO",
    "CAPABILITY_RUNTIME",
    "CAPABILITY_UNSAFE_POINTER"
  ],
  "github.com/zalando/go-keyring": [
    "CAPABILITY_MODIFY_SYSTEM_STATE",
    "CAPABILITY_UNSAFE_POINTER"
  ],
  "github.com/zalando/go-keyring/secret_service": [
    "CAPABILITY_MODIFY_SYSTEM_STATE"
  ],
  "github.com/zricethezav/gitleaks/v8/detect": [
    "CAPABILITY_CGO",
    "CAPABILITY_EXEC",
    "CAPABILITY_MODIFY_SYSTEM_STATE",
    "CAPABILITY_OPERATING_SYSTEM",
    "CAPABILITY_RUNTIME",
    "CAPABILITY_UNANALYZED"
  ],
  "github.com/zricethezav/gitleaks/v8/sources": [
    "CAPABILITY_CGO",
    "CAPABILITY_EXEC",
    "CAPABILITY_MODIFY_SYSTEM_STATE",
    "CAPABILITY_OPERATING_SYSTEM",
    "CAPABILITY_RUNTIME",
    "CAPABILITY_UNANALYZED"
  ],
  "go.etcd.io/bbolt": [
    "CAPABILITY_SYSTEM_CALLS"
  ],
  "go4.org/readerutil": [
    "CAPABILITY_CGO",
    "CAPABILITY_EXEC",
    "CAPABILITY_MODIFY_SYSTEM_STATE",
    "CAPABILITY_OPERATING_SYSTEM",
    "CAPABILITY_RUNTIME"
  ],
  "golang.org/x/sys/unix": [
    "CAPABILITY_SYSTEM_CALLS"
  ]
}


================================================
FILE: .config/editorconfig-checker.json
================================================
{
    "Exclude": [
        "^completions/"
    ]
}


================================================
FILE: .config/golangci.yml
================================================
version: '2'
run:
  go: '1.25'
linters:
  enable:
  - asciicheck
  - bidichk
  - bodyclose
  - canonicalheader
  - containedctx
  - copyloopvar
  - decorder
  - dogsled
  - dupword
  - durationcheck
  - embeddedstructfieldcheck
  - err113
  - errchkjson
  - errname
  - errorlint
  - exptostd
  - fatcontext
  - forbidigo
  - forcetypeassert
  - funcorder
  - gocheckcompilerdirectives
  - gochecksumtype
  - gocritic
  - godoclint
  - godot
  - gomodguard
  - goprintffuncname
  - gosmopolitan
  - grouper
  - iface
  - importas
  - inamedparam
  - interfacebloat
  - intrange
  - iotamixing
  - loggercheck
  - makezero
  - mirror
  - misspell
  - modernize
  - nilerr
  - nilnesserr
  - nosprintfhostport
  - perfsprint
  - predeclared
  - protogetter
  - reassign
  - revive
  - rowserrcheck
  - sloglint
  - spancheck
  - sqlclosecheck
  - staticcheck
  - tagalign
  - tagliatelle
  - testableexamples
  - thelper
  - unconvert
  - unparam
  - unqueryvet
  - usestdlibvars
  - usetesting
  - wastedassign
  - whitespace
  disable:
  - arangolint
  - asasalint
  - contextcheck
  - cyclop
  - depguard
  - dupl
  - exhaustive
  - exhaustruct
  - funlen
  - ginkgolinter
  - gochecknoglobals
  - gochecknoinits
  - gocognit
  - goconst
  - gocyclo
  - godox
  - goheader
  - gomoddirectives
  - gosec
  - ireturn
  - lll
  - maintidx
  - musttag
  - nakedret
  - nestif
  - nilnil
  - nlreturn
  - noctx
  - nolintlint
  - nonamedreturns
  - paralleltest
  - prealloc
  - promlinter
  - recvcheck
  - testifylint
  - testpackage
  - tparallel
  - varnamelen
  - wrapcheck
  - wsl_v5
  - zerologlint
  settings:
    forbidigo:
      forbid:
      - pattern: ^archive/zip\.
      - pattern: ^compress/gzip\.
      - pattern: ^fmt\.Print.*$
      - pattern: ^ioutil\..*$
      - pattern: ^os\.(DirEntry|ErrExist|ErrNotExist|FileInfo|FileMode|Is.*|Mode.*)$
    gocritic:
      enable-all: true
      disabled-checks:
      - emptyFallthrough
      - hugeParam
      - rangeValCopy
      - unnamedResult
      - whyNoLint
    godoclint:
      default: all
      disable:
      - require-doc
    govet:
      disable:
      - fieldalignment
      - shadow
      enable-all: true
    misspell:
      locale: US
    revive:
      enable-all-rules: true
      rules:
      - name: add-constant
        disabled: true
      - name: cognitive-complexity
        disabled: true
      - name: cyclomatic
        disabled: true
      - name: deep-exit
        disabled: true
      - name: empty-block
        disabled: true
      - name: enforce-switch-style
        disabled: true
      - name: exported
        disabled: true
      - name: filename-format
        arguments:
        - ^[a-z][-0-9_a-z]*(?:\.gen)?\.go$
      - name: flag-parameter
        disabled: true
      - name: function-length
        disabled: true
      - name: function-result-limit
        disabled: true
      - name: import-shadowing
        disabled: true
      - name: identical-switch-branches
        disabled: true
      - name: line-length-limit
        disabled: true
      - name: max-control-nesting
        disabled: true
      - name: max-public-structs
        disabled: true
      - name: nested-structs
        disabled: true
      - name: unhandled-error
        disabled: true
      - name: unused-parameter
        disabled: true
      - name: unused-receiver
        disabled: true
      - name: useless-fallthrough
        disabled: true
    staticcheck:
      checks:
      - all
    sloglint:
      attr-only: true
  exclusions:
    generated: lax
    presets:
    - common-false-positives
    - legacy
    - std-error-handling
    rules:
    - linters:
      - godoclint
      path: internal/chezmoi/chezmoi_windows.go # https://github.com/godoc-lint/godoc-lint/issues/56
    - linters:
      - err113
      text: do not define dynamic errors, use wrapped static errors instead
    - linters:
      - forbidigo
      path: internal/cmds/
    - linters:
      - forcetypeassert
      path: _test\.go$
    - linters:
      - forbidigo
      path: assets/scripts/generate-commit.go
formatters:
  enable:
  - gci
  - gofmt
  - gofumpt
  - goimports
  - golines
  settings:
    gci:
      sections:
      - standard
      - default
      - prefix(chezmoi.io)
    gofumpt:
      module-path: chezmoi.io
      extra-rules: true
    goimports:
      local-prefixes:
      - chezmoi.io
    golines:
      max-len: 128
      tab-len: 4


================================================
FILE: .config/goreleaser.yaml
================================================
# yaml-language-server: $schema=https://goreleaser.com/static/schema.json

version: 2

project_name: chezmoi

before:
  hooks:
  - go tool generate-commit -o COMMIT
  - go mod download all
  - make ensure-syft

builds:
- id: chezmoi-cgo-glibc
  env:
  - CGO_ENABLED=1
  goos:
  - linux
  goarch:
  - amd64
  ldflags:
  - -s
  - -w
  - -X main.version={{ .Version }}
  - -X main.commit={{ .Commit }}
  - -X main.date={{ .Date }}
  - -X main.builtBy=goreleaser
- id: chezmoi-cgo-musl
  env:
  - CC=/usr/bin/musl-gcc
  - CGO_ENABLED=1
  goos:
  - linux
  goarch:
  - amd64
  ldflags:
  - -s
  - -w
  - -X main.version={{ .Version }}
  - -X main.commit={{ .Commit }}
  - -X main.date={{ .Date }}
  - -X main.builtBy=goreleaser
  - -linkmode external
  - --extldflags "-static"
- id: chezmoi-nocgo
  env:
  - CGO_ENABLED=0
  goos:
  - android
  - darwin
  - freebsd
  - linux
  - openbsd
  - windows
  goarch:
  - '386'
  - amd64
  - arm
  - arm64
  - loong64
  - mips64
  - mips64le
  - ppc64
  - ppc64le
  - riscv64
  - s390x
  goarm:
  - ''
  ldflags:
  - -s
  - -w
  - -X main.version={{ .Version }}
  - -X main.commit={{ .Commit }}
  - -X main.date={{ .Date }}
  - -X main.builtBy=goreleaser
  ignore:
  - goos: android
    goarch: '386'
  - goos: android
    goarch: amd64
  - goos: android
    goarch: arm
  - goos: darwin
    goarch: '386'
  - goos: linux
    goarch: amd64
  - goos: openbsd
    goarch: riscv64
  - goos: windows
    goarch: arm

archives:
- ids:
  - chezmoi-cgo-glibc # Required for chezmoi upgrade for versions <= 2.0.5
  - chezmoi-nocgo
  files:
  - LICENSE
  - README.md
  - completions/*
  name_template: >-
    {{- .ProjectName }}_
    {{- .Version }}_
    {{- .Os }}_
    {{- if eq .Arch "386" }}i386
    {{- else if eq .Arch "mips64" }}mips64_hardfloat
    {{- else if eq .Arch "mips64le" }}mips64le_hardfloat
    {{- else }}{{ .Arch }}{{ end -}}
  format_overrides:
  - goos: windows
    formats:
    - zip
- id: glibc
  ids:
  - chezmoi-cgo-glibc
  files:
  - LICENSE
  - README.md
  - completions/*
  name_template: '{{ .ProjectName }}_{{ .Version }}_{{ .Os }}-glibc_{{ .Arch }}'
- id: musl
  ids:
  - chezmoi-cgo-musl
  files:
  - LICENSE
  - README.md
  - completions/*
  name_template: '{{ .ProjectName }}_{{ .Version }}_{{ .Os }}-musl_{{ .Arch }}'

changelog:
  groups:
  - title: Features
    regexp: ^.*?feat(\([[:word:]]+\))??!?:.+$
    order: 0
  - title: Fixes
    regexp: ^.*?fix(\([[:word:]]+\))??!?:.+$
    order: 1
  - title: Documentation
    regexp: ^.*?docs?(\([[:word:]]+\))??!?:.+$
    order: 2
  - title: Other
    order: 999
  filters:
    exclude:
    - ^.*?chore(\(.*\))??!?:.+$

checksum:
  extra_files:
  - glob: ./dist/chezmoi-nocgo_darwin_amd64_v1/chezmoi
    name_template: chezmoi-darwin-amd64
  - glob: ./dist/chezmoi-nocgo_darwin_arm64_v8.0/chezmoi
    name_template: chezmoi-darwin-arm64
  - glob: ./dist/chezmoi-cgo-glibc_linux_amd64_v1/chezmoi
    name_template: chezmoi-linux-amd64
  - glob: ./dist/chezmoi-cgo-musl_linux_amd64_v1/chezmoi
    name_template: chezmoi-linux-amd64-musl
  - glob: ./dist/chezmoi-nocgo_windows_amd64_v1/chezmoi.exe
    name_template: chezmoi-windows-amd64.exe

nfpms:
- ids:
  - chezmoi-cgo-glibc
  - chezmoi-nocgo
  vendor: Tom Payne <twpayne@gmail.com>
  homepage: https://chezmoi.io/
  maintainer: Tom Payne <twpayne@gmail.com>
  description: Manage your dotfiles across multiple diverse machines, securely.
  license: MIT
  formats:
  - archlinux
  - deb
  - rpm
  bindir: /usr/bin
  overrides:
    deb:
      file_name_template: >-
        {{- .ProjectName }}_
        {{- .Version }}_
        {{- .Os }}_
        {{- if eq .Arch "386" }}i386
        {{- else if eq .Arch "arm" }}armel
        {{- else }}{{ .Arch }}{{ end -}}
      contents:
      - src: completions/chezmoi-completion.bash
        dst: /usr/share/bash-completion/completions/chezmoi
      - src: completions/chezmoi.fish
        dst: /usr/share/fish/vendor_completions.d/chezmoi.fish
      - src: completions/chezmoi.zsh
        dst: /usr/share/zsh/vendor-completions/_chezmoi
    rpm:
      file_name_template: >-
        {{- .ProjectName }}-
        {{- .Version }}-
        {{- if eq .Arch "amd64" }}x86_64
        {{- else if eq .Arch "386" }}i686
        {{- else if eq .Arch "arm" }}armhfp
        {{- else if eq .Arch "arm64" }}aarch64
        {{- else }}{{ .Arch }}{{ end -}}
      contents:
      - src: completions/chezmoi-completion.bash
        dst: /usr/share/bash-completion/completions/chezmoi
      - src: completions/chezmoi.fish
        dst: /usr/share/fish/vendor_completions.d/chezmoi.fish
      - src: completions/chezmoi.zsh
        dst: /usr/share/zsh/site-functions/_chezmoi
- id: apks
  ids:
  - chezmoi-cgo-musl
  - chezmoi-nocgo
  vendor: Tom Payne <twpayne@gmail.com>
  homepage: https://chezmoi.io/
  maintainer: Tom Payne <twpayne@gmail.com>
  description: Manage your dotfiles across multiple diverse machines, securely.
  license: MIT
  formats:
  - apk
  bindir: /usr/bin

chocolateys:
- owners: twpayne
  authors: Tom Payne
  project_url: https://chezmoi.io
  url_template: https://github.com/twpayne/chezmoi/releases/download/v{{ .Version }}/{{ .ArtifactName }}
  icon_url: https://github.com/twpayne/chezmoi/raw/master/assets/images/logo-144px.png
  copyright: Copyright (c) 2018-{{ .Now.Format "2006" }} Tom Payne
  license_url: https://github.com/twpayne/chezmoi/blob/master/LICENSE
  project_source_url: https://github.com/twpayne/chezmoi
  docs_url: https://chezmoi.io
  bug_tracker_url: https://github.com/twpayne/chezmoi/issues
  tags: configuration dotfile dotfiles
  summary: Manage your dotfiles across multiple diverse machines, securely.
  description: |
    ## What does chezmoi do?

    chezmoi helps you manage your personal configuration files (dotfiles, like `~/.gitconfig`) across multiple machines.

    chezmoi is helpful if you have spent time customizing the tools you use (e.g. shells, editors, and version control systems) and want to keep machines running different accounts (e.g. home and work) and/or different operating systems (e.g. Linux, macOS, and Windows) in sync, while still being able to easily cope with differences from machine to machine.

    chezmoi scales from the trivial (e.g. copying a few dotfiles onto a Raspberry Pi, development container, or virtual machine) to complex long-lived multi-machine development environments (e.g. keeping any number of home and work, Linux, macOS, and Windows machines in sync). In all cases you only need to maintain a single source of truth (a single branch in git) and getting started only requires adding a single binary to your machine (which you can do with `curl`, `wget`, or `scp`).

    chezmoi has strong support for security, allowing you to manage secrets (e.g. passwords, access tokens, and private keys) securely and seamlessly using a password manager and/or encrypt whole files with your favorite encryption tool.
  release_notes: '{{ .Changelog }}'
  api_key: '{{ .Env.CHOCOLATEY_API_KEY }}'

release:
  extra_files:
  - glob: ./assets/cosign/cosign.pub
    name_template: chezmoi_cosign.pub
  - glob: ./dist/chezmoi-nocgo_darwin_amd64_v1/chezmoi
    name_template: chezmoi-darwin-amd64
  - glob: ./dist/chezmoi-nocgo_darwin_arm64_v8.0/chezmoi
    name_template: chezmoi-darwin-arm64
  - glob: ./dist/chezmoi-cgo-glibc_linux_amd64_v1/chezmoi
    name_template: chezmoi-linux-amd64
  - glob: ./dist/chezmoi-cgo-musl_linux_amd64_v1/chezmoi
    name_template: chezmoi-linux-amd64-musl
  - glob: ./dist/chezmoi-nocgo_windows_amd64_v1/chezmoi.exe
    name_template: chezmoi-windows-amd64.exe

sboms:
- cmd: ../bin/syft
  args:
  - $artifact
  - --output
  - spdx-json=$document
  - --enrich
  - all
  disable: false

scoops:
- repository:
    owner: twpayne
    name: scoop-bucket
    token: '{{ .Env.SCOOP_GITHUB_TOKEN }}'
  commit_author:
    name: Tom Payne
    email: twpayne@gmail.com
  homepage: https://chezmoi.io
  description: Manage your dotfiles across multiple diverse machines, securely.
  license: MIT

signs:
- cmd: cosign
  stdin: '{{ .Env.COSIGN_PWD }}'
  args:
  - sign-blob
  - --key=assets/cosign/cosign.key
  - --output-signature=${signature}
  - --yes
  - ${artifact}
  artifacts: checksum

snapcrafts:
- ids:
  - chezmoi-cgo-glibc
  - chezmoi-nocgo
  summary: Manage your dotfiles across multiple diverse machines, securely.
  description: Manage your dotfiles across multiple diverse machines, securely.
  publish: true
  grade: stable
  confinement: classic
  license: MIT
  base: bare
  apps:
    chezmoi:
      command: chezmoi
      completer: completions/chezmoi-completion.bash

source:
  enabled: true
  prefix_template: '{{ .ProjectName }}-{{ .Version }}/'
  files:
  - COMMIT

winget:
- name: chezmoi
  publisher: twpayne
  publisher_url: https://github.com/twpayne
  short_description: Manage your dotfiles across multiple diverse machines, securely.
  license: MIT
  commit_author:
    name: Tom Payne
    email: twpayne@gmail.com
  homepage: https://chezmoi.io
  license_url: https://github.com/twpayne/chezmoi/blob/master/LICENSE
  copyright: Copyright (c) 2018-{{ .Now.Format "2006" }} Tom Payne
  release_notes: '{{ .Changelog }}'
  release_notes_url: https://github.com/twpayne/chezmoi/releases/tag/{{ .Tag }}
  tags:
  - cli
  - configuration
  - dotbot
  - dotfile
  - dotfiles
  - stow
  - yadm
  author: Tom Payne
  publisher_support_url: https://github.com/twpayne/chezmoi/issues
  repository:
    owner: twpayne
    name: winget-pkgs
    branch: chezmoi-{{ .Version }}
    token: '{{ .Env.WINGET_GITHUB_TOKEN }}'
    pull_request:
      enabled: true
      base:
        owner: microsoft
        name: winget-pkgs
        branch: master


================================================
FILE: .config/markdownlint-cli2.yaml
================================================
globs:
- '**/*.md'
ignores:
- .github/ISSUE_TEMPLATE/*.md
- .venv/
- assets/chezmoi.io/docs/reference/release-history.md
config:
  line-length: false # FIXME enable
  no-trailing-punctuation: false # FIXME enable
  fenced-code-language: false # FIXME enable
  code-block-style: false # FIXME enable
  link-image-reference-definitions: false # FIXME enable


================================================
FILE: .editorconfig
================================================
root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

[*.ps1]
charset = utf-8
end_of_line = crlf
insert_final_newline = true
trim_trailing_whitespace = true

[*.py]
indent_size = 4
indent_style = space

[*.sh]
indent_size = 1
indent_style = tab

[{*.yaml,*.yml}]
indent_size = 2
indent_style = space


================================================
FILE: .gitattributes
================================================
* -text

# Make GitHub language breakdown more accurate, see https://github.com/github/linguist
*.gen.go linguist-generated
assets/scripts/install.sh linguist-generated
assets/scripts/install-local-bin.sh linguist-generated
completions/* linguist-generated


================================================
FILE: .github/CODE_OF_CONDUCT.md
================================================
# Code of Conduct

chezmoi follows the [Contributor Covenant Code Of
Conduct](https://www.contributor-covenant.org/version/2/1/code_of_conduct/) with
the following additions for LLM (Large Language Model)-generated contributions:

* Any contribution of any LLM-generated content will be rejected and result in
  an immediate ban for the contributor, without recourse.


================================================
FILE: .github/CONTRIBUTING.md
================================================
# Contributing

> [!WARNING]
>
> If you use an LLM (Large Language Model, like ChatGPT, Claude, Gemini, GitHub
> Copilot, or Llama) to make any kind of contribution then you will immediately
> be banned without recourse. See [`CODE_OF_CONDUCT.md`][coc] for more
> information.

See the [contributing guide][guide] for full details.

[guide]: https://chezmoi.io/developer-guide/contributing-changes/
[coc]: https://github.com/twpayne/chezmoi/blob/master/.github/CODE_OF_CONDUCT.md


================================================
FILE: .github/ISSUE_TEMPLATE/01_support_request.md
================================================
---
name: Support request
about: Get help with using chezmoi
title: ''
labels: support
assignees: ''
---

<!--

chezmoi has a strict zero-tolerance policy on LLM contributions. If you use an
LLM (Large Language Model, like ChatGPT, Claude, Gemini, GitHub Copilot, or
Llama) to make any kind of contribution then you will immediately be banned
without recourse.

-->

## What exactly are you trying to do?

Describe in as much detail as possible.

## What have you tried so far?

Describe what you have tried so far.

## Where else have you checked for solutions?

* [ ] I have read [chezmoi's user guide](https://chezmoi.io/user-guide/command-overview/), and not found the answer.
* [ ] I have searched [chezmoi's reference guide](https://chezmoi.io/reference/), and not found the answer.
* [ ] Other, please give details.

## Output of any commands you've tried with `--verbose` flag

```console
$ chezmoi --verbose $COMMAND
```

## Output of `chezmoi doctor`

<details>

```console
$ chezmoi doctor
```

</details>

## Additional context

Add any other context about the problem here.


================================================
FILE: .github/ISSUE_TEMPLATE/02_feature_request.md
================================================
---
name: Feature request
about: Request a new feature
title: ''
labels: enhancement
assignees: ''
---

<!--

chezmoi has a strict zero-tolerance policy on LLM contributions. If you use an
LLM (Large Language Model, like ChatGPT, Claude, Gemini, GitHub Copilot, or
Llama) to make any kind of contribution then you will immediately be banned
without recourse.

-->

## Is your feature request related to a problem? Please describe.

A clear and concise description of what the problem is, for example "I'm always
frustrated when...".

## Describe the solution you'd like

A clear and concise description of what you want to happen.

## Describe alternatives you've considered

A clear and concise description of any alternative solutions or features you've
considered.

## Additional context

Add any other context or screenshots about the feature request here.


================================================
FILE: .github/ISSUE_TEMPLATE/03_bug_report.md
================================================
---
name: Bug report
about: Report a bug
title: ''
assignees: ''
---

<!--

chezmoi has a strict zero-tolerance policy on LLM contributions. If you use an
LLM (Large Language Model, like ChatGPT, Claude, Gemini, GitHub Copilot, or
Llama) to make any kind of contribution then you will immediately be banned
without recourse.

-->

## Describe the bug

A clear and concise description of what the bug is.

## To reproduce

Steps to reproduce the behavior.

## Expected behavior

A clear and concise description of what you expected to happen.

## Output of command with the `--verbose` flag

```console
$ chezmoi --verbose $COMMAND
```

## Output of `chezmoi doctor`

<details>

```console
$ chezmoi doctor
```

</details>

## Additional context

Add any other context about the problem here.


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--

Thanks for contributing!

chezmoi has a strict zero-tolerance policy on LLM contributions. If you use an
LLM (Large Language Model, like ChatGPT, Claude, Gemini, GitHub Copilot, or
Llama) to make any kind of contribution then you will immediately be banned
without recourse.

Please make sure that you have followed the contributing guide:
https://chezmoi.io/developer-guide/contributing-changes/

-->


================================================
FILE: .github/SECURITY.md
================================================
# Security

See the [security guide](https://chezmoi.io/developer-guide/security/).


================================================
FILE: .github/actions/free-disk-space/action.yml
================================================
name: free-disk-space
description: Frees disk space by deleting unused files
runs:
  using: composite
  steps:
  - name: remove-android
    shell: bash
    run: sudo rm -rf /usr/local/lib/android
  - name: remove-dotnet
    shell: bash
    run: sudo rm -rf /usr/share/dotnet


================================================
FILE: .github/actions/setup-go/action.yml
================================================
name: setup-go
description: Set up Go environment and enable caching
inputs:
  cache-prefix:
    description: Cache prefix
    default: cache-go
    required: false
  go-version:
    description: Go version to set up
    required: true
  upload-cache:
    description: Upload cache or only restore
    default: 'true'
    required: false
runs:
  using: composite
  steps:
  - name: setup-go-env
    shell: bash
    run: |
      if [ "$RUNNER_OS" = "Windows" ]; then
        echo "GOCACHE=D:\\golang\\cache" >> $GITHUB_ENV
        echo "GOMODCACHE=D:\\golang\\modcache" >> $GITHUB_ENV
        echo "GOPATH=D:\\golang\\go" >> $GITHUB_ENV
        echo "USERPROFILE=D:\\homedir" >> $GITHUB_ENV
      elif [ "$RUNNER_OS" = "macOS" ]; then
        echo "GOCACHE=/Users/runner/go/pkg/mod" >> $GITHUB_ENV
        echo "GOMODCACHE=/Users/runner/Library/Caches/go-build" >> $GITHUB_ENV
      else
        echo "GOCACHE=/home/runner/go/pkg/mod" >> $GITHUB_ENV
        echo "GOMODCACHE=/home/runner/.cache/go-build" >> $GITHUB_ENV
      fi
  - uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306   # v5.0.3
    if: ${{ inputs.upload-cache == 'true' }}
    with:
      path: |
        ${{ env.GOCACHE }}
        ${{ env.GOMODCACHE }}
      key: ${{ inputs.cache-prefix }}-${{ runner.os }}-${{ runner.arch }}-go-${{ inputs.go-version }}-${{ hashFiles('**/go.sum') }}
      restore-keys: |
        ${{ inputs.cache-prefix }}-${{ runner.os }}-${{ runner.arch }}-go-${{ inputs.go-version }}-
  - uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306   # v5.0.3
    if: ${{ inputs.upload-cache != 'true' }}
    with:
      path: |
        ${{ env.GOCACHE }}
        ${{ env.GOMODCACHE }}
      key: ${{ inputs.cache-prefix }}-${{ runner.os }}-${{ runner.arch }}-go-${{ inputs.go-version }}-${{ hashFiles('**/go.sum') }}
      restore-keys: |
        ${{ inputs.cache-prefix }}-${{ runner.os }}-${{ runner.arch }}-go-${{ inputs.go-version }}-
  - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417   # v6.3.0
    with:
      cache: false
      go-version: ${{ inputs.go-version }}


================================================
FILE: .github/workflows/clear-pr-caches.yml
================================================
name: clear-pr-caches

on:
  pull_request_target:
    types:
    - closed

permissions:
  actions: write

jobs:
  clear-caches:
    runs-on: ubuntu-24.04
    steps:
    - name: clear-caches
      env:
        GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        GH_REPO: ${{ github.repository }}
        BRANCH: refs/pull/${{ github.event.pull_request.number }}/merge
      run: |
        cacheKeysForPR=$(gh cache list --ref "$BRANCH" --limit 100 --json id --jq '.[].id')
        set +e
        for cacheKey in $cacheKeysForPR; do
          gh cache delete "$cacheKey"
        done


================================================
FILE: .github/workflows/govulncheck.yml
================================================
name: govulncheck
on:
  pull_request:
    branches:
    - master
  push:
    branches:
    - master
    tags:
    - v*
  schedule:
  - cron: 2 2 * * *
concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true
jobs:
  govulncheck:
    runs-on: ubuntu-22.04
    permissions:
      contents: read
    steps:
    - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # v6.0.2
      with:
        persist-credentials: false
    - name: go-version
      id: go-version
      run: |
        echo go-version="$(awk '/GO_VERSION:/ { print $2 }' .github/workflows/main.yml | tr -d \')" >> "${GITHUB_OUTPUT}"
    - uses: ./.github/actions/setup-go
      with:
        go-version: ${{ steps.go-version.outputs.go-version }}
        upload-cache: false
    - uses: golang/govulncheck-action@b625fbe08f3bccbe446d94fbf87fcc875a4f50ee   # v1.0.4
      with:
        cache: false
        go-version-input: ${{ steps.go-version.outputs.go-version }}


================================================
FILE: .github/workflows/installer.yml
================================================
name: installer
on:
  pull_request:
    branches:
    - master
  push:
    branches:
    - master
concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true
env:
  SHA: ${{ github.event_name == 'push' && github.sha || github.event.pull_request.head.sha }}
jobs:
  changes:
    runs-on: ubuntu-22.04
    outputs:
      sh: ${{ steps.filter.outputs.sh }}
      ps1: ${{ steps.filter.outputs.ps1 }}
    permissions:
      contents: read
    steps:
    - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # v6.0.2
      with:
        persist-credentials: false
    - id: filter
      uses: dorny/paths-filter@9d7afb8d214ad99e78fbd4247752c4caed2b6e4c   # v4.0.0
      with:
        filters: |
          shared: &shared
          - '.github/workflows/installer.yml'
          sh:
          - *shared
          - 'assets/scripts/install*.sh'
          - 'internal/cmds/generate-install.sh/install.sh.tmpl'
          ps1:
          - *shared
          - 'assets/scripts/install.ps1'
  misspell:
    runs-on: ubuntu-22.04
    permissions:
      contents: read
    steps:
    - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # v6.0.2
      with:
        persist-credentials: false
    - uses: reviewdog/action-misspell@d6429416b12b09b4e2768307d53bef58d172e962   # v1.27.0
      with:
        locale: US
  test-install-sh:
    if: ${{ needs.changes.outputs.sh == 'true' }}
    strategy:
      matrix:
        os:
        - macos-14
        - ubuntu-22.04
        - windows-2022
    needs: changes
    runs-on: ${{ matrix.os }}
    env:
      BINARY: ${{ matrix.os == 'windows-2022' && 'bin/chezmoi.exe' || 'bin/chezmoi' }}
    steps:
    - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # v6.0.2
      with:
        persist-credentials: false
    - name: test-${{ matrix.os }}-local
      shell: bash
      run: |
        rm -f ${{ env.BINARY }}
        sh assets/scripts/install.sh -d
        ${{ env.BINARY }} --version
    - name: test-${{ matrix.os }}-url
      shell: bash
      run: |
        rm -f ${{ env.BINARY }}
        sh -c "$(curl -fsLS https://raw.githubusercontent.com/twpayne/chezmoi/${{ env.SHA }}/assets/scripts/install.sh)" -- -d
        ${{ env.BINARY }} --version
  test-install-ps1:
    if: ${{ needs.changes.outputs.ps1 == 'true' }}
    strategy:
      matrix:
        os:
        - macos-14
        - ubuntu-22.04
        - windows-2022
    needs: changes
    runs-on: ${{ matrix.os }}
    env:
      BINARY: ${{ matrix.os == 'windows-2022' && 'bin/chezmoi.exe' || 'bin/chezmoi' }}
    steps:
    - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # v6.0.2
    - name: test-${{ matrix.os }}-local-pwsh
      shell: pwsh
      run: |
        if (Test-Path -Path ${{ env.BINARY }}) { Remove-Item -Force ${{ env.BINARY }} }
        assets/scripts/install.ps1 -d
        ${{ env.BINARY }} --version
    - name: test-${{ matrix.os }}-local-powershell
      if: matrix.os == 'windows-2022'
      shell: powershell
      run: |
        if (Test-Path -Path ${{ env.BINARY }}) { Remove-Item -Force ${{ env.BINARY }} }
        assets/scripts/install.ps1 -d
        ${{ env.BINARY }} --version
    - name: test-${{ matrix.os }}-url-pwsh
      shell: pwsh
      run: |
        if (Test-Path -Path ${{ env.BINARY }}) { Remove-Item -Force ${{ env.BINARY }} }
        iex "&{$(irm 'https://raw.githubusercontent.com/twpayne/chezmoi/${{ env.SHA }}/assets/scripts/install.ps1')} -d"
        ${{ env.BINARY }} --version
    - name: test-${{ matrix.os }}-url-powershell
      if: matrix.os == 'windows-2022'
      shell: powershell
      run: |
        if (Test-Path -Path ${{ env.BINARY }}) { Remove-Item -Force ${{ env.BINARY }} }
        iex "&{$(irm 'https://raw.githubusercontent.com/twpayne/chezmoi/${{ env.SHA }}/assets/scripts/install.ps1')} -d"
        ${{ env.BINARY }} --version


================================================
FILE: .github/workflows/lock-threads.yml
================================================
name: lock-threads

on:
  schedule:
  - cron: 17 2 * * *
  workflow_dispatch: {}

permissions:
  issues: write
  pull-requests: write

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  action:
    runs-on: ubuntu-22.04
    steps:
    - uses: dessant/lock-threads@7266a7ce5c1df01b1c6db85bf8cd86c737dadbe7   # v6.0.0
      with:
        process-only: issues, prs
        issue-lock-reason: resolved
        issue-inactive-days: 28
        pr-lock-reason: resolved
        pr-inactive-days: 28
        log-output: true


================================================
FILE: .github/workflows/main.yml
================================================
name: main
on:
  pull_request:
    branches:
    - master
  push:
    branches:
    - master
    tags:
    - v*
  schedule:
  - cron: 32 2 * * *
concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true
env:
  AGE_VERSION: 1.3.1 # https://github.com/FiloSottile/age/releases
  CHOCOLATEY_VERSION: 2.6.0 # https://github.com/chocolatey/choco/releases
  COSIGN_VERSION: 2.6.2 # https://github.com/sigstore/cosign/releases FIXME upgrade to cosign v3
  GO_VERSION: 1.26.1 # https://go.dev/doc/devel/release
  GOLANGCI_LINT_VERSION: 2.11.3 # https://github.com/golangci/golangci-lint/releases
  GORELEASER_VERSION: 2.14.3 # https://github.com/goreleaser/goreleaser/releases
  PYTHON_VERSION: '3.14' # https://www.python.org/downloads/
  RAGE_VERSION: 0.11.1 # https://github.com/str4d/rage/releases
  SYFT_VERSION: 1.42.2 # https://github.com/anchore/syft/releases
  UV_VERSION: 0.10.10 # https://github.com/astral-sh/uv/releases
jobs:
  changes:
    runs-on: ubuntu-22.04
    outputs:
      code: ${{ steps.filter.outputs.code }}
    permissions:
      contents: read
    steps:
    - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # v6.0.2
      with:
        persist-credentials: false
    - id: filter
      uses: dorny/paths-filter@9d7afb8d214ad99e78fbd4247752c4caed2b6e4c   # v4.0.0
      with:
        filters: |
          code:
          - '**/*.go'
          - '.github/actions/setup-go/action.yml'
          - '.github/workflows/main.yml'
          - '.goreleaser.yaml'
          - 'Makefile'
          - 'assets/**/*.tmpl'
          - 'assets/docker/**'
          - 'assets/scripts/*.py'
          - 'assets/scripts/generate-commit.go'
          - 'assets/scripts/stow-to-chezmoi.sh'
          - 'assets/vagrant/**'
          - 'completions/**'
          - 'go.*'
          - 'internal/**/!(install.sh.tmpl)'
  codeql:
    needs: changes
    if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
    runs-on: ubuntu-22.04
    permissions:
      security-events: write
    steps:
    - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # v6.0.2
      with:
        fetch-depth: 1
        persist-credentials: false
    - uses: ./.github/actions/setup-go
      with:
        go-version: ${{ env.GO_VERSION }}
        upload-cache: false
    - uses: github/codeql-action/init@0c0c5dc2f136b98cb0537075ccfa21f94cd9a63e   # codeql-bundle-v2.24.3
      with:
        languages: go
    - uses: github/codeql-action/analyze@0c0c5dc2f136b98cb0537075ccfa21f94cd9a63e   # codeql-bundle-v2.24.3
  misspell:
    runs-on: ubuntu-22.04
    permissions:
      contents: read
    steps:
    - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # v6.0.2
      with:
        persist-credentials: false
    - uses: reviewdog/action-misspell@d6429416b12b09b4e2768307d53bef58d172e962   # v1.27.0
      with:
        locale: US
  test-alpine:
    needs: changes
    if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
    runs-on: ubuntu-22.04
    permissions:
      contents: read
    steps:
    - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # v6.0.2
      with:
        persist-credentials: false
    - uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306   # v5.0.3
      with:
        path: |
          ~/.go-alpine
        key: alpine-go-${{ hashFiles('**/go.sum') }}
        restore-keys: |
          alpine-go-
        lookup-only: true
    - name: test
      env:
        CHEZMOI_GITHUB_TOKEN: ${{ secrets.CHEZMOI_GITHUB_TOKEN }}
      run: |
        export DOCKER_GOCACHE="$HOME/.go-alpine"
        ./assets/docker/test.sh alpine
  test-archlinux:
    needs: changes
    if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
    runs-on: ubuntu-22.04
    permissions:
      contents: read
    steps:
    - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # v6.0.2
      with:
        persist-credentials: false
    - uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306   # v5.0.3
      with:
        path: |
          ~/.go-archlinux
        key: archlinux-go-${{ hashFiles('**/go.sum') }}
        restore-keys: |
          archlinux-go-
        lookup-only: true
    - name: test
      env:
        CHEZMOI_GITHUB_TOKEN: ${{ secrets.CHEZMOI_GITHUB_TOKEN }}
      run: |
        export DOCKER_GOCACHE="$HOME/.go-archlinux"
        ./assets/docker/test.sh archlinux
  test-macos:
    name: test-macos
    needs: changes
    if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
    runs-on: macos-15
    permissions:
      contents: read
    steps:
    - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # v6.0.2
      with:
        persist-credentials: false
    - uses: ./.github/actions/setup-go
      with:
        go-version: ${{ env.GO_VERSION }}
    - name: build
      run: |
        go build -v ./...
    - name: run
      run: |
        go tool chezmoi --version
    - name: install-age
      run: |
        brew install age
        age --version
    - name: install-rage
      run: |
        brew tap str4d.xyz/rage https://str4d.xyz/rage
        brew install rage
        rage --version
    - name: install-keepassxc
      run: |
        brew install keepassxc
        keepassxc-cli --version
    - name: test
      env:
        CHEZMOI_GITHUB_TOKEN: ${{ secrets.CHEZMOI_GITHUB_TOKEN }}
      run: |
        go test ./... -race
  test-release:
    needs: changes
    runs-on: ubuntu-22.04 # use older Ubuntu for older glibc, update minimum glibc version in install.sh.tmpl if this changes
    permissions:
      contents: read
    steps:
    - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # v6.0.2
      with:
        fetch-depth: 0
        persist-credentials: false
    - uses: ./.github/actions/free-disk-space
    - uses: ./.github/actions/setup-go
      with:
        cache-prefix: release-go
        go-version: ${{ env.GO_VERSION }}
    - name: install-release-dependencies
      if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
      run: |
        sudo apt-get --quiet update
        sudo apt-get --no-install-suggests --no-install-recommends --quiet --yes install musl-tools snapcraft
        mkdir -p /opt/chocolatey
        wget -q -O - "https://github.com/chocolatey/choco/releases/download/${CHOCOLATEY_VERSION}/chocolatey.v${CHOCOLATEY_VERSION}.tar.gz" | tar -xz -C "/opt/chocolatey"
        echo '#!/bin/bash' >> /usr/local/bin/choco
        echo 'mono /opt/chocolatey/choco.exe $@' >> /usr/local/bin/choco
        chmod +x /usr/local/bin/choco
    - name: create-syso
      run: |
        make create-syso
    - name: build-release
      if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
      uses: goreleaser/goreleaser-action@ec59f474b9834571250b370d4735c50f8e2d1e29   # v7.0.0
      with:
        version: ${{ env.GORELEASER_VERSION }}
        args: release --skip=sign --snapshot --timeout=1h
    - name: upload-artifact-chezmoi-darwin-amd64
      if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
      uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f   # v7.0.0
      with:
        name: chezmoi-darwin-amd64
        path: dist/chezmoi-nocgo_darwin_amd64_v1/chezmoi
    - name: upload-artifact-chezmoi-darwin-arm64
      if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
      uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f   # v7.0.0
      with:
        name: chezmoi-darwin-arm64
        path: dist/chezmoi-nocgo_darwin_arm64_v8.0/chezmoi
    - name: upload-artifact-chezmoi-linux-amd64
      if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
      uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f   # v7.0.0
      with:
        name: chezmoi-linux-amd64
        path: dist/chezmoi-cgo-glibc_linux_amd64_v1/chezmoi
    - name: upload-artifact-chezmoi-linux-musl-amd64
      if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
      uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f   # v7.0.0
      with:
        name: chezmoi-linux-amd64-musl
        path: dist/chezmoi-cgo-musl_linux_amd64_v1/chezmoi
    - name: upload-artifact-chezmoi-windows-amd64.exe
      if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
      uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f   # v7.0.0
      with:
        name: chezmoi-windows-amd64
        path: dist/chezmoi-nocgo_windows_amd64_v1/chezmoi.exe
  test-ubuntu:
    name: test-ubuntu-umask${{ matrix.umask }}
    strategy:
      fail-fast: false
      matrix:
        umask:
        - '022'
        - '002'
    needs: changes
    runs-on: ubuntu-22.04
    permissions:
      contents: read
    steps:
    - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # v6.0.2
      if: github.event_name == 'push' || needs.changes.outputs.code == 'true' || matrix.umask == '022'
      with:
        fetch-depth: 0
        persist-credentials: false
    - uses: ./.github/actions/setup-go
      if: github.event_name == 'push' || needs.changes.outputs.code == 'true' || matrix.umask == '022'
      with:
        go-version: ${{ env.GO_VERSION }}
    - name: install-age
      if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
      run: |
        cd "$(mktemp -d)"
        curl -fsSL "https://github.com/FiloSottile/age/releases/download/v${AGE_VERSION}/age-v${AGE_VERSION}-linux-amd64.tar.gz" | tar xzf -
        sudo install -m 755 age/age /usr/local/bin
        sudo install -m 755 age/age-keygen /usr/local/bin
    - name: install-rage
      if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
      run: |
        cd "$(mktemp -d)"
        curl -fsSL "https://github.com/str4d/rage/releases/download/v${RAGE_VERSION}/rage-v${RAGE_VERSION}-x86_64-linux.tar.gz" | tar xzf -
        sudo install -m 755 rage/rage /usr/local/bin
        sudo install -m 755 rage/rage-keygen /usr/local/bin
    - name: build
      if: github.event_name == 'push' || needs.changes.outputs.code == 'true' || matrix.umask == '022'
      run: |
        go build -v ./...
    - name: run
      if: github.event_name == 'push' || needs.changes.outputs.code == 'true' || matrix.umask == '022'
      run: |
        go tool chezmoi --version
    - name: test-umask-${{ matrix.umask }}
      if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
      env:
        CHEZMOI_GITHUB_TOKEN: ${{ secrets.CHEZMOI_GITHUB_TOKEN }}
        TEST_FLAGS: -ldflags="-X github.com/twpayne/chezmoi/internal/chezmoitest.umaskStr=0o${{ matrix.umask }}" -race -timeout=1h
      run: |
        go test ./... ${{ env.TEST_FLAGS }}
  test-website:
    runs-on: ubuntu-22.04
    permissions:
      contents: read
    steps:
    - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # v6.0.2
      with:
        persist-credentials: false
    - uses: ./.github/actions/setup-go
      with:
        cache-prefix: website-go
        go-version: ${{ env.GO_VERSION }}
    - uses: astral-sh/setup-uv@e06108dd0aef18192324c70427afc47652e63a82   # v7.5.0
      with:
        enable-cache: false
        version: ${{ env.UV_VERSION }}
    - name: install-website-dependencies
      run: |
        uv python install ${{ env.PYTHON_VERSION }}
        uv sync --locked
    - name: check-hooks
      run: uv run -v task pycheck
    - name: build-website
      run: uv run -v task build-docs
      env:
        CHEZMOI_GITHUB_TOKEN: ${{ secrets.CHEZMOI_GITHUB_TOKEN }}
  test-windows:
    name: test-windows
    needs: changes
    if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
    runs-on: windows-2022
    permissions:
      contents: read
    steps:
    - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # v6.0.2
      with:
        persist-credentials: false
    - uses: ./.github/actions/setup-go
      with:
        go-version: ${{ env.GO_VERSION }}
    - name: build
      run: |
        go build -v ./...
    - name: run
      run: |
        go tool chezmoi --version
    - name: test
      env:
        CHEZMOI_GITHUB_TOKEN: ${{ secrets.CHEZMOI_GITHUB_TOKEN }}
      run: |
        go test ./... -race
  check:
    runs-on: ubuntu-22.04
    permissions:
      contents: read
    steps:
    - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # v6.0.2
      with:
        fetch-depth: 0
        persist-credentials: false
    - uses: ./.github/actions/setup-go
      with:
        go-version: ${{ env.GO_VERSION }}
        upload-cache: false
    - name: generate
      run: |
        go generate
        git diff --exit-code
    - name: capslock
      run: |
        make capslock
        git diff --exit-code
    - name: actionlint
      run: |
        go tool actionlint
    - uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38   # 2.0.0
      with:
        ignore_paths: completions
    - name: editorconfig-checker
      run: |
        go tool editorconfig-checker -config=.config/editorconfig-checker.json
    - name: lint-whitespace
      run: |
        go tool lint-whitespace
    - name: lint-txtar
      run: |
        find . -name '*.txtar' -print0 | xargs -0 go tool lint-txtar
    - name: find-typos
      run: |
        go tool find-typos -format=github-actions chezmoi .
    - name: lint-commit-messages
      if: github.event_name == 'push'
      run: |
        go tool lint-commit-messages HEAD~1..HEAD
    - name: lint-commit-messages
      if: github.event_name == 'pull_request' && github.event.pull_request.draft == false
      run: |
        go tool lint-commit-messages ${{ github.event.pull_request.head.sha }}~${{ github.event.pull_request.commits }}..${{ github.event.pull_request.head.sha }}
    - name: lint-markdown
      uses: DavidAnson/markdownlint-cli2-action@07035fd053f7be764496c0f8d8f9f41f98305101   # v22.0.0
  lint:
    name: lint-${{ matrix.runs-on }}
    strategy:
      fail-fast: false
      matrix:
        runs-on:
        - macos-15
        - ubuntu-22.04
        - windows-2022
    needs: changes
    if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
    runs-on: ${{ matrix.runs-on }}
    permissions:
      contents: read
    steps:
    - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # v6.0.2
      with:
        persist-credentials: false
    - uses: ./.github/actions/setup-go
      with:
        go-version: ${{ env.GO_VERSION }}
        upload-cache: false
    - uses: golangci/golangci-lint-action@1e7e51e771db61008b38414a730f564565cf7c20   # v9.2.0
      with:
        version: v${{ env.GOLANGCI_LINT_VERSION }}
        args: --config=.config/golangci.yml --timeout=5m
    - name: format   # FIXME add make format-yaml
      run: |
        make format
        git diff --exit-code
  release: # FIXME this should be merged into test-release above
    if: startsWith(github.ref, 'refs/tags/')
    needs:
    - check
    - lint
    - test-alpine
    - test-archlinux
    - test-macos
    - test-release
    - test-ubuntu
    - test-website
    - test-windows
    runs-on: ubuntu-22.04 # use older Ubuntu for older glibc, update minimum glibc version in install.sh.tmpl if this changes
    permissions:
      contents: write
    steps:
    - name: install-build-dependencies
      run: |
        sudo apt-get --quiet update
        sudo apt-get --no-install-suggests --no-install-recommends --quiet --yes install musl-tools snapcraft
        mkdir -p /opt/chocolatey
        wget -q -O - "https://github.com/chocolatey/choco/releases/download/${CHOCOLATEY_VERSION}/chocolatey.v${CHOCOLATEY_VERSION}.tar.gz" | tar -xz -C "/opt/chocolatey"
        echo '#!/bin/bash' >> /usr/local/bin/choco
        echo 'mono /opt/chocolatey/choco.exe $@' >> /usr/local/bin/choco
        chmod +x /usr/local/bin/choco
    - name: check-snapcraft-credentials
      run: snapcraft whoami
      env:
        SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }}
    - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # v6.0.2
      with:
        fetch-depth: 0
        persist-credentials: false
    - uses: ./.github/actions/free-disk-space
    - uses: ./.github/actions/setup-go
      with:
        cache-prefix: release-go
        go-version: ${{ env.GO_VERSION }}
    - uses: sigstore/cosign-installer@ba7bc0a3fef59531c69a25acd34668d6d3fe6f22   # v4.1.0
      with:
        cosign-release: v${{ env.COSIGN_VERSION }}
    - name: create-syso
      run: |
        make create-syso
    - uses: goreleaser/goreleaser-action@ec59f474b9834571250b370d4735c50f8e2d1e29   # v7.0.0
      with:
        version: ${{ env.GORELEASER_VERSION }}
        args: release --timeout=1h
      env:
        CHOCOLATEY_API_KEY: ${{ secrets.CHOCOLATEY_API_KEY }}
        COSIGN_PWD: ${{ secrets.COSIGN_PWD }}
        GITHUB_TOKEN: ${{ secrets.GORELEASER_GITHUB_TOKEN }}
        SCOOP_GITHUB_TOKEN: ${{ secrets.SCOOP_GITHUB_TOKEN }}
        SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }}
        WINGET_GITHUB_TOKEN: ${{ secrets.WINGET_GITHUB_TOKEN }}
  deploy-website:
    needs:
    - release
    runs-on: ubuntu-22.04
    permissions:
      contents: write
    steps:
    - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd   # v6.0.2
      with:
        fetch-depth: 0
        persist-credentials: true
    - uses: ./.github/actions/setup-go
      with:
        cache-prefix: website-go
        go-version: ${{ env.GO_VERSION }}
    - uses: astral-sh/setup-uv@e06108dd0aef18192324c70427afc47652e63a82   # v7.5.0
      with:
        enable-cache: false
        version: ${{ env.UV_VERSION }}
    - name: prepare-chezmoi.io
      run: |
        uv sync --locked
        uv python install ${{ env.PYTHON_VERSION }}
        uv run -v task build-docs
      env:
        CHEZMOI_GITHUB_TOKEN: ${{ secrets.CHEZMOI_GITHUB_TOKEN }}
    - name: push-chezmoi.io
      run: |
        uv run -v task deploy-docs
    - name: prepare-get.chezmoi.io
      run: |
        cp assets/scripts/install.sh assets/get.chezmoi.io/index.html
        cp assets/scripts/install-local-bin.sh assets/get.chezmoi.io/lb
        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@55306faa4ed53b815ae49e564af8cfb359d32ae2   # v1.7.3
      env:
        SSH_DEPLOY_KEY: ${{ secrets.GET_CHEZMOI_IO_SSH_DEPLOY_KEY }}
      with:
        source-directory: assets/get.chezmoi.io
        destination-github-username: chezmoi
        destination-repository-name: get.chezmoi.io
        target-branch: gh-pages
        commit-message: 'chore: Update from ORIGIN_COMMIT'
        user-email: twpayne@gmail.com


================================================
FILE: .gitignore
================================================
/.vagrant
/COMMIT
/chezmoi
/chezmoi.exe
/coverage.out
/dist
/resource_windows_*.syso
/versioninfo.json


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) 2018 Tom Payne

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.


================================================
FILE: Makefile
================================================
GO?=go
GOOS=$(shell ${GO} env GOOS)
GOARCH=$(shell ${GO} env GOARCH)
GOLANGCI_LINT_VERSION=$(shell awk '/GOLANGCI_LINT_VERSION:/ { print $$2 }' .github/workflows/main.yml)
GORELEASER_VERSION=$(shell awk '/GORELEASER_VERSION:/ { print $$2 }' .github/workflows/main.yml)
SYFT_VERSION=$(shell awk '/SYFT_VERSION:/ { print $$2 }' .github/workflows/main.yml)
UPSTREAM=$(shell git remote -v | awk '/github.com[:\/]twpayne\/chezmoi(.git)? \(fetch\)/ {print $$1}')
ifdef VERSION
	GO_LDFLAGS+=-X main.version=${VERSION}
endif
ifdef COMMIT
	GO_LDFLAGS+=-X main.commit=${COMMIT}
endif
ifdef DATE
	GO_LDFLAGS+=-X main.date=${DATE}
endif
ifdef BUILT_BY
	GO_LDFLAGS+=-X main.builtBy=${BUILT_BY}
endif
PREFIX?=/usr/local

.PHONY: default
default: build

.PHONY: smoke-test
smoke-test: run build-all test lint format

.PHONY: build
build:
ifeq (${GO_LDFLAGS},)
	${GO} build . || ( rm -f chezmoi ; false )
else
	${GO} build -ldflags "${GO_LDFLAGS}" . || ( rm -f chezmoi ; false )
endif

.PHONY: install
install: build
	mkdir -p "${DESTDIR}${PREFIX}/bin"
	install -m 755 --target-directory "${DESTDIR}${PREFIX}/bin" chezmoi

.PHONY: install-from-git-working-copy
install-from-git-working-copy:
	${GO} install -ldflags "-X main.version=$(shell git describe --abbrev=0 --tags) \
		-X main.commit=$(shell git rev-parse HEAD) \
		-X main.date=$(shell git show -s --format=%ct HEAD) \
		-X main.builtBy=source"

.PHONY: build-in-git-working-copy
build-in-git-working-copy:
	${GO} build -ldflags "-X main.version=$(shell git describe --abbrev=0 --tags) \
		-X main.commit=$(shell git rev-parse HEAD) \
		-X main.date=$(shell git show -s --format=%ct HEAD) \
		-X main.builtBy=source"

.PHONY: build-all
build-all: build-darwin build-freebsd build-linux build-windows

.PHONY: build-darwin
build-darwin:
	GOOS=darwin GOARCH=amd64 ${GO} build -o /dev/null .
	GOOS=darwin GOARCH=arm64 ${GO} build -o /dev/null .

.PHONY: build-freebsd
build-freebsd:
	GOOS=freebsd GOARCH=amd64 ${GO} build -o /dev/null .

.PHONY: build-linux
build-linux:
	GOOS=linux GOARCH=amd64 ${GO} build -o /dev/null .
	GOOS=linux GOARCH=amd64 ${GO} build -tags=noupgrade -o /dev/null .

.PHONY: build-windows
build-windows: create-syso
	GOOS=windows GOARCH=amd64 ${GO} build -o /dev/null .

.PHONY: run
run:
	${GO} tool chezmoi --version

.PHONY: test-all
test-all: test test-release rm-dist test-docker test-vagrant

.PHONY: rm-dist
rm-dist:
	rm -rf dist

.PHONY: test
test:
	${GO} test -ldflags="-X chezmoi.io/chezmoi/internal/chezmoitest.umaskStr=0o022" ./...
	${GO} test -ldflags="-X chezmoi.io/chezmoi/internal/chezmoitest.umaskStr=0o002" ./...

.PHONY: test-docker
test-docker:
	( cd assets/docker && ./test.sh alpine archlinux fedora )

.PHONY: test-vagrant
test-vagrant:
	( cd assets/vagrant && ./test.sh freebsd14 )

.PHONY: coverage-html
coverage-html: coverage
	${GO} tool cover -html=coverage.out

.PHONY: coverage
coverage:
	${GO} test -coverprofile=coverage.out -coverpkg=chezmoi.io/chezmoi/... ./...

.PHONY: capslock
capslock:
	${GO} tool capslock -output=package > .config/capslock-summary.json

.PHONY: lint
lint: ensure-golangci-lint shellcheck
	${GO} tool actionlint
	${GO} tool editorconfig-checker -config=.config/editorconfig-checker.json
	./bin/golangci-lint run --config=.config/golangci.yml
	${GO} tool lint-whitespace
	find . -name \*.txtar | xargs ${GO} tool lint-txtar
	${GO} tool find-typos chezmoi .
	${GO} tool lint-commit-messages ${UPSTREAM}/master..HEAD

.PHONY: lint-markdown
lint-markdown:
	markdownlint-cli2 --config=.config/markdownlint-cli2.yaml --strict-config

.PHONY: format
format: ensure-golangci-lint
	./bin/golangci-lint fmt
	find . -name \*.txtar | xargs ${GO} tool lint-txtar -w

.PHONY: format-yaml
format-yaml:
	find . -name \*.yaml -o -name \*.yml | xargs uv run task format-yaml

.PHONY: create-syso
create-syso:
	${GO} tool execute-template -output ./versioninfo.json ./assets/templates/versioninfo.json.tmpl
	${GO} tool goversioninfo -platform-specific

.PHONY: ensure-tools
ensure-tools: \
	ensure-golangci-lint \
	ensure-goreleaser \
	ensure-syft

.PHONY: ensure-golangci-lint
ensure-golangci-lint:
	if [ ! -x bin/golangci-lint ] || ( ./bin/golangci-lint version | grep -Fqv "version ${GOLANGCI_LINT_VERSION}" ) ; then \
		curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- v${GOLANGCI_LINT_VERSION} ; \
	fi

.PHONY: ensure-goreleaser
ensure-goreleaser:
	if [ ! -x bin/goreleaser ] || ( ./bin/goreleaser --version | grep -Fqv "${GORELEASER_VERSION}" ) ; then \
		GOBIN=$(shell pwd)/bin ${GO} install "github.com/goreleaser/goreleaser/v2@v${GORELEASER_VERSION}" ; \
	fi

.PHONY: ensure-syft
ensure-syft:
	if [ ! -x bin/syft ] || ( ./bin/syft --version | grep -Fqv "${SYFT_VERSION}" ) ; then \
		curl -fsLS https://github.com/anchore/syft/releases/download/v${SYFT_VERSION}/syft_${SYFT_VERSION}_$(shell ${GO} env GOOS)_$(shell ${GO} env GOARCH).tar.gz | tar -C bin -xzf - syft ; \
	fi

.PHONY: generate
generate:
	CHEZMOIDEV=ignoreflags=1,ignorehelp=1 ${GO} generate

.PHONY: release
release: ensure-goreleaser
	./bin/goreleaser release \
		--clean \
		${GORELEASER_FLAGS}

.PHONY: shellcheck
shellcheck:
	find . -type f -name \*.sh | xargs shellcheck

.PHONY: test-release
test-release: ensure-goreleaser
	./bin/goreleaser release \
		--clean \
		--skip=chocolatey,sign \
		--snapshot \
		${GORELEASER_FLAGS}

# FIXME parse go.mod instead of hardcoding tools here
.PHONY: update-go-tools
update-go-tools:
	go get \
		github.com/editorconfig-checker/editorconfig-checker/v3@latest \
		github.com/google/capslock@latest \
		github.com/josephspurrier/goversioninfo@latest \
		github.com/rhysd/actionlint@latest \
		github.com/twpayne/find-typos@latest \
		github.com/twpayne/go-jsonstruct/v3@latest


================================================
FILE: README.md
================================================
# ![chezmoi logo](assets/images/logo-144px.svg) chezmoi

[![GitHub Release](https://img.shields.io/github/release/twpayne/chezmoi.svg)](https://github.com/twpayne/chezmoi/releases)

Manage your dotfiles across multiple diverse machines, securely.

chezmoi's documentation is at [chezmoi.io](https://chezmoi.io/).

If you're contributing to chezmoi, then please read the [developer guide](https://www.chezmoi.io/developer-guide/).

## Contributors

![Contributor avatars](https://contrib.rocks/image?repo=twpayne/chezmoi&max=1024)

## License

MIT


================================================
FILE: assets/chezmoi.io/.gitignore
================================================
/docs/index.md
/docs/install.md
/docs/links/articles.md
/docs/links/podcasts.md
/docs/links/videos.md
/docs/reference/configuration-file/variables.md
/docs/reference/release-history.md
/site


================================================
FILE: assets/chezmoi.io/CNAME
================================================
www.chezmoi.io


================================================
FILE: assets/chezmoi.io/docs/chezmoi/index.html
================================================
<!DOCTYPE html>
<html>
    <head>
        <meta name="go-import" content="chezmoi.io/chezmoi git https://github.com/twpayne/chezmoi.git">
        <meta http-equiv="refresh" content="0; url=https://github.com/twpayne/chezmoi">
    </head>
</html>


================================================
FILE: assets/chezmoi.io/docs/comparison-table.md
================================================
# Comparison table

|                                        | [chezmoi][chezmoi] | [dotbot][dotbot]  | [rcm][rcm]        | [vcsh][vcsh]             | [yadm][yadm]                 | [bare git][bare git] |
| -------------------------------------- | ------------------ | ----------------- | ----------------- | ------------------------ | ---------------------------- | -------------------- |
| Distribution                           | Single binary      | Python package    | Multiple files    | Single script or package | Single script                | -                    |
| Install method                         | Many               | git submodule     | Many              | Many                     | Many                         | Manual               |
| Non-root install on bare system        | ✅                 | ⁉️                | ✅                | ✅                       | ✅                           | ✅                   |
| Windows support                        | ✅                 | ✅                | ❌                | ❌                       | ✅                           | ✅                   |
| Bootstrap requirements                 | None               | Python, git       | Bash              | sh, git                  | git                          | git                  |
| Source repos                           | Single             | Single            | Multiple          | Multiple                 | Single                       | Single               |
| dotfiles are...                        | Files              | Symlinks          | Symlinks          | Files                    | Files                        | Files                |
| Config file                            | Optional           | Required          | Optional          | None                     | Optional                     | Optional             |
| Private files                          | ✅                 | ❌                | ❌                | ❌                       | ✅                           | ❌                   |
| Show differences without applying      | ✅                 | ❌                | ❌                | ✅                       | ✅                           | ✅                   |
| Whole file encryption                  | ✅                 | ❌                | ❌                | ❌                       | ✅                           | ❌                   |
| Password manager integration           | ✅                 | ❌                | ❌                | ❌                       | ❌                           | ❌                   |
| Machine-to-machine file differences    | Templates          | Alternative files | Alternative files | Branches                 | Alternative files, templates | ⁉️                   |
| Custom variables in templates          | ✅                 | ❌                | ❌                | ❌                       | ❌                           | ❌                   |
| Executable files                       | ✅                 | ✅                | ✅                | ✅                       | ✅                           | ✅                   |
| File creation with initial contents    | ✅                 | ❌                | ❌                | ✅                       | ❌                           | ❌                   |
| Externals                              | ✅                 | ❌                | ❌                | ❌                       | ❌                           | ❌                   |
| Manage partial files                   | ✅                 | ❌                | ❌                | ⁉️                       | ✅                           | ⁉️                   |
| File removal                           | ✅                 | ❌                | ❌                | ✅                       | ✅                           | ❌                   |
| Directory creation                     | ✅                 | ✅                | ✅                | ✅                       | ✅                           | ✅                   |
| Run scripts                            | ✅                 | ✅                | ✅                | ✅                       | ✅                           | ❌                   |
| Run once scripts                       | ✅                 | ❌                | ❌                | ✅                       | ✅                           | ❌                   |
| Machine-to-machine symlink differences | ✅                 | ❌                | ❌                | ⁉️                       | ✅                           | ⁉️                   |
| Shell completion                       | ✅                 | ❌                | ❌                | ✅                       | ✅                           | ✅                   |
| Archive import                         | ✅                 | ❌                | ❌                | ✅                       | ❌                           | ✅                   |
| Archive export                         | ✅                 | ❌                | ❌                | ✅                       | ❌                           | ✅                   |
| Implementation language                | Go                 | Python            | Bash              | POSIX Shell              | Bash                         | C                    |

✅ Supported, ⁉️ Possible with significant manual effort, ❌ Not supported

For more comparisons, visit [dotfiles.github.io/utilities][utils].

[chezmoi]: https://chezmoi.io/
[dotbot]: https://github.com/anishathalye/dotbot
[rcm]: https://github.com/thoughtbot/rcm
[vcsh]: https://github.com/RichiH/vcsh
[yadm]: https://yadm.io/
[bare git]: https://www.atlassian.com/git/tutorials/dotfiles "bare git"
[utils]: https://dotfiles.github.io/utilities/


================================================
FILE: assets/chezmoi.io/docs/developer-guide/architecture.md
================================================
# Architecture

This document gives a high-level overview of chezmoi's source code for anyone
interested in contributing to chezmoi.

You can generate Go documentation for chezmoi's source code with `go doc`, for
example:

```sh
go doc -all -u github.com/twpayne/chezmoi/internal/chezmoi
```

You can also [browse chezmoi's generated documentation online][go-docs].

## Directory structure

The important directories in chezmoi are:

| Directory                        | Contents                                                                                                                                            |
| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `assets/chezmoi.io/docs/`        | The documentation single source of truth. Help text, examples, and the [chezmoi.io][website] website are generated from the files in this directory |
| `internal/chezmoi/`              | chezmoi's core functionality                                                                                                                        |
| `internal/cmd/`                  | Code for the `chezmoi` command                                                                                                                      |
| `internal/cmd/testdata/scripts/` | High-level tests of chezmoi's commands using [`testscript`][testscript]                                                                             |

## Key concepts

As described in the [reference manual][ref], chezmoi evaluates the source state
to compute a target state for the destination directory (typically your home
directory). It then compares the target state to the actual state of the
destination directory and performs any changes necessary to update the
destination directory to match the target state. These concepts are represented
directly in chezmoi's code.

chezmoi uses the generic term *entry* to describe something that it manages.
Entries can be files, directories, symlinks, scripts, amongst other things.

## `internal/chezmoi/` directory

All of chezmoi's interaction with the operating system is abstracted through the
`System` interface. A `System` includes functionality to read and write files
and directories and execute commands. chezmoi makes a distinction between
idempotent commands that can be run multiple times without modifying the
underlying system and arbitrary commands that may modify the underlying system.

The real underlying system is implemented via a `RealSystem` struct. Other
`System`s are composed on top of this to provide further functionality. For
example, the `--debug` flag is implemented by wrapping the `RealSystem` with a
`DebugSystem` that logs all calls to the underlying `RealSystem`. `--dry-run` is
implemented by wrapping the `RealSystem` with a `DryRunSystem` that allows reads
to pass through but silently discards all writes.

The `SourceState` struct represents a source state, including reading a source
state from the source directory, executing templates, applying the source state
(i.e. updating a `System` to match the desired source state), and adding more
entries to the source state.

Entries in the source state are abstracted by the `SourceStateEntry` interface
implemented by the `SourceStateFile` and `SourceStateDir` structs, as the source
state only consists of regular files and directories.

A `SourceStateFile` includes a `FileAttr` struct describing the attributes
parsed from its file name. Similarly, a `SourceStateDir` includes a `DirAttr`
struct describing the directory attributes parsed from a directory name.

`SourceStateEntry`s can compute their target state entries, i.e. what the
equivalent entry should be in the target state, abstracted by the
`TargetStateEntry` interface.

Actual target state entries include `TargetStateFile` structs, representing a
file with contents and permissions, `TargetStateDir` structs, representing a
directory, `TargetStateSymlink` for symlinks, `TargetStateRemove` for entries
that should be removed, and `TargetStateScript` for scripts that should be run.

The actual state of an entry in the target state is abstracted via the
`ActualStateEntry` interface, with `ActualStateAbsent`, `ActualStateDir`,
`ActualStateFile`, `ActualStateSymlink` structs implementing this interface.

Finally, an `EntryState` struct represents a serialization of an
`ActualEntryState` for storage in and retrieval from chezmoi's persistent state.
It stores a SHA256 of the entry's contents, rather than the full contents, to
avoid storing secrets in the persistent state.

With these concepts, chezmoi's apply command is effectively:

1. Read the source state from the source directory.

2. For each entry in the source state (`SourceStateEntry`), compute its
   `TargetStateEntry` and read its actual state in the destination state
   (`ActualStateEntry`).

3. If the `ActualStateEntry` is not equivalent to the `TargetStateEntry` then
   apply the minimal set of changes to the `ActualStateEntry` so that they are
   equivalent.

Furthermore, chezmoi stores the `EntryState` of each entry that it writes in its
persistent state. chezmoi can then detect if a third party has updated a target
since chezmoi last wrote it by comparing the actual state entry in the target
state with the entry state in the persistent state.

## `internal/cmd/` directory

`internal/cmd/*cmd.go` files contain the code for each individual command.
`internal/cmd/*templatefuncs.go` files contain the template functions.

Commands are defined as methods on the `Config` struct. The `Config` struct is
large, containing all configuration values read from the config file, command
line arguments, and computed and cached values.

The `Config.persistentPreRunRootE` and `Config.persistentPostRunRootE` methods
set up and tear down state for individual commands based on the command's
`Annotations` field, which defines how the command interacts with the file
system and persistent state.

## Path handling

chezmoi uses separate types for absolute paths (`AbsPath`) and relative paths
(`RelPath`) to avoid errors where paths are combined (e.g. joining two absolute
paths is an error). The type `SourceRelPath` is a relative path within the
source directory and handles file and directory attributes.

Internally, chezmoi normalizes all paths to use forward slashes with an optional
upper-cased Windows volume so they can be compared with string comparisons.
Paths read from the user may include tilde (`~`) to represent the user's home
directory, use forward or backward slashes, and are treated as external paths
(`ExtPath`). These are normalized to absolute paths. chezmoi is case-sensitive
internally and makes no attempt to handle case-insensitive or case-preserving
file systems.

## Persistent state

Persistent state is treated as a two-level key-value store with the
pseudo-structure `map[Bucket]map[Key]Value`, where `Bucket`, `Key`, and `Value`
are all `[]byte`s. The `PersistentState` interface defines interaction with
them. Sometimes temporary persistent states are used. For example, in dry run
mode (`--dry-run`) the actual persistent state is copied into a temporary
persistent state in memory which remembers writes but does not persist them to
disk.

## Encryption

Encryption tools are abstracted by the `Encryption` interface that contains
methods of encrypting and decrypting files and `[]byte`s. Implementations are
the `AGEEncryption` and `GPGEncryption` structs. A `DebugEncryption` struct
wraps an `Encryption` interface and logs the methods called.

## `run_once_` and `run_onchange_` scripts

The execution of a `run_once_` script is recorded by storing the SHA256 of its
contents in the `scriptState` bucket in the persistent state. On future
invocations the script is only run if no matching contents SHA256 is found in
the persistent state.

The execution of a `run_onchange_` script is recorded by storing its target name
in the `entryState` bucket along with its contents SHA256 sum. On future
invocations the script is only run if its contents SHA256 sum has changed, and
its contents SHA256 sum is then updated in the persistent state.

## Testing

chezmoi has a mix of unit, integration, and end-to-end tests. Unit and
integration tests use the [`github.com/alecthomas/assert/v2`][assert] framework.
End-to-end tests use [`github.com/rogpeppe/go-internal/testscript`][testscript]
with the test scripts themselves in
`internal/cmd/testdata/scripts/$TEST_NAME.txtar`.

You can run individual end-to-end tests with

```sh
go test ./internal/cmd -run=TestScript/$TEST_NAME
```

Tests should, if at all possible, run unmodified on all operating systems tested
in CI (Linux, macOS, Windows, and FreeBSD). Windows will sometimes need special
handling due to its path separator and lack of POSIX-style file permissions.

[go-docs]: https://pkg.go.dev/github.com/twpayne/chezmoi
[website]: https://chezmoi.io
[testscript]: https://pkg.go.dev/github.com/rogpeppe/go-internal/testscript
[ref]: /reference/concepts.md
[assert]: https://pkg.go.dev/github.com/alecthomas/assert


================================================
FILE: assets/chezmoi.io/docs/developer-guide/building-on-top-of-chezmoi.md
================================================
# Building on top of chezmoi

chezmoi is designed with UNIX-style composability in mind, and the command line
tool is semantically versioned. Building on top of chezmoi should primarily be
done by executing the `chezmoi` binary with arguments and the standard input and
output configured appropriately. The `chezmoi dump` and `chezmoi state` commands
allows the inspection of chezmoi's internal state.


================================================
FILE: assets/chezmoi.io/docs/developer-guide/contributing-changes.md
================================================
# Contributing changes

!!! warning

    chezmoi has a strict zero-tolerance policy on LLM contributions. If you use
    an LLM (Large Language Model, like ChatGPT, Claude, Gemini, GitHub Copilot,
    or Llama) to make any kind of contribution then you will immediately be
    banned without recourse. See [`CODE_OF_CONDUCT.md`][coc] for more
    information.

Bug reports, bug fixes, and documentation improvements are always welcome.
Please [open an issue][issue] or [create a pull request][pr] with your report,
fix, or improvement.

If you want to make a more significant change, please first
[open an issue][issue] to discuss the change that you want to make. Dave Cheney
gives a [good rationale][rationale] as to why this is important.

All changes are made via pull requests. In your pull request, please make sure
that:

* All existing tests pass. You can ensure this by running `make test`.

* There are appropriate additional tests that demonstrate that your PR works as
  intended.

* The documentation is updated, if necessary. For new features you should add an
  entry in `assets/chezmoi.io/docs/user-guide/` and a complete description in
  `assets/chezmoi.io/docs/reference/`. See the [website developer guide][website]
  for instructions on how to build and view a local version of the documentation.
  By default, chezmoi will panic if a flag is undocumented or a long help is
  missing for a command. You can disable this panic during development by
  setting the environment variable `CHEZMOIDEV` to `ignoreflags=1,ignorehelp=1`.
  Once you have documented the command and its flags, run `make generate` to
  generate the embedded documentation.

* All generated files are up to date. You can ensure this by running `make
  generate` and including any modified files in your commit.

* The code is correctly formatted. You can ensure this by running `make format`.

* The code passes [`golangci-lint`][golangci-lint]. You can ensure this by
  running `make lint`.

* The commit messages adhere to the [conventional commits specification][commits],
  with the following additional requirements:

      * The first character of the commit message is uppercase, e.g:

          ```text
          chore: Fix typo in test
          ```

        The purpose of this is to maintain consistency in chezmoi's release
        notes, which are generated directly from the commit messages.

      * The commits do not have scopes (e.g. `chore(scope): Message` is invalid).

    The following criteria can be used to determine the commit type:

      * `fix`: bug fixes in chezmoi code
      * `feat`: extending an existing feature or adding a new feature
      * `docs`: adding to or updating the documentation
      * `chore`: small changes, such as fixing a typo, correcting grammar
        (including in documentation), or anything not covered by the above

    Examples can be found in the [commit history][history].

* Commits are logically separate, with no merge or "fixup" commits.

* The branch applies cleanly to `master`.

[issue]: https://github.com/twpayne/chezmoi/issues/new/choose
[pr]: https://help.github.com/en/articles/creating-a-pull-request
[rationale]: https://dave.cheney.net/2019/02/18/talk-then-code
[golangci-lint]: https://github.com/golangci/golangci-lint
[commits]: https://www.conventionalcommits.org/en/v1.0.0/
[history]: https://github.com/twpayne/chezmoi/commits/master/
[website]: /developer-guide/website.md
[coc]: https://github.com/twpayne/chezmoi/blob/master/.github/CODE_OF_CONDUCT.md


================================================
FILE: assets/chezmoi.io/docs/developer-guide/index.md
================================================
# Developer guide

!!! warning

    If you use an LLM (Large Language Model, like ChatGPT, Claude, Gemini,
    GitHub Copilot, or Llama) to make any kind of contribution then you will
    immediately be banned without recourse. See [`CODE_OF_CONDUCT.md`][coc]
    for more information.

chezmoi is written in [Go][go] and development happens on [GitHub][github].
chezmoi is a standard Go project, using standard Go tooling. chezmoi requires
Go 1.25 or later.

Checkout chezmoi:

```sh
git clone https://github.com/twpayne/chezmoi.git
cd chezmoi
```

Build chezmoi:

```sh
go build
```

Run all tests:

```sh
go test ./...
```

chezmoi's tests include integration tests with other software. If the other
software is not found in `$PATH` the tests will be skipped. Running the full set
of tests requires `age`, `base64`, `bash`, `bzip2`, `git`, `gpg`, `gzip`,
`perl`, `python3`, `rage`, `ruby`, `sed`, `sha256sum`, `tr`, `true`, `unzip`,
`xz`, `zip`, and `zstd`.

Run chezmoi:

```sh
go tool chezmoi
```

Run a set of smoke tests, including cross-compilation, tests, and linting:

```sh
make smoke-test
```

Test building chezmoi for all architectures:

```sh
make test-release
```

!!! hint

    If you use `fish` as your primary shell, you may get warnings from Fish
    during tests:

    ```text
    error: can not save history
    warning-path: Unable to locate data directory derived from $HOME: '/home/user/.local/share/fish'.
    warning-path: The error was 'Operation not supported'.
    warning-path: Please set $HOME to a directory where you have write access.
    ```

    These can be avoided with by running tests with `SHELL=bash` or `SHELL=zsh`:

    ```sh
    SHELL=bash make test
    SHELL=zsh make smoke-test
    SHELL=bash go test ./...
    ```

[coc]: https://github.com/twpayne/chezmoi/blob/master/.github/CODE_OF_CONDUCT.md
[go]: https://golang.org
[github]: https://github.com


================================================
FILE: assets/chezmoi.io/docs/developer-guide/install-script.md
================================================
# Install script

chezmoi generates the [install script][install] from a single source of truth.
You must run

```sh
make generate
```

if your change includes any of the following:

* Modifications to the install script template.

* Additions or modifications to the list of supported operating systems and
  architectures.

chezmoi's continuous integration verifies that all generated files are up to
date. Changes to generated files should be included in the commit that modifies
the source of truth.

[install]: https://github.com/twpayne/chezmoi/blob/master/assets/scripts/install.sh


================================================
FILE: assets/chezmoi.io/docs/developer-guide/packaging.md
================================================
# Packaging

If you're packaging chezmoi for an operating system or distribution:

chezmoi has no build dependencies other than the standard Go toolchain.

chezmoi has no runtime dependencies, but is usually used with `git`, so many
packagers choose to make `git` an install dependency or recommended package.

Please set the version number, git commit, and build time in the binary. This
greatly assists debugging when end users report problems or ask for help. You
can do this by passing the following flags to `go build`:

```text
-ldflags "-X main.version=$VERSION
          -X main.commit=$COMMIT
          -X main.date=$DATE
          -X main.builtBy=$BUILT_BY"
```

`$VERSION` should be the chezmoi version, e.g. `1.7.3`. Any `v` prefix is
optional and will be stripped, so you can pass the git tag in directly.

!!! hint

    The command `git describe --abbrev=0 --tags` will return a suitable value
    for `$VERSION`.

`$COMMIT` should be the full git commit hash at which chezmoi is built, e.g.
`4d678ce6850c9d81c7ab2fe0d8f20c1547688b91`.

!!! hint

    The `internal/cmds/generate-commit/main.go` script will return a suitable value
    for `$COMMIT`.

    You can run it with `go tool generate-commit`.

!!! hint

    The source archive contains a file called `COMMIT` containing the commit
    hash.

`$DATE` should be the date of the build as a UNIX timestamp or in RFC3339
format.

!!! hint

    The command `git show -s --format=%ct HEAD` returns the UNIX timestamp of
    the last commit, e.g. `1636668628`.

    The command `date -u +%Y-%m-%dT%H:%M:%SZ` returns the current time in
    RFC3339 format, e.g. `2019-11-23T18:29:25Z`.

`$BUILT_BY` should be a string indicating what system was used to build the
binary. Typically it should be the name of your packaging system, e.g.
`homebrew`.

Please enable cgo, if possible. chezmoi can be built and run without cgo, but
the `.chezmoi.username` and `.chezmoi.group` template variables may not be set
correctly on some systems.

chezmoi includes an `upgrade` command which attempts to self-upgrade. You can
remove this command completely by building chezmoi with the `noupgrade` build
tag.

chezmoi includes shell completions in the `completions` directory. Please
include these in the package and install them in the shell-appropriate
directory, if possible.

If the instructions for installing chezmoi in chezmoi's [install guide][guide]
are absent or incorrect, please open an issue or submit a PR to correct them.

[guide]: /install.md


================================================
FILE: assets/chezmoi.io/docs/developer-guide/releases.md
================================================
# Releases

Releases are managed with [`goreleaser`][goreleaser].

## Testing

To build a test release, without publishing, (Ubuntu Linux only) first ensure
that the `musl-tools` and `snapcraft` packages are installed:

```sh
sudo apt-get install musl-tools snapcraft
```

Then run:

```sh
make test-release
```

## Publishing

Publish a new release by creating and pushing a tag, for example:

```sh
git tag v1.2.3
git push --tags
```

This triggers a [GitHub Action][gha] that builds and publishes archives,
packages, and snaps, creates a new [GitHub Release][release], and deploys the
[website][website].

### Snaps

Publishing [Snaps][snaps] requires a `SNAPCRAFT_STORE_CREDENTIALS` [repository
secret][secret].

Snapcraft store credentials periodically expire. This is visible in the release
GitHub Action reporting:

```
Run snapcraft whoami
Store operation failed:
- macaroon-authorization-required: The request is missing an Authorization header field containing a valid macaroon
```

Create new snapcraft store credentials by running:

```sh
snapcraft export-login --snaps=chezmoi --channels=stable,candidate,beta,edge --acls=package_upload -
```

This command requires a Ubuntu machine with snapcraft installed and a keyring,
which is typically not available over SSH connections. Login to a GNOME session
on a Ubuntu machine and run:

```sh
sudo snap install --classic snapcraft
snapcraft login
```

### Homebrew

[Homebrew][homebrew] automation will automatically detect new releases of chezmoi within
a few hours and open a pull request in
[github.com/Homebrew/homebrew-core][homebrew-core] to bump the version.

If needed, the pull request can be created with:

```sh
brew bump-formula-pr --tag=v1.2.3 chezmoi
```

### Scoop

chezmoi is in [Scoop][scoop]'s Main bucket. Scoop's automation will
automatically detect new releases within a few hours.

## Signing

chezmoi uses [GoReleaser's support for signing][signing] to sign the checksums
of its release assets with [cosign][cosign].

Details:

* The cosign private key was generated with cosign v1.12.1 on a private
  recently-installed Ubuntu 22.04.1 system with a single user and all available
  updates applied.

* The private key uses a long (more than 32 character) password generated
  locally by a password manager.

* The password-protected private key is stored in chezmoi's public GitHub repo.

* The private key's password is stored as a [GitHub Actions secret][gha-secret]
  and only available to the `release` step of `release` job of the `main`
  workflow.

* The cosign public key is included in the release assets and also uploaded to
  [`https://chezmoi.io/cosign.pub`][pubkey]. Since
  [`https://chezmoi.io`][website] is served by [GitHub pages][pages], it
  probably has equivalent security to [chezmoi's GitHub Releases page][release],
  which is also managed by GitHub.

[goreleaser]: https://goreleaser.com/
[gha]: https://github.com/twpayne/chezmoi/actions
[release]: https://github.com/twpayne/chezmoi/releases
[website]: https://chezmoi.io
[snaps]: https://snapcraft.io/
[secret]: https://github.com/twpayne/chezmoi/settings/secrets/actions
[homebrew]: https://brew.sh/
[homebrew-core]: https://github.com/Homebrew/homebrew-core
[scoop]: https://scoop.sh/
[signing]: https://goreleaser.com/customization/sign/
[cosign]: https://github.com/sigstore/cosign
[gha-secret]: https://docs.github.com/en/actions/security-guides/encrypted-secrets
[pubkey]: https://chezmoi.io/cosign.pub
[pages]: https://pages.github.com/


================================================
FILE: assets/chezmoi.io/docs/developer-guide/security.md
================================================
# Security

## Supported versions

Only the most recent version of chezmoi is supported with security updates.

## Virus scanner false positives

Virus scanning software, especially on Windows machines, occasionally report
viruses or trojans in the chezmoi binary. This is almost certainly a false
positive.

For more information see [Why does my virus-scanning software think my Go
distribution or compiled binary is infected?][false] in
the Go FAQ.

## Reporting a vulnerability

Please report vulnerabilities by [opening a GitHub issue][issue] or sending an
email to [`twpayne+chezmoi-security@gmail.com`][email].

[false]: https://go.dev/doc/faq#virus
[issue]: https://github.com/twpayne/chezmoi/issues/new/choose
[email]: mailto:twpayne%2Bchezmoi-security@gmail.com


================================================
FILE: assets/chezmoi.io/docs/developer-guide/testing.md
================================================
# Testing

chezmoi uses multiple levels of testing:

1. Unit testing, using [`testing`][testing],  and
   [`github.com/alecthomas/assert/v2`][assert], tests that functions and small
   components behave as expected for a wide range of inputs, especially edge
   cases. These are generally found in `internal/chezmoi/*_test.go`.

2. File system integration tests, using `testing` and
   [`github.com/twpayne/go-vfs/v5`][vfs], test chezmoi's effects on the file
   system. This include some tests in `internal/chezmoi/*_test.go`, and higher
   level command tests in `internal/cmd/*cmd_test.go`.

3. High-level integration tests using
   [`github.com/rogpeppe/go-internal/testscript`][testscript] are in
   `internal/cmd/testdata/scripts/*.txtar` and are run by
   `internal/cmd/main_test.go`.

4. Linux distribution and OS tests run the full test suite using Docker for
   different Linux distributions (in `assets/docker`) and Vagrant for different
   OSes (in `assets/vagrant`). Windows tests are run in GitHub Actions.

[testing]: https://pkg.go.dev/testing
[assert]: https://pkg.go.dev/github.com/alecthomas/assert/v2
[vfs]: https://pkg.go.dev/github.com/twpayne/go-vfs/v5
[testscript]: https://pkg.go.dev/github.com/rogpeppe/go-internal/testscript


================================================
FILE: assets/chezmoi.io/docs/developer-guide/using-make.md
================================================
# Building and installing with `make`

chezmoi can be built with GNU make, assuming you have the Go toolchain
installed.

Running `make` will build a `chezmoi` binary in the current directory for the
host OS and architecture. To embed version information in the binary and
control installation the following variables are available:

| Variable    | Example                | Purpose                                        |
| ----------- | ---------------------- | ---------------------------------------------- |
| `$VERSION`  | `v2.0.0`               | Set version                                    |
| `$COMMIT`   | `3895680a`...          | Set the git commit at which the code was built |
| `$DATE`     | `2019-11-23T18:29:25Z` | The time of the build                          |
| `$BUILT_BY` | `homebrew`             | The packaging system performing the build      |
| `$PREFIX`   | `/usr`                 | Installation prefix                            |
| `$DESTDIR`  | `install-root`         | Fake installation root                         |

Running `make install` will install the `chezmoi` binary in
`${DESTDIR}${PREFIX}/bin`.


================================================
FILE: assets/chezmoi.io/docs/developer-guide/website.md
================================================
# Website

The [website][website] is generated with [Material for MkDocs][material] from
the contents of the `assets/chezmoi.io/docs/` directory. It is hosted by
[GitHub pages][pages] from the [`gh-pages` branch][branch].

To build the website locally, Go 1.25 (or later) and [uv][uv] 0.5.0 (or later)
must be installed. Python 3.10 (or later) is required, but may be installed with
`uv`:

!!! note ""

    If Python 3.10 (or later) is not currently installed, install it with `uv`:

    ```sh
    uv python install 3.10
    ```

Install the dependencies (the `--frozen` is optional but recommended):

```sh
uv sync --frozen
```

Test the website locally by running:

```sh
uv run task serve-docs
```

and visiting [http://127.0.0.1:8000/][serve].

## Maintainers

The website is automatically deployed when new releases are created, but manual
deployments can be triggered by maintainers with appropriate access using:

```sh
uv run task deploy-docs
```

[website]: https://chezmoi.io
[material]: https://squidfunk.github.io/mkdocs-material/
[pages]: https://pages.github.com/
[branch]: https://github.com/twpayne/chezmoi/tree/gh-pages
[uv]: https://docs.astral.sh/uv/getting-started/installation/
[serve]: http://127.0.0.1:8000/


================================================
FILE: assets/chezmoi.io/docs/docs.go
================================================
// Package docs contains chezmoi's documentation.
package docs

import _ "embed"

// License is the license.
//
//go:embed license.md
var License string


================================================
FILE: assets/chezmoi.io/docs/extra/refresh_on_toggle_dark_light.js
================================================
// The light palette is always the first palette. In some cases, it is numbered
// as __palette_0 and in others it is numbered as __palette_1. The dark palette
// is numbered as __palette_1 or __palette_2, depending on the index used for
// the light palette.
var paletteSwitcherLight = document.getElementById("__palette_0");
var paletteSwitcherDark = document.getElementById("__palette_1");

if (!paletteSwitcherLight) {
  paletteSwitcherLight = paletteSwitcherDark;
  paletteSwitcherDark = document.getElementById("__palette_2");
}

paletteSwitcherLight.addEventListener("change", () => location.reload());
paletteSwitcherDark.addEventListener("change", () => location.reload());


================================================
FILE: assets/chezmoi.io/docs/hooks.py
================================================
from __future__ import annotations

import subprocess
from pathlib import Path, PurePosixPath

from mkdocs import utils
from mkdocs.config.defaults import MkDocsConfig
from mkdocs.structure.files import Files

non_website_paths = [
    'docs.go',
    'hooks.py',
    'reference/commands/commands.go',
    'reference/commands/commands_test.go',
]

templates = [
    'index.md',
    'install.md',
    'links/articles.md',
    'links/podcasts.md',
    'links/videos.md',
    'reference/configuration-file/variables.md',
    'reference/release-history.md',
]


def on_pre_build(config: MkDocsConfig, **kwargs) -> None:
    docs_dir = PurePosixPath(config.docs_dir)
    for src_path in templates:
        output_path = docs_dir.joinpath(src_path)
        template_path = output_path.parent / (output_path.name + '.tmpl')
        data_path = output_path.parent / (output_path.name + '.yaml')
        args = ['go', 'tool', 'execute-template']
        if Path(data_path).exists():
            args.extend(['-data', data_path])
        args.extend(['-output', output_path, template_path])
        subprocess.run(args, check=False)


def on_files(files: Files, config: MkDocsConfig, **kwargs) -> Files:
    # remove non-website files
    for src_path in non_website_paths:
        files.remove(files.get_file_from_path(src_path))

    # remove templates and data
    for src_path in templates:
        files.remove(files.get_file_from_path(src_path + '.tmpl'))
        data_path = src_path + '.yaml'
        if data_path in files:
            files.remove(files.get_file_from_path(data_path))

    return files


def on_post_build(config: MkDocsConfig, **kwargs) -> None:
    config_dir = Path(config.config_file_path).parent
    site_dir = config.site_dir

    # copy GitHub pages config
    utils.copy_file(Path(config_dir, 'CNAME'), Path(site_dir, 'CNAME'))

    # copy installation scripts
    utils.copy_file(Path(config_dir, '../scripts/install.sh'), Path(site_dir, 'get'))
    utils.copy_file(
        Path(config_dir, '../scripts/install-local-bin.sh'),
        Path(site_dir, 'getlb'),
    )
    utils.copy_file(
        Path(config_dir, '../scripts/install.ps1'),
        Path(site_dir, 'get.ps1'),
    )

    # copy cosign.pub
    utils.copy_file(
        Path(config_dir, '../cosign/cosign.pub'),
        Path(site_dir, 'cosign.pub'),
    )


================================================
FILE: assets/chezmoi.io/docs/index.md.tmpl
================================================
{{- $latestRelease := gitHubLatestRelease "twpayne/chezmoi" -}}
{{- $version := $latestRelease.Name | trimPrefix "v" -}}
# chezmoi

Manage your dotfiles across multiple diverse machines, securely.

The latest version of chezmoi is {{ $version }} ([release notes][notes],
[release history][history]).

## What does chezmoi do?

chezmoi helps you manage your personal configuration files (dotfiles, like
`~/.gitconfig`) across multiple machines.

chezmoi provides many features beyond symlinking or using a bare git repo
including:

* templates (to handle small differences between machines)
* password manager support (to store your secrets securely)
* importing files from archives (great for shell and editor plugins)
* full file encryption (using age, gpg, git-crypt, or transcrypt)
* running scripts (to handle everything else)

With chezmoi, pronounced /ʃeɪ mwa/ (shay-mwa) (listen [1][listen1] [2][listen2]
[3][listen3]), you can install chezmoi and your dotfiles from your GitHub
dotfiles repo on a new, empty machine with a single command:

```sh
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply $GITHUB_USERNAME
```

As well as the `curl | sh` installation, you can [install chezmoi with your
favorite package manager][install].

Updating your dotfiles on any machine is a single command:

```sh
chezmoi update
```

chezmoi runs on all popular operating systems, is distributed as a single
statically-linked binary with no dependencies, and does not require root access.

## How do I start with chezmoi?

[Install chezmoi][install] then read the [quick start guide][quick-start]. The
[user guide][guide] covers most common tasks. For a full description, consult
the [reference][reference].

## Should I use chezmoi?

See what other people think about chezmoi by reading [articles][articles],
listening to [podcasts][podcasts], and watching [videos][videos] about chezmoi.
Read how [chezmoi compares to other dotfile managers][compares]. Explore other
people's [dotfile repos that use chezmoi][repos].

## How do I get help using chezmoi?

chezmoi has extensive documentation. First, use the search bar at the top of
this page using a few, short, and specific keywords related to your problem.

chezmoi is an open source project with tens of thousands of users, so it is very
likely that someone else has already encountered and solved your problem. Search
[chezmoi's GitHub repo][github] for issues and discussions with keywords related
to your problem.

If your question is still unanswered, please [open a GitHub issue for
support][support].

## I like chezmoi. How do I say thanks?

Please [give chezmoi a star on GitHub][star].

[Share chezmoi][share] and, if you're happy to share your public dotfiles repo,
then [tag your repo with `chezmoi`][tag].

[Contributions are very welcome][contributions] and every [bug report, support
request, and feature request][issues] helps make chezmoi better. Thank you :)

chezmoi does not accept financial contributions. Instead, please make a donation
to a charity or cause of your choice.

[articles]: /links/articles.md
[compares]: /comparison-table.md
[contributions]: /developer-guide/contributing-changes.md
[github]: https://github.com/twpayne/chezmoi
[guide]: /user-guide/setup.md
[history]: /reference/release-history.md
[install]: /install.md
[issues]: https://github.com/twpayne/chezmoi/issues
[listen1]: /voice_30-04-2025_09-20-13.ogx
[listen2]: /voice_30-04-2025_09-20-48.ogx
[listen3]: /voice_30-04-2025_09-20-56.ogx
[notes]: {{ $latestRelease.HTMLURL }}
[podcasts]: /links/podcasts.md
[quick-start]: /quick-start.md
[reference]: /reference/index.md
[repos]: /links/dotfile-repos.md
[share]: /links/social-media.md
[star]: https://github.com/twpayne/chezmoi
[support]: https://github.com/twpayne/chezmoi/issues/new?assignees=&labels=support&projects=&template=01_support_request.md&title=.
[tag]: /links/dotfile-repos.md
[videos]: /links/videos.md


================================================
FILE: assets/chezmoi.io/docs/install.md.tmpl
================================================
{{- $latestRelease := gitHubLatestRelease "twpayne/chezmoi" -}}
{{- $version := $latestRelease.Name | trimPrefix "v" -}}
# Install

The latest version of chezmoi is {{ $version }} ([release notes][notes],
[release history][history]).

## One-line package install

Install chezmoi with your package manager with a single command:

=== "Linux"

    === "Alpine"

        ```sh
        apk add chezmoi
        ```

    === "Arch"

        ```sh
        pacman -S chezmoi
        ```

    === "Fedora"

        ```sh
        dnf install chezmoi
        ```

    === "NixOS"

        ```sh
        nix-env -i chezmoi
        ```

    === "openSUSE Tumbleweed"

        ```sh
        zypper install chezmoi
        ```

    === "RHEL (EPEL)"

        ```sh
        dnf install epel-release && dnf install chezmoi
        ```

    === "Termux"

        ```sh
        pkg install chezmoi
        ```

    === "Void"

        ```sh
        xbps-install -S chezmoi
        ```

=== "macOS"

    === "Homebrew"

        ```sh
        brew install chezmoi
        ```

    === "MacPorts"

        ```sh
        port install chezmoi
        ```

    === "Nix"

        ```sh
        nix-env -i chezmoi
        ```

=== "Windows"

    === "Chocolatey"

        ```batch
        choco install chezmoi
        ```

    === "Scoop"

        ```batch
        scoop install chezmoi
        ```

    === "Winget"

        ```batch
        winget install twpayne.chezmoi
        ```

=== "FreeBSD"

    ```sh
    pkg install chezmoi
    ```

=== "OpenIndiana"

    ```sh
    pkg install application/chezmoi
    ```

chezmoi is available in many cross-platform package managers:

=== "am"

    ```sh
    am -i chezmoi
    ```

=== "asdf"

    ```sh
    asdf plugin add chezmoi && asdf install chezmoi {{ $version }}
    ```

=== "mise"

    ```sh
    mise use --global chezmoi@{{ $version }}
    ```

=== "Homebrew"

    ```sh
    brew install chezmoi
    ```

=== "Nix"

    ```sh
    nix-env -i chezmoi
    ```

=== "snap"

    ```sh
    snap install chezmoi --classic
    ```

For more packages, see [chezmoi on repology.org][repology].

## One-line binary install

Install the correct binary for your operating system and architecture in `./bin`
with a single command:

=== "curl"

    ```sh
    sh -c "$(curl -fsLS get.chezmoi.io)"
    ```

=== "wget"

    ```sh
    sh -c "$(wget -qO- get.chezmoi.io)"
    ```

=== "PowerShell"

    ```powershell
    iex "&{$(irm 'https://get.chezmoi.io/ps1')}"
    ```

    To provide the script with arguments, place them at the end of the quote:

    ```powershell
    iex "&{$(irm 'https://get.chezmoi.io/ps1')} -b '~/bin'"
    ```

!!! hint

    If you already have a dotfiles repo using chezmoi on GitHub at
    `https://github.com/$GITHUB_USERNAME/dotfiles` then you can install
    chezmoi and your dotfiles with the single command:

    ```sh
    sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply $GITHUB_USERNAME
    ```

    Private GitHub repos require other [authentication methods][https-clone]:

    ```sh
    sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply git@github.com:$GITHUB_USERNAME/dotfiles.git
    ```

!!! hint

    If you want to install chezmoi in `./.local/bin` instead of `./bin` you can
    use `get.chezmoi.io/lb` or `chezmoi.io/getlb` instead.

!!! hint

    To install the chezmoi binary in a different directory, use the `-b` option,
    for example:

    ```sh
    sh -c "$(curl -fsLS get.chezmoi.io)" -- -b $HOME/.local/bin
    ```

## Download a pre-built Linux package

Download a package for your distribution and architecture.

=== "deb"
{{ 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" "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" "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
pre-built binary and shell completions.

=== "Linux"
{{ range $arch := list "amd64" "arm" "arm64" "i386" "loong64" "mips64" "mips64le" "ppc64" "ppc64le" "riscv64" "s390x" }}
    [`{{ $arch }}`](https://github.com/twpayne/chezmoi/releases/download/v{{ $version }}/chezmoi_{{ $version }}_linux_{{ $arch }}.tar.gz)
{{- end }}
    [`amd64` (glibc)](https://github.com/twpayne/chezmoi/releases/download/v{{ $version }}/chezmoi_{{ $version }}_linux-glibc_amd64.tar.gz)
    [`amd64` (musl)](https://github.com/twpayne/chezmoi/releases/download/v{{ $version }}/chezmoi_{{ $version }}_linux-musl_amd64.tar.gz)
    [`arm64` (Termux)](https://github.com/twpayne/chezmoi/releases/download/v{{ $version }}/chezmoi_{{ $version }}_android_arm64.tar.gz)

=== "macOS"
{{ range $arch := list "amd64" "arm64" }}
    [`{{ $arch }}`](https://github.com/twpayne/chezmoi/releases/download/v{{ $version }}/chezmoi_{{ $version }}_darwin_{{ $arch }}.tar.gz)
{{- end }}

=== "Windows"
{{ range $arch := list "amd64" "arm64" "i386" }}
    [`{{ $arch }}`](https://github.com/twpayne/chezmoi/releases/download/v{{ $version }}/chezmoi_{{ $version }}_windows_{{ $arch }}.zip)
{{- end }}

=== "FreeBSD"
{{ range $arch := list "amd64" "arm" "arm64" "i386" "riscv64" }}
    [`{{ $arch }}`](https://github.com/twpayne/chezmoi/releases/download/v{{ $version }}/chezmoi_{{ $version }}_freebsd_{{ $arch }}.tar.gz)
{{- end }}

=== "OpenBSD"
{{ range $arch := list "amd64" "arm" "arm64" "i386" "ppc64" "riscv64" }}
    [`{{ $arch }}`](https://github.com/twpayne/chezmoi/releases/download/v{{ $version }}/chezmoi_{{ $version }}_openbsd_{{ $arch }}.tar.gz)
{{- end }}

## Install from source

Download, build, and install chezmoi for your system with Go 1.25 or later:

```sh
git clone https://github.com/twpayne/chezmoi.git
cd chezmoi
make install-from-git-working-copy
```

## Verify your download

chezmoi's release process signs the SHA256 checksums of [all released
assets][release-assets] with [cosign][cosign].

To verify an asset that you have downloaded:

Download the [checksum
file](https://github.com/twpayne/chezmoi/releases/download/v{{ $version
}}/chezmoi_{{ $version }}_checksums.txt), [checksum file
signature](https://github.com/twpayne/chezmoi/releases/download/v{{ $version
}}/chezmoi_{{ $version }}_checksums.txt.sig), and [public signing
key](https://github.com/twpayne/chezmoi/releases/download/v{{ $version
}}/chezmoi_cosign.pub).

   ```sh
   curl --location --remote-name-all \
          https://github.com/twpayne/chezmoi/releases/download/v{{ $version }}/chezmoi_{{ $version }}_checksums.txt \
          https://github.com/twpayne/chezmoi/releases/download/v{{ $version }}/chezmoi_{{ $version }}_checksums.txt.sig \
          https://github.com/twpayne/chezmoi/releases/download/v{{ $version }}/chezmoi_cosign.pub
   ```

Verify the signature of the checksum file with cosign.

   ```sh
   cosign verify-blob --key=chezmoi_cosign.pub \
                        --signature=chezmoi_{{ $version }}_checksums.txt.sig \
                        chezmoi_{{ $version }}_checksums.txt
   ```

!!! important

    cosign should print `Verified OK`

Verify the that the SHA256 sum of your downloads matches the SHA256 sum in the
verified checksum file. All the downloaded files must be in the current
directory.

=== "Linux"

    ```sh
    sha256sum --check chezmoi_{{ $version }}_checksums.txt --ignore-missing
    ```

=== "macOS"

    ```sh
    shasum --algorithm 256 --check chezmoi_{{ $version }}_checksums.txt --ignore-missing
    ```

For more information on chezmoi's release signing process, see the [developer
documentation on chezmoi's releases][developer-release].

[history]: /reference/release-history.md
[notes]: {{ $latestRelease.HTMLURL }}
[repology]: https://repology.org/project/chezmoi/versions
[https-clone]: https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls
[release-assets]: https://github.com/twpayne/chezmoi/releases/tag/v{{ $version }}
[cosign]: https://github.com/SigStore/cosign
[developer-release]: /developer-guide/releases.md


================================================
FILE: assets/chezmoi.io/docs/license.md
================================================
# License

The MIT License (MIT)

Copyright (c) 2018 Tom Payne

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.


================================================
FILE: assets/chezmoi.io/docs/links/articles.md.tmpl
================================================
# Articles

!!! tip

    Recommended article: [Fedora Magazine: Take back your dotfiles with Chezmoi](https://fedoramagazine.org/take-back-your-dotfiles-with-chezmoi/)

| Date | Version | Language | Title |
| ---- | ------- | -------- | ----- |
{{- range reverse .articles }}
| {{ .date }} | {{ .version }} | {{ index . "lang" | default "EN" }} | [{{ .title }}]({{ .url }}) |
{{- end }}


================================================
FILE: assets/chezmoi.io/docs/links/articles.md.yaml
================================================
articles:
- date: '2019-01-10'
  version: 0.0.11
  title: 'Linux Fu: The kitchen sync'
  url: https://hackaday.com/2019/01/10/linux-fu-the-kitchen-sync/
- date: '2020-04-01'
  version: 1.7.17
  title: Managing dotfiles and secret with chezmoi
  url: https://blog.arkey.fr/2020/04/01/manage_dotfiles_with_chezmoi/
- date: '2020-04-03'
  version: 1.7.17
  title: 'Fedora Magazine: Take back your dotfiles with Chezmoi'
  url: https://fedoramagazine.org/take-back-your-dotfiles-with-chezmoi/
- date: '2020-04-17'
  version: 1.7.17
  lang: CN
  title: 用 Chezmoi 取回你的点文件
  url: https://blog.csdn.net/F8qG7f9YD02Pe/article/details/105548429
- date: '2020-04-16'
  version: 1.7.19
  lang: FR
  title: Chezmoi, visite guidée
  url: https://blog.wescale.fr/2020/04/16/chezmoi-visite-guidee/
- date: '2020-04-19'
  version: 1.7.19
  lang: FR
  title: 'Git & dotfiles : versionner ses fichiers de configuration'
  url: https://www.armandphilippot.com/dotfiles-git-fichiers-configuration/
- date: '2020-04-20'
  version: 1.8.0
  lang: FR
  title: Gestion des dotfiles et des secrets avec chezmoi
  url: https://blog.arkey.fr/2020/04/01/manage_dotfiles_with_chezmoi.fr/
- date: '2020-04-27'
  version: 1.8.0
  title: Managing my dotfiles with chezmoi
  url: http://blog.emilieschario.com/post/managing-my-dotfiles-with-chezmoi/
- date: '2020-06-15'
  version: 1.8.2
  title: Dotfiles management using chezmoi - How I Use Linux Desktop at Work Part5
  url: https://blog.benoitj.ca/2020-06-15-how-i-use-linux-desktop-at-work-part5-dotfiles/
- date: '2020-07-03'
  version: 1.8.3
  title: Feeling at home in a LXD container
  url: https://ubuntu.com/blog/feeling-at-home-in-a-lxd-container
- date: '2020-08-03'
  version: 1.8.3
  title: Automating a Linux in Windows Dev Setup
  url: https://matt.aimonetti.net/posts/2020-08-automating-a-linux-in-windows-dev-setup/
- date: '2020-08-09'
  version: 1.8.3
  title: Automating and testing dotfiles
  url: https://seds.nl/posts/automating-and-testing-dotfiles/
- date: '2020-08-13'
  version: 1.8.3
  title: Using BitWarden and Chezmoi to manage SSH keys
  url: https://www.jx0.uk/chezmoi/bitwarden/unix/ssh/2020/08/13/bitwarden-chezmoi-ssh-key.html
- date: '2020-10-03'
  version: 1.8.6
  title: Chezmoi Merging
  url: https://benoit.srht.site/2020-10-03-chezmoi-merging/
- date: '2020-10-05'
  version: 1.8.6
  title: Dotfiles with Chezmoi
  url: https://blog.lazkani.io/posts/backup/dotfiles-with-chezmoi/
- date: '2020-11-05'
  version: 1.8.8
  title: Using chezmoi to manage dotfiles
  url: https://pashinskikh.com/posts/chezmoi/
- date: '2020-11-06'
  version: 1.8.8
  title: Chezmoi – Securely Manage dotfiles across multiple machines
  url: https://computingforgeeks.com/chezmoi-manage-dotfiles-across-multiple-machines/
- date: '2021-01-12'
  version: 1.8.10
  title: Automating the Setup of a New Mac With All Your Apps, Preferences, and Development Tools
  url: https://www.moncefbelyamani.com/automating-the-setup-of-a-new-mac-with-all-your-apps-preferences-and-development-tools/
- date: '2021-01-29'
  version: 1.8.10
  lang: CN
  title: 用 Chezmoi 管理配置文件
  url: https://axionl.me/p/%E5%BD%92%E6%A1%A3-%E7%94%A8-chezmoi-%E7%AE%A1%E7%90%86%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/
- date: '2021-02-07'
  version: 1.8.10
  lang: JP
  title: chezmoi始めた
  url: https://joe-noh.hatenablog.com/entry/2021/02/07/215733
- date: '2021-02-17'
  version: 1.8.11
  lang: JP
  title: chezmoi で dotfiles を手軽に柔軟にセキュアに管理する
  url: https://zenn.dev/ryo_kawamata/articles/introduce-chezmoi
- date: '2021-04-01'
  version: 2.0.7
  title: ChezMoi
  url: https://johnmathews.is/chezmoi.html
- date: '2021-04-08'
  version: 2.0.9
  lang: FR
  title: Bienvenue chez moi
  url: https://blogduyax.madyanne.fr/2021/bienvenue-chez-moi/
- date: '2021-05-10'
  version: 2.0.11
  title: Development Environment (2021)
  url: https://ideas.offby1.net/posts/development-environment-2021.html
- date: '2021-05-12'
  version: 2.0.12
  title: 'My Dotfiles Story: A Journey to Chezmoi'
  url: https://www.mikekasberg.com/blog/2021/05/12/my-dotfiles-story.html
- date: '2021-05-14'
  version: 2.0.12
  title: A brief history of my dotfile management
  url: https://jonathanbartlett.co.uk/2021/05/14/a-brief-history-of-my-dotfiles.html
- date: '2021-07-15'
  version: 2.1.2
  lang: CN
  title: 使用Chezmoi管理配置文件
  url: https://marvinsblog.net/post/2021-07-15-chezmoi-intro/
- date: '2021-07-23'
  version: 2.1.2
  title: PBS 121 of X — Managing Dot Files and an Introduction to Chezmoi
  url: https://pbs.bartificer.net/pbs121
- date: '2021-08-04'
  version: 2.1.2
  lang: PT
  title: Como instalar o Chezmoi, um gerenciador de dotfiles, no Ubuntu, Linux Mint, Fedora, Debian
  url: https://sempreupdate.com.br/como-instalar-o-chezmoi-um-gerenciador-de-dotfiles-no-ubuntu-linux-mint-fedora-debian/
- date: '2021-08-08'
  version: 2.1.2
  title: PBS 122 of X — Managing Dot Files with Chezmoi
  url: https://pbs.bartificer.net/pbs122
- date: '2021-08-22'
  version: 2.1.2
  title: PBS 123 of X — Backing up and Syncing Dot Files with Chezmoi
  url: https://pbs.bartificer.net/pbs123
- date: '2021-09-04'
  version: 2.1.2
  title: PBS 124 of X — Chezmoi Templates
  url: https://pbs.bartificer.net/pbs124
- date: '2021-09-04'
  version: 2.2.0
  title: Configuration Management
  url: https://cj.rs/blog/my-setup/chezmoi/
- date: '2021-09-06'
  version: 2.2.0
  title: chezmoi dotfile management
  url: https://www.jacobbolda.com/chezmoi-dotfile-management
- date: '2021-09-14'
  version: 2.2.0
  title: Managing preference plists under Chezmoi
  url: https://zacwe.st/2021/09/14/managing-preference-plists-under-chezmoi/
- date: '2021-09-18'
  version: 2.1.2
  title: PBS 125 of X — Chezmoi on Multiple Computers
  url: https://pbs.bartificer.net/pbs125
- date: '2021-10-25'
  version: 2.7.3
  title: Share credentials across machines using chezmoi and bitwarden
  url: https://medium.com/@josemrivera/share-credentials-across-machines-using-chezmoi-and-bitwarden-4069dcb6e367
- date: '2021-10-26'
  version: 2.7.3
  lang: RU
  title: Синхронизация системных настроек
  url: https://habr.com/en/post/585578/
- date: '2021-11-26'
  version: 2.8.0
  title: Weekly Journal 47 - chezmoi, neovim
  url: https://scottbanwart.com/blog/2021/11/weekly-journal-47-chezmoi-neovim/
- date: '2021-12-01'
  version: 2.9.1
  title: Chezmoi 2
  url: https://johnmathews.is/chezmoi-2.html
- date: '2021-12-04'
  version: 2.9.2
  title: Advanced features of Chezmoi
  url: https://zerokspot.com/weblog/2021/12/04/advanced-chezmoi/
- date: '2021-12-13'
  version: 2.9.3
  title: Managing Dotfiles With Chezmoi
  url: https://budimanjojo.com/2021/12/13/managing-dotfiles-with-chezmoi/
- date: '2021-12-20'
  version: 2.9.3
  title: How chezmoi Implements Cross-Platform CI
  url: https://gopheradvent.com/calendar/2021/how-chezmoi-implements-cross-platform-ci/
- date: '2021-12-23'
  version: 2.9.3
  title: Use Chezmoi to guarantee idempotency of terminal
  url: https://www.wazaterm.com/blog/advent-calendar-2021/use-chezmoi-to-guarantee-idempotency-of-terminal
- date: '2022-01-12'
  version: 2.9.5
  lang: IT
  title: Come funzionano i miei Mac
  url: https://correntedebole.com/come-funzionano-i-miei-mac/
- date: '2022-01-26'
  version: 2.10.1
  lang: JP
  title: chezmoi で dotfiles を管理する
  url: https://blog.zoncoen.net/2022/01/26/chezmoi/
- date: '2022-02-01'
  version: 2.10.1
  lang: JP
  title: chezmoi で dotfiles を手軽に柔軟にセキュアに管理する
  url: https://zenn.dev/ryo_kawamata/articles/introduce-chezmoi
- date: '2022-02-02'
  version: 2.11.0
  lang: FR
  title: Controler ses dotfiles en environnement éphémère
  url: https://blog.wescale.fr/2022/02/02/controler-ses-dotfiles-en-environnement-ephemere-2/
- date: '2022-02-12'
  version: 2.11.2
  title: How To Manage Dotfiles With Chezmoi
  url: https://jerrynsh.com/how-to-manage-dotfiles-with-chezmoi/
- date: '2022-02-17'
  version: 2.12.0
  lang: ES
  title: Qué son y cómo gestionar archivos dotfiles con chezmoi
  url: https://picodotdev.github.io/blog-bitix/2022/02/que-son-y-como-gestionar-archivos-dotfiles-con-chezmoi/
- date: '2022-02-22'
  version: 2.12.1
  lang: JP
  title: chezmoi を使って VSCode devcontainer 対応 dotfiles を作る
  url: https://www.mizdra.net/entry/2022/02/22/022109
- date: '2022-03-03'
  version: 2.13.0
  title: 'Local Environment-as-Code: Is It Possible Yet?'
  url: https://thenewstack.io/local-environment-as-code-is-it-possible-yet/
- date: '2022-03-13'
  version: 2.14.0
  title: 'Tools I love: Chezmoi'
  url: https://messmore.org/post/chezmoi/
- date: '2022-04-25'
  version: 2.15.1
  title: Easily moving Linux installs
  url: https://christitus.com/chezmoi/
- date: '2022-05-16'
  version: 2.16.0
  title: Chezmoi for DotFiles
  url: https://www.spatacoli.com/blog/2022/05/chezmoi-for-dotfiles/
- date: '2022-06-02'
  version: 2.17.1
  title: 'Local Env as Code: Is it possible yet'
  url: https://www.cncf.io/blog/2022/06/02/local-env-as-code-is-it-possible-yet/
- date: '2022-06-11'
  version: 2.17.1
  lang: JP
  title: chezmoi で Linux と macOS 両方で使える dotfiles を作る
  url: https://www.docswell.com/s/iosiftakakura/K2EXM5-2022-06-11-chezmoi
- date: '2022-08-05'
  version: 2.20.0
  lang: CN
  title: 使用chezmoi管理dotfiles
  url: https://zhaohongxuan.github.io/2022/08/05/use-chezmoi-manage-dotfiles/
- date: '2022-08-11'
  version: 2.20.0
  title: Chezmoi - a very cool tool to manage your dotfiles
  url: https://wyssmann.com/blog/2022/08/chezmoi-a-very-cool-tool-to-manage-your-dotfiles/
- date: '2022-09-13'
  version: 2.22.1
  lang: IT
  title: 'Come installare Chezmoi: gestisci in modo sicuro i dotfile su più macchine'
  url: https://grayguide.net/it/come-installare-chezmoi-gestisci-in-modo-sicuro-i-dotfile-su-piu-macchine
- date: '2022-09-28'
  version: 2.24.0
  title: Shit Hot Dotfiles
  url: https://kolv.in/posts/dotfile-managment
- date: '2023-01-05'
  version: 2.29.1
  lang: JP
  title: 既存の dotfiles を chezmoi で管理する
  url: https://zenn.dev/johnmanjiro13/articles/d14825f4ef3184
- date: '2023-01-12'
  version: 2.29.1
  lang: JP
  title: Chezmoiでかんたんクロスプラットフォームdotfiles管理のススメ
  url: https://deflis.hatenablog.com/entry/hatena-advent-calendar-2022-chezmoi-dotfiles
- date: '2023-01-13'
  version: 2.29.1
  title: Making the most out of distrobox and toolbx
  url: https://www.ypsidanger.com/making-the-most-out-of-distrobox-and-toolbx/
- date: '2023-01-22'
  version: 2.29.3
  lang: JP
  title: dotfile manager の chezmoi に移行してみる
  url: https://blog.yamano.dev/posts/2023/01/chezmoi-setup/
- date: '2023-01-22'
  version: 2.29.3
  title: Managing dotfiles
  url: https://dnitza.com/post/managing-dotfiles
- date: '2023-02-26'
  version: 2.31.0
  title: Managing dotfiles with chezmoi
  url: https://moesgaard.dev/posts/2023-02-26-managing-dotfiles-with-chezmoi/
- date: '2023-03-21'
  version: 2.32.0
  lang: JP
  title: AWS CLI のプロファイルを chezmoi とBitwarden で管理する
  url: https://zenn.dev/nh8939/articles/8a6a4f5eb967a9
- date: '2023-03-17'
  version: 2.32.0
  title: Automating the Setup of a New Mac With All Your Apps, Preferences, and Development Tools
  url: https://www.moncefbelyamani.com/automating-the-setup-of-a-new-mac-with-all-your-apps-preferences-and-development-tools/
- date: '2023-03-25'
  version: 2.33.0
  lang: KR
  title: chezmoi, 세상 편리하게 dotfile 관리하기
  url: https://songkg7.github.io/posts/chezmoi-awesome-dotfile-manager/
- date: '2023-04-08'
  version: 2.33.1
  lang: KR
  title: chezmoi, 본격적으로 활용하기
  url: https://songkg7.github.io/posts/chezmoi-basic-settings/
- date: '2023-04-15'
  version: 2.33.1
  lang: JP
  title: dotfiles の管理に chezmoi を導入して fswatch で自動 apply できるようにしたg
  url: https://blog.mono0x.net/2023/04/15/chezmoi/
- date: '2023-04-26'
  version: 2.33.1
  title: Managing my /home directory
  url: https://aspatel.com/20230426180939/
- date: '2023-04-29'
  version: 2.33.1
  lang: JP
  title: chezmoi のテンプレート機能を使ってシェルの起動を高速化する
  url: https://blog.mono0x.net/2023/04/29/optimize-rcfiles-using-chezmoi/
- date: '2023-05-16'
  version: 2.33.6
  lang: JP
  title: chezmoi
  url: https://www.ebiyuu.com/dotfiles/chezmoi/
- date: '2023-06-14'
  version: 2.34.1
  lang: RU
  title: chezmoi
  url: https://principal-engineering.ru/posts/chezmoi/
- date: '2023-08-05'
  version: 2.36.1
  title: Dotfiles with chezmoi
  url: https://www.steveyackey.com/post/dotfiles-with-chezmoi/
- date: '2023-09-07'
  version: 2.39.1
  lang: JP
  title: 【chezmoi】dotfileのセキュアな値をdashlaneから参照できるようにする
  url: https://zenn.dev/hulk510/articles/chezmoi-dashlane
- date: '2023-09-13'
  version: 2.39.1
  lang: JP
  title: 複数OSに対応しているchezmoiを使ってdotfilesを効率的に管理する
  url: https://www.asobou.co.jp/blog/web/chezmoi
- date: '2023-10-29'
  version: 2.40.4
  lang: CN
  title: 用 chezmoi 管理 dotfiles
  url: https://thewang.net/blog/manage-dotfiles-with-chezmoi
- date: '2023-12-10'
  version: 2.42.2
  lang: JP
  title: chezmoi で dotfiles を管理するときに便利な機能についてまとめる
  url: https://zenn.dev/ganariya/articles/useful-features-of-chezmoi
- date: '2023-12-16'
  version: 2.42.3
  lang: JP
  title: chezmoi を使った dotfiles の管理方法
  url: https://zenn.dev/yukionodera/articles/how-to-manage-dotfiles
- date: '2023-12-17'
  version: 2.42.3
  lang: JP
  title: chezmoi を サブマシンにも導入する
  url: https://zenn.dev/yukionodera/articles/setup-second-machine
- date: '2023-12-18'
  version: 2.42.3
  lang: JP
  title: chezmoi 管理のdotfiles でマシン毎に設定を変えたい
  url: https://zenn.dev/yukionodera/articles/chezmoi-use-template
- date: '2023-12-23'
  version: 2.42.3
  lang: DE
  title: Lokale Kofigurationsdateien sicher mit chezmoi und Git synchronisieren
  url: https://www.heise.de/ratgeber/Lokale-Kofigurationsdateien-sicher-mit-chezmoi-und-Git-synchronisieren-9580741.html
- date: '2024-01-07'
  version: 2.43.0
  title: Chezmore Chezmoi
  url: https://www.grumpymetalguy.com/tech_stack/chezmore/
- date: '2024-02-25'
  version: 2.47.0
  title: Atuin and chezmoi are the dog's bollocks
  url: https://henry.catalinismith.com/2024/02/25/atuin-and-chezmoi-are-the-dogs-bollocks
- date: '2024-03-02'
  version: 2.47.0
  title: The Ultimate Dotfiles Management Tool
  url: https://medium.com/@bartelloni.guglielmo_39715/the-ultimate-dotfiles-management-tool-456177493974
- date: '2024-03-11'
  version: 2.47.1
  lang: CN
  title: Chezmoi:優雅管理Linux的dotfile,使用Git儲存庫備份,類似GNU Stow
  url: https://ivonblog.com/posts/chezmoi-manage-dotfiles/
- date: '2024-03-23'
  version: 2.47.2
  lang: CN
  title: 使用 chezmoi & vscode, 管理你的 dotfiles
  url: https://shansan.top/2024/03/23/using-chezmoi-to-manage-dotfiles/
- date: '2024-03-23'
  version: 2.47.2
  title: A tour around chezmoi
  url: https://www.rousette.org.uk/archives/a-tour-around-chezmoi/
- date: '2024-03-25'
  version: 2.47.2
  title: Whatever happened to dotfiles?
  url: https://ryan0x44.substack.com/p/whatever-happened-to-dotfiles
- date: '2024-04-24'
  version: 2.47.4
  title: 'Chezmoi: Manage Your Dotfiles Across Multiple Linux Systems'
  url: https://linuxtldr.com/installing-chezmoi/
- date: '2024-04-27'
  version: 2.48.0
  lang: CN
  title: 使用 chezmoi & vscode, 管理你的 dotfiles
  url: https://juejin.cn/post/7362028633425608754
- date: '2024-05-01'
  version: 2.48.0
  lang: TH
  title: จัดการ dotfiles ด้วย chezmoi
  url: https://www.anuwong.com/blog/manage-dotfiles-with-chezmoi/
- date: '2024-05-27'
  version: 2.48.1
  title: Managing Dotfiles with Chezmoi
  url: https://1729.org.uk/posts/managing-dotfiles-with-chezmoi/
- date: '2024-06-26'
  version: 2.49.1
  title: Automate Your Dotfiles with Chezmoi
  url: https://learn.typecraft.dev/tutorial/our-place-chezmoi/
- date: '2024-07-28'
  version: 2.51.0
  title: Development Environment Setup with Chezmoi
  url: https://danielmschmidt.de/posts/dev-env-setup-with-chezmoi/
- date: '2024-07-31'
  version: 2.51.0
  title: Managing dotfiles with chezmoi
  url: https://wqplease.com/p/managing-dotfiles-with-chezmoi
- date: '2024-08-30'
  version: 2.52.1
  lang: JP
  title: dotfiles管理をchezmoiに移行する
  url: https://nsakki55.hatenablog.com/entry/2024/08/30/125246
- date: '2024-09-08'
  version: 2.52.1
  title: Managing dotfiles with chezmoi
  url: https://stoddart.github.io/2024/09/08/managing-dotfiles-with-chezmoi.html
- date: '2024-09-09'
  version: 2.52.2
  title: Keeping your Dotfiles in Sync and your Secrets in Gopass
  url: https://blog.m5e.de/post/keeping-your-dotfiles-in-sync-and-your-secrets-in-gopass/
- date: '2024-09-15'
  version: 2.52.2
  title: Cross-Platform Dotfiles with Chezmoi, Nix, Brew, and Devpod
  url: https://medium.com/@alfor93/cross-platform-dotfiles-with-chezmoi-nix-brew-and-devpod-0fdb478e40ce
- date: '2024-01-07'
  version: 2.52.3
  title: How I manage Neovim configuration with Chezmoi
  url: https://www.lorenzobettini.it/2024/10/how-i-manage-neovim-configuration-with-chezmoi/
- date: '2024-11-07'
  version: 2.53.1
  title: 'dotfiles management: chezmoi'
  url: https://www.gkr.one/blg-20241107-chezmoi
- date: '2024-11-16'
  version: 2.54.0
  title: Swapping to Chezmoi
  url: https://jsnfwlr.com/blog/2024/11/16/swapping-to-chezmoi/
- date: '2024-11-19'
  version: 2.54.0
  lang: AR
  title: شيموا (chezmoi) ببساطة
  url: https://github.com/mohamedhany01/chezmoi-tutorial-arabic
- date: '2024-12-02'
  version: 2.55.0
  lang: JP
  title: chezmoiを使ったローカル環境爆速構築
  url: https://qiita.com/cb400sp2/items/c04ec9472455d9022532
- date: '2024-12-18'
  version: 2.56.0
  title: Exploring Tools For Managing Your Dotfiles
  url: https://gberga.medium.com/exploring-tools-for-managing-your-dotfiles-7f0a46305bde
- date: '2024-12-19'
  version: 2.56.0
  lang: JP
  title: chezmoiでdotfilesを管理する
  url: https://devops-blog.virtualtech.jp/entry/20241219/1734585262
- date: '2025-01-03'
  version: 2.57.0
  title: Frictionless Dotfile Management With Chezmoi
  url: https://marcusb.org/posts/2025/01/frictionless-dotfile-management-with-chezmoi/
- date: '2025-01-09'
  version: 2.57.0
  title: Using chezmoi to manage dotfiles
  url: https://kidoni.dev/using-chezmoi
- date: '2025-01-19'
  version: 2.58.0
  title: Managing dotfiles with chezmoi
  url: https://natelandau.com/managing-dotfiles-with-chezmoi/
- date: '2025-01-26'
  version: 2.58.0
  lang: JP
  title: chezmoi で macOS の user defaults も管理する
  url: https://pihero.hatenadiary.jp/entry/2025/01/26/130123
- date: '2025-02-02'
  version: 2.59.0
  title: My journey in managing dotfiles
  url: https://seds.nl/notes/my-journey-in-managing-dotfiles/
- date: '2025-02-19'
  version: 2.59.1
  lang: JP
  title: WSLとWindowsの設定ファイルを「chezmoi」を使って安全に管理しよう
  url: https://thinkit.co.jp/article/37943
- date: '2025-03-04'
  version: 2.60.0
  title: Tools, tools, tools
  url: https://peterbraden.co.uk/article/tools-tools-tools/
- date: '2025-04-03'
  version: 2.61.0
  title: Migrating From Nix and Home Manager to Homebrew and Chezmoi
  url: https://htdocs.dev/posts/migrating-from-nix-and-home-manager-to-homebrew-and-chezmoi/
- date: '2025-04-06'
  version: 2.62.0
  lang: FR
  title: Chezmoi, comment je gère mes dotfiles
  url: https://julien-noblet.github.io/posts/2025/chezmoi/
- date: '2025-04-06'
  version: 2.62.0
  lang: CN
  title: dotfiles:一键配置你的开发环境
  url: https://blog.csdn.net/gitblog_00574/article/details/147021711
- date: '2025-04-07'
  version: 2.62.0
  title: Using chezmoi Part 2 — Templates
  url: https://kidoni.dev/using-templates-with-chezmoi
- date: '2025-04-11'
  version: 2.62.0
  title: Installing the Tmux Plugin Manager (tpm) with Chezmoi
  url: https://www.lorenzobettini.it/2025/04/installing-the-tmux-plugin-manager-tpm-with-chezmoi/
- date: '2025-04-13'
  version: 2.62.0
  title: Managing External Dependencies with Chezmoi
  url: https://stoeps.de/posts/2025/managing_external_dependencies_with_chezmoi/
- date: '2025-04-19'
  version: 2.62.2
  title: 'Continuous Improvement in DevOps: Streamlining with chezmoi and mise'
  url: https://manuelchichi.com.ar/blog/personal-toolset-2025/
- date: '2025-05-23'
  version: 2.62.5
  lang: JP
  title: chezmoiでdotfilesを管理する
  url: https://hiratake.dev/blog/20250523/
- date: '2025-06-20'
  version: 2.62.6
  title: Protecting Secrets in Dotfiles with Chezmoi
  url: https://kidoni.dev/chezmoi-templates-and-secrets
- date: '2025-07-13'
  version: 2.63.0
  title: Sync Claude Code commands and hooks across machines with chezmoi and age
  url: https://www.arun.blog/sync-claude-code-with-chezmoi-and-age/
- date: '2025-07-20'
  version: 2.63.0
  lang: JP
  title: なぜchezmoiが最強のdotfiles管理ツールなのか?
  url: https://zenn.dev/smasato/articles/e382902ec4aa17
- date: '2025-07-25'
  version: 2.63.0
  title: Habits in the Shell, shared
  url: https://offby1.website/posts/habits-in-the-shell-shared.html
- date: '2025-07-27'
  version: 2.36.1
  lang: CN
  title: 使用 chezmoi & vscode, 管理你的 dotfiles
  url: https://www.shuzhiduo.com/A/kvJ3V17Xzg/
- date: '2025-08-02'
  version: 2.63.1
  title: Dotfile management with Chezmoi and Vim
  url: https://www.probableodyssey.blog/all-posts/dotfile_management_with_chezmoi_and_vim/
- date: '2025-08-12'
  version: 2.64.0
  title: From Dotfiles to Portable Dev Environments
  url: https://dakaiser.substack.com/p/from-dotfiles-to-portable-dev-environments
- date: '2025-08-18'
  version: 2.64.0
  title: secure dotfiles management with chezmoi
  url: https://walterra.dev/blog/2025-08-18-chezmoi-keychain-integration
- date: '2025-08-27'
  version: 2.56.0
  lang: JP
  title: chezmoi
  url: https://www.ebiyuu.com/dotfiles/chezmoi/
- date: '2025-08-31'
  version: 2.56.0
  title: Automating My Developer Environment - Instantly set up any new laptop
  url: https://www.linkedin.com/pulse/automating-my-developer-environment-instantly-set-up-joseph-lee-omw7e/
- date: '2025-09-08'
  version: 2.65.1
  title: Improving My Dotfiles Posture
  url: https://benprisby.com/blog/improving-my-dotfiles-posture/
- date: '2025-09-25'
  version: 2.65.2
  title: Managing KDE Dotfiles with Chezmoi and Chezmoi Modify Manager
  url: https://www.lorenzobettini.it/2025/09/managing-kde-dotfiles-with-chezmoi-and-chezmoi-modify-manager/
- date: '2025-10-06'
  version: 2.65.2
  title: Testable Dotfiles Management With Chezmoi
  url: https://shunk031.me/post/testable-dotfiles-management-with-chezmoi/
- date: '2025-10-07'
  version: 2.65.2
  title: Dotfiles with Chezmoi
  url: https://aohorodnyk.com/post/2025-10-07-dotfiles-with-chezmoi/
- date: '2025-11-02'
  version: 2.66.1
  title: Maintaining KDE dotfiles with Chezmoi Modify Manager
  url: https://www.lorenzobettini.it/2025/11/maintaining-kde-dotfiles-with-chezmoi-modify-manager/
- date: '2025-12-31'
  version: 2.68.1
  lang: CN
  title: 换新电脑不再折腾:用 chezmoi × Nix 一键复刻开发环境
  url: https://zhuanlan.zhihu.com/p/1989720652035424585
- date: '2026-01-13'
  version: 2.69.1
  title: Taking Control of My Dotfiles with chezmoi
  url: https://blog.cmmx.de/2026/01/13/taking-control-of-my-dotfiles-with-chezmoi/
- date: '2026-01-22'
  version: 2.69.3
  lang: JP
  title: 【chezmoi】AIエージェントの指示ファイルと権限管理を共通化してラクしよう【Hooks】
  url: https://zenn.dev/waki285/articles/chezmoi-dotfiles
- date: '2026-01-24'
  version: 2.69.3
  lang: CN
  title: Chezmoi 管理和同步多平台 dotfiles
  url: https://v3n0.top/post/2026/chezmoi/
- date: '2026-01-31'
  version: 2.69.3
  title: Dotfiles Secrets in Chezmoi, Without Password Headaches
  url: https://www.mikekasberg.com/blog/2026/01/31/dotfiles-secrets-in-chezmoi.html
- date: '2026-02-09'
  version: 2.69.3
  lang: JP
  title: dotfiles管理でchezmoiを使う
  url: https://blog.freks.jp/chezmoi/
- date: '2026-02-12'
  version: 2.69.4
  title: How chezmoi Transformed My Dotfile Management Across Multiple Systems
  url: https://medium.com/@tiomothybryant3/how-chezmoi-transformed-my-dotfile-management-across-multiple-systems-0db4029b518e
- date: '2026-02-07'
  version: 2.69.4
  lang: FR
  title: Mon environnement de développement avec mise et chez-moi
  url: https://david.drugeon-hamon.bzh/blog/2026/02/env-dev-avec-mise-et-chezmoi/
- date: '2026-02-13'
  version: 2.69.4
  title: I Deprecated Dotfiles and Oh My Zsh, and Moved to Chezmoi
  url: https://samwize.com/2026/02/13/i-deprecated-dotfiles-and-oh-my-zsh-and-moved-to-chezmoi/
- date: '2026-02-22'
  version: 2.69.4
  title: Dotfiles (series)
  url: https://knuth.info/posts/the-solo-stack/dotfiles/
- date: '2026-02-27'
  version: 2.69.4
  title: Syncing Dotfiles Across Machines with Chezmoi
  url: https://rifqimfahmi.dev/blog/chezmoi-to-backup-dotfiles
- date: '2026-03-07'
  version: 2.69.4
  title: One Skills Brain for Codex, Claude, Cursor, and Copilot with chezmoi
  url: https://dev.to/dotwee/one-skills-brain-for-codex-claude-cursor-and-copilot-with-chezmoi-2p3k
- date: '2026-03-07'
  version: 2.69.4
  title: One MCP Configuration for Codex, Claude, Cursor, and Copilot with chezmoi
  url: https://dev.to/dotwee/one-mcp-configuration-for-codex-claude-cursor-and-copilot-with-chezmoi-925


================================================
FILE: assets/chezmoi.io/docs/links/dotfile-repos.md
================================================
# Dotfile repos

* [GitHub](https://github.com/topics/chezmoi?o=desc&s=updated)

* [GitLab](https://gitlab.com/explore/projects/topics/chezmoi)

* [Codeberg](https://codeberg.org/explore/repos?sort=recentupdate&q=chezmoi&tab=)


================================================
FILE: assets/chezmoi.io/docs/links/podcasts.md.tmpl
================================================
# Podcasts

!!! tip

    Recommended podcast: [Managing Dot Files and an Introduction to Chezmoi](https://www.podfeet.com/blog/2021/07/ccatp-693/)

| Date | Version | Language | Title |
| ---- | ------- | -------- | ----- |
{{- range reverse .podcasts }}
| {{ .date }} | {{ .version }} | {{ .lang | default "EN" }} | [{{ .title }}]({{ .url }}) |
{{- end }}


================================================
FILE: assets/chezmoi.io/docs/links/podcasts.md.yaml
================================================
podcasts:
- date: '2026-02-24'
  version: 2.69.4
  lang: DE
  title: Hyper, Meh und Linux Laptops
  url: https://www.youtube.com/watch?v=jMNh8u0W274&t=6133s
- date: '2019-11-20'
  version: 1.7.2
  title: 'FLOSS weekly episode 556: chezmoi'
  url: https://twit.tv/shows/floss-weekly/episodes/556
- date: '2021-07-23'
  version: 2.1.2
  title: 'CCATP #693 – Bart Busschots on PBS 121 of X — Managing Dot Files and an Introduction to Chezmoi'
  url: https://www.podfeet.com/blog/2021/07/ccatp-693/
- date: '2021-08-08'
  version: 2.1.2
  title: 'CCATP #695 – Bart Busschots on PBS 122 – Managing Dot Files with Chezmoi'
  url: https://www.podfeet.com/blog/2021/08/ccatp-695/
- date: '2021-08-22'
  version: 2.1.2
  title: 'CCATP #696 – Bart Busschots on PBS 123 of X — Backing up and Syncing Dot Files with Chezmoi'
  url: https://www.podfeet.com/blog/2021/08/ccatp-696/
- date: '2021-09-04'
  version: 2.1.2
  title: 'CCATP #698 – Bart Busschots on PBS 124 of X – Chezmoi Templates'
  url: https://www.podfeet.com/blog/2021/09/ccatp-698/
- date: '2021-09-18'
  version: 2.1.2
  title: 'CCATP #699 – Bart Busschots on PBS 125 of X – Chezmoi on Multiple Computers'
  url: https://www.podfeet.com/blog/2021/09/ccatp-699/
- date: '2022-03-11'
  version: 2.14.0
  title: 'The Real Python Podcast: Episode 101: Tools for Setting Up Python on a New Machine'
  url: https://realpython.com/podcasts/rpp/101/#t=3368
- date: '2022-05-27'
  version: 2.17.0
  title: Fédérer une communauté technique autour d'un projet Open Source
  url: https://www.podcastics.com/podcast/episode/federer-une-communaute-technique-autour-dun-projet-open-source-131694/
- date: '2023-01-30'
  version: 2.29.3
  lang: ES
  title: 459 - Soy un zoquete, otra vez hice un rm -rf
  url: https://atareao.es/podcast/soy-un-zoquete-otra-vez-hice-un-rm-rf/
- date: '2023-05-22'
  version: 2.33.6
  lang: ES
  title: 491 - Tres herramientas que han revolucionado mi terminal Linux
  url: https://atareao.es/podcast/tres-herramientas-que-han-revolucionado-mi-terminal-linux/
- date: '2024-10-17'
  version: 2.52.4
  title: Releasing more BSDs
  url: https://www.bsdnow.tv/581?t=2064
- date: '2025-11-24'
  version: 2.67.0
  lang: JP
  title: EP326 10年モノのdotfilesを整理
  url: https://yuru28.com/326#t=1081


================================================
FILE: assets/chezmoi.io/docs/links/related-software.md
================================================
# Related software


## Editor integration

### [`github.com/andre-kotake/nvim-chezmoi`](https://github.com/andre-kotake/nvim-chezmoi) { id="andre-kotake/nvim-chezmoi" }

A NeoVim plugin that integrates with chezmoi.

### [`github.com/alker0/chezmoi.vim`](https://github.com/alker0/chezmoi.vim) { id="alker0/chezmoi.vim" }

Intelligent VIM syntax highlighting when editing files in your source directory.
Works with both `chezmoi edit` and editing files directly.

### [`github.com/tuh8888/chezmoi.el`](https://github.com/tuh8888/chezmoi.el) { id="tuh8888/chezmoi.el" }

Convenience functions for interacting with chezmoi in Emacs.

### [`github.com/Lilja/vim-chezmoi`](https://github.com/Lilja/vim-chezmoi) { id="lilja/vim-chezmoi" }

A plugin for VIM to apply the dotfile you are editing on `:w`.

### [`github.com/Lindydancer/tmpl-mode`](https://github.com/Lindydancer/tmpl-mode) { id="Lindydancer/tmpl-mode" }

Emacs minor mode for "tmpl" template files.

### [`github.com/xvzc/chezmoi.nvim`](https://github.com/xvzc/chezmoi.nvim) { id="xvzc/chezmoi.nvim" }

Edit your chezmoi-managed files and automatically apply.

### [`github.com/GianniBYoung/chezmoi-telescope.nvim`](https://github.com/GianniBYoung/chezmoi-telescope.nvim) { id="GianniBYoung/chezmoi-telescope.nvim" }

Custom Telescope Picker for Chez Moi Managed Dot files.


## Frontends

### [`github.com/daptify14/chezit`](https://github.com/daptify14/chezit) { id="daptify14/chezit"}

Terminal UI for chezmoi dotfile management.

### [`github.com/johan-weitner/chezmoi-ui`](https://github.com/johan-weitner/chezmoi-ui) { id="johan-weitner/chezmoi-ui" }

A web UI for managing a list of apps to seed/feed a chezmoi setup.

### [`github.com/matmaer/chezmoi-mousse`](https://github.com/matmaer/chezmoi-mousse) { id="matmaer/chezmoi-mousse" }

Visual interface in the terminal for the chezmoi dotfile manager, with a wink to the mouse.


## Other

### [`atuin.sh`](https://atuin.sh/) { id="atuin" }

Sync, search and backup shell history.

### [`github.com/b3nj5m1n/xdg-ninja`](https://github.com/b3nj5m1n/xdg-ninja) { id="b3nj5m1n/xdg-ninja" }

A shell script which checks your $HOME for unwanted files and directories.

### [`github.com/hussainweb/ansible-role-chezmoi`](https://github.com/hussainweb/ansible-role-chezmoi) { id="hussainweb/ansible-role-chezmoi" }

Installs chezmoi on Ubuntu and Debian servers.

### [`github.com/joke/asdf-chezmoi`](https://github.com/joke/asdf-chezmoi) { id="joke/asdf-chezmoi" }

chezmoi plugin for asdf version manager.

### [`github.com/main-branch/chezroot`](https://github.com/main-branch/chezroot) { id="main-branch/chezroot" }

A `sudo` wrapper for chezmoi to manage root-owned files across your entire filesystem.

### [`github.com/mass8326/zsh-chezmoi`](https://github.com/mass8326/zsh-chezmoi) { id="mass8326/zsh-chezmoi" }

Add completion and aliases for chezmoi to make managing dotfiles easier to zsh.

### [Chezetc](https://silverrainz.me/chezetc/) { id="silverrainz.me/chezetc" }

Extending chezmoi to manage files under /etc and other root-owned directories.

### [`github.com/tcaxle/drapeau`](https://github.com/tcaxle/drapeau) { id="tcaxle/drapeau" }

An add-on to synchronize your color schemes across systems and allow easy
colorscheme switching using chezmoi templates.

### [`github.com/VorpalBlade/chezmoi_modify_manager`](https://github.com/VorpalBlade/chezmoi_modify_manager) { id="vorpalblade/chezmoi_modify_manager" }

An add-on to deal with config files that contain a mix of settings and transient
state, such as with GUI program settings files also containing recently used
files and window positions.

### [`install.doctor`](https://install.doctor) { id="install.doctor" }

Desktop provisioning system.

### [`github.com/halostatue/fish-chezmoi`](https://github.com/halostatue/fish-chezmoi)

A plug-in for the Fish shell that ensures that completions are always loaded and
a function that wraps `chezmoi cd` to not create a sub-shell.


================================================
FILE: assets/chezmoi.io/docs/links/social-media.md
================================================
# Social media

| Platform           | Search term                                                                                                                |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------- |
| Hacker News        | [`chezmoi`](https://hn.algolia.com/?dateRange=all&page=0&prefix=false&query=chezmoi&sort=byDate&type=comment)              |
| LinkedIn           | [`chezmoi dotfiles`](https://www.linkedin.com/search/results/all/?keywords=chezmoi%20dotfiles&origin=GLOBAL_SEARCH_HEADER) |
| lobste.rs comments | [`chezmoi`](https://lobste.rs/search?q=chezmoi&what=comments&order=newest)                                                 |
| lobste.rs stories  | [`chezmoi`](https://lobste.rs/search?q=chezmoi&what=stories&order=newest)                                                  |
| Reddit             | [`chezmoi dotfiles`](https://www.reddit.com/search/?q=chezmoi+dotfiles&sort=new)                                           |
| Stack Overflow     | [`chezmoi`](https://stackoverflow.com/questions/tagged/chezmoi)                                                            |
| YouTube            | [`chezmoi dotfiles`](https://www.youtube.com/results?search_query=%22chezmoi%22+dotfiles)                                  |


================================================
FILE: assets/chezmoi.io/docs/links/videos.md.tmpl
================================================
# Videos

!!! tip

    Recommended video: [chezmoi: manage your dotfiles across multiple, diverse machines, securely](https://fosdem.org/2021/schedule/event/chezmoi/)

| Date | Version | Language | Title |
| ---- | ------- | -------- | ----- |
{{- range reverse .videos }}
| {{ .date }} | {{ .version }} | {{ .lang | default "EN" }} | [{{ .title }}]({{ .url }}) |
{{- end }}


================================================
FILE: assets/chezmoi.io/docs/links/videos.md.yaml
================================================
videos:
- date: '2019-11-20'
  version: 1.7.2
  title: 'FLOSS weekly episode 556: chezmoi'
  url: https://twit.tv/shows/floss-weekly/episodes/556
- date: '2020-03-12'
  version: 1.7.16
  title: Managing Dotfiles with ChezMoi
  url: https://www.youtube.com/watch?v=HXx6ugA98Qo
- date: '2020-07-06'
  version: 1.8.3
  title: 'Conf42: chezmoi: Manage your dotfiles across multiple machines, securely'
  url: https://www.youtube.com/watch?v=JrCMCdvoMAw
- date: '2021-02-06'
  version: 1.8.10
  title: 'chezmoi: manage your dotfiles across multiple, diverse machines, securely'
  url: https://fosdem.org/2021/schedule/event/chezmoi/
- date: '2021-09-06'
  version: 2.2.0
  title: 'chezmoi: Organize your dotfiles across multiple computers'
  url: https://www.youtube.com/watch?v=L_Y3s0PS_Cg
- date: '2021-11-27'
  version: 2.8.0
  lang: TH
  title: 'Command ไร 2021-11-27 : ย้าย dotfiles ไป chezmoi'
  url: https://www.youtube.com/watch?v=8ybNfCfnF2Y
- date: '2021-12-08'
  version: 2.9.3
  title: How Go makes chezmoi possible
  url: https://www.youtube.com/watch?v=5XiewS8ZbH8&t=1044s
- date: '2022-04-27'
  version: 2.15.1
  title: Easily moving Linux installs
  url: https://www.youtube.com/watch?v=x6063EuxfEA
- date: '2022-09-13'
  version: 2.22.1
  title: Using chezmoi to automate dotfiles / config files (+ my bashrc)
  url: https://www.youtube.com/watch?v=id5UKYuX4-A
- date: '2022-12-15'
  version: 2.27.3
  lang: ES
  title: Archivos de configuración fácil con chezmoi
  url: https://www.youtube.com/watch?v=Xsh2DGSe6Lg
- date: '2023-12-03'
  version: 2.42.2
  title: The ultimate dotfiles setup
  url: https://www.youtube.com/watch?v=-RkANM9FfTM
- date: '2024-01-14'
  version: 2.24.0
  title: 'managing dotfiles: a guided tour through my own setup'
  url: https://www.youtube.com/watch?v=fQ3txCIxiiU
- date: '2024-02-17'
  version: 2.47.0
  title: 12 GREAT command line programs YOU recommended!
  url: https://www.youtube.com/watch?v=nCS4BtJ34-o&t=324s
- date: '2024-06-22'
  version: 2.47.1
  title: Automating Development Environments with Ansible & Chezmoi
  url: https://www.youtube.com/watch?v=P4nI1VhoN2Y
- date: '2024-11-18'
  version: 2.54.0
  lang: AR
  title: Chezmoi, Dotfiles, Workflow, Templates and Encryption Arabic شرح   # removed | from title as it breaks Markdown tables
  url: https://www.youtube.com/watch?v=Jrrd2dHYBmY
- date: '2025-03-22'
  version: 2.61.0
  lang: DE
  title: 'Effiziente Dotfile-Verwaltung: Chezmoi im Einsatz'
  url: https://media.ccc.de/v/clt25-240-effiziente-dotfile-verwaltung-chezmoi-im-einsatz
- date: '2025-04-23'
  version: 2.62.2
  title: Managing Dotfiles with Chezmoi
  url: https://www.youtube.com/watch?v=KsEj_pvOXdE
- date: '2025-06-19'
  version: 2.62.6
  lang: DE
  title: 'Immutable Linux Desktops: Produktive Arbeit mit Fedora Silverblue, Chezmoi und Distrobox'
  url: https://media.ccc.de/v/gpn23-31-immutable-linux-desktops-produktive-arbeit-mit-fedora-silverblue-chezmoi-und-distrobox#t=2424
- date: '2025-09-13'
  version: 2.65.1
  title: How CHEZMOI manages dotfiles
  url: https://www.youtube.com/watch?v=xXemcEdoI9Y
- date: '2025-10-12'
  version: 2.66.0
  title: Supercharge your development workflow with these CLI tools
  url: https://www.youtube.com/watch?v=rqpiVgWZBOg&t=742s
- date: '2026-01-01'
  version: 2.69.3
  lang: FR
  title: Nouveau laptop ? Configurez TOUT en 5 min avec Chezmoi
  url: https://www.youtube.com/watch?v=6nqhBjvVVqE


================================================
FILE: assets/chezmoi.io/docs/migrating-from-another-dotfile-manager.md
================================================
# Migrating from another dotfile manager

## Migrate from a dotfile manager that uses symlinks

Many dotfile managers replace dotfiles with symbolic links to files in a common
directory. If you `chezmoi add` such a symlink, chezmoi will add the symlink,
not the file. To assist with migrating from symlink-based systems, use the
`--follow` option to `chezmoi add`, for example:

```sh
chezmoi add --follow ~/.bashrc
```

This will tell `chezmoi add` that the target state of `~/.bashrc` is the target
of the `~/.bashrc` symlink, rather than the symlink itself. When you run
`chezmoi apply`, chezmoi will replace the `~/.bashrc` symlink with the file
contents.


================================================
FILE: assets/chezmoi.io/docs/quick-start.md
================================================
# Quick start

## Concepts

Roughly speaking, chezmoi stores the desired state of your dotfiles in the
directory `~/.local/share/chezmoi`. When you run `chezmoi apply`, chezmoi
calculates the desired contents for each of your dotfiles and then makes the
minimum changes required to make your dotfiles match your desired state.
chezmoi's concepts are [described more accurately in the reference
manual][concepts].

## Start using chezmoi on your current machine

Assuming that you have already [installed chezmoi][install], initialize chezmoi
with:

```sh
chezmoi init
```

This will create a new git local repository in `~/.local/share/chezmoi` where
chezmoi will store its source state. By default, chezmoi only modifies files in
the working copy.

Manage your first file with chezmoi:

```sh
chezmoi add ~/.bashrc
```

This will copy `~/.bashrc` to `~/.local/share/chezmoi/dot_bashrc`.

Edit the source state:

```sh
chezmoi edit ~/.bashrc
```

This will open `~/.local/share/chezmoi/dot_bashrc` in your `$EDITOR`. Make some
changes and save the file.

!!! hint

    You don't have to use `chezmoi edit` to edit your dotfiles. See [this FAQ
    entry][faq-edit] for more details.

See what changes chezmoi would make:

```sh
chezmoi diff
```

Apply the changes:

```sh
chezmoi -v apply
```

All chezmoi commands accept the `-v` (verbose) flag to print out exactly what
changes they will make to the file system, and the `-n` (dry run) flag to not
make any actual changes. The combination `-n` `-v` is very useful if you want to
see exactly what changes would be made.

Next, open a shell in the source directory, to commit your changes:

```sh
chezmoi cd
git add .
git commit -m "Initial commit"
```

[Create a new repository on GitHub][new-repo] called `dotfiles` and then push
your repo:

```sh
git remote add origin git@github.com:$GITHUB_USERNAME/dotfiles.git
git branch -M main
git push -u origin main
```

!!! hint

    chezmoi can be configured to automatically [add, commit, and push][autogit]
    changes to your repo.

chezmoi can also be used with [GitLab][gitlab], or [BitBucket][bitbucket],
[Source Hut][srht], or any other git hosting service.

Finally, exit the shell in the source directory to return to where you were:

```sh
exit
```

These commands are summarized in this sequence diagram:

```mermaid
sequenceDiagram
    participant H as home directory
    participant W as working copy
    participant L as local repo
    participant R as remote repo
    H->>L: chezmoi init
    H->>W: chezmoi add $FILE
    W->>W: chezmoi edit $FILE
    W-->>H: chezmoi diff
    W->>H: chezmoi apply
    H-->>W: chezmoi cd
    W->>L: git add
    W->>L: git commit
    L->>R: git push
    W-->>H: exit
```

## Using chezmoi across multiple machines

On a second machine, initialize chezmoi with your dotfiles repo:

```sh
chezmoi init https://github.com/$GITHUB_USERNAME/dotfiles.git
```

!!! hint

    Private GitHub repos require other [authentication methods][private-auth]:

    ```sh
    chezmoi init git@github.com:$GITHUB_USERNAME/dotfiles.git
    ```

This will check out the repo and any submodules and optionally create a chezmoi
config file for you.

Check what changes that chezmoi will make to your home directory by running:

```sh
chezmoi diff
```

If you are happy with the changes that chezmoi will make then run:

```sh
chezmoi apply -v
```

If you are not happy with the changes to a file then either edit it with:

```sh
chezmoi edit $FILE
```

Or, invoke a merge tool (by default `vimdiff`) to merge changes between the
current contents of the file, the file in your working copy, and the computed
contents of the file:

```sh
chezmoi merge $FILE
```

On any machine, you can pull and apply the latest changes from your repo with:

```sh
chezmoi update -v
```

These commands are summarized in this sequence diagram:

```mermaid
sequenceDiagram
    participant H as home directory
    participant W as working copy
    participant L as local repo
    participant R as remote repo
    R->>W: chezmoi init $REPO
    W-->>H: chezmoi diff
    W->>H: chezmoi apply
    W->>W: chezmoi edit $FILE
    W->>W: chezmoi merge $FILE
    R->>H: chezmoi update
```

## Set up a new machine with a single command

You can install your dotfiles on new machine with a single command:

```sh
chezmoi init --apply https://github.com/$GITHUB_USERNAME/dotfiles.git
```

If you use GitHub and your dotfiles repo is called `dotfiles` then this can be
shortened to:

```sh
chezmoi init --apply $GITHUB_USERNAME
```

!!! hint

    Private GitHub repos require other [authentication methods][private-auth]:

    ```sh
    chezmoi init --apply git@github.com:$GITHUB_USERNAME/dotfiles.git
    ```

This command is summarized in this sequence diagram:

```mermaid
sequenceDiagram
    participant H as home directory
    participant W as working copy
    participant L as local repo
    participant R as remote repo
    R->>H: chezmoi init --apply $REPO
```

## Next steps

For a full list of commands run:

```sh
chezmoi help
```

chezmoi has much more functionality. Good starting points are reading [what
other people say about chezmoi][articles], adding more dotfiles, and using
templates to manage files that vary from machine to machine and retrieve secrets
from your password manager. Read the [user guide][user-guide] to explore and see
[how people use chezmoi][repos] for inspiration.

[articles]: /links/articles.md
[bitbucket]: https://bitbucket.org
[concepts]: /reference/concepts.md
[faq-edit]: /user-guide/frequently-asked-questions/usage.md#how-do-i-edit-my-dotfiles-with-chezmoi
[gitlab]: https://gitlab.com
[install]: /install.md
[new-repo]: https://github.com/new
[private-auth]: https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls
[repos]: /links/dotfile-repos.md
[srht]: https://sr.ht/
[user-guide]: /user-guide/setup.md
[autogit]: /user-guide/daily-operations.md#automatically-commit-and-push-changes-to-your-repo


================================================
FILE: assets/chezmoi.io/docs/reference/application-order.md
================================================
# Application order

chezmoi is deterministic in its order of application. The order is:

1. Read the source state.
2. Read the destination state.
3. Compute the target state.
4. Run `run_before_` scripts in alphabetical order.
5. Update entries in the target state (files, directories, externals, scripts,
   symlinks, etc.) in alphabetical order of their target name. Directories
   (including those created by externals) are updated before the files they
   contain.
6. Run `run_after_` scripts in alphabetical order.

Target names are considered after all attributes are stripped.

!!! example

    Given `create_alpha` and `modify_dot_beta` in the source state, `.beta`
    will be updated before `alpha` because `.beta` sorts before `alpha`.

chezmoi assumes that the source or destination states are not modified while
chezmoi is being executed. This assumption permits significant performance
improvements, including allowing chezmoi to only read files from the source and
destination states if they are needed to compute the target state.

chezmoi's behavior when the above assumptions are violated is undefined. For
example, using a `run_before_` script to update files in the source or
destination states violates the assumption that the source and destination
states do not change while chezmoi is running.

!!! note

    External sources are updated during the update phase; it is inadvisable for
    a `run_before_` script to depend on an external applied *during* the update
    phase. `run_after_` scripts may freely depend on externals.


================================================
FILE: assets/chezmoi.io/docs/reference/command-line-flags/common.md
================================================
# Common command line flags

The following flags apply to multiple commands where they are relevant.

## Flags

### `--age-recipient` *recipient*

Temporarily override the age recipient for this command. This
only has an effect if age encryption is configured and the `--encrypt` flag is
passed, and cannot be combined with `--age-recipient-file`.

### `--age-recipient-file` *recipient-file*

Temporarily override the age recipient for this command. This
only has an effect if age encryption is configured and the `--encrypt` flag is
passed, and cannot be combined with `--age-recipient`.

### `-x`, `--exclude` *types*

--8<-- "common-flags/exclude.md"

### `-f`, `--format` `json`|`yaml`

--8<-- "common-flags/format.md"

### `-h`, `--help`

Print help.

### `-i`, `--include` *types*

--8<-- "common-flags/include.md"

### `--init`

--8<-- "common-flags/init.md"

### `--override-data` *json-data*

--8<-- "common-flags/override-data.md"

### `--override-data-file` *filename*

--8<-- "common-flags/override-data-file.md"

### `-P`, `--parent-dirs`

--8<-- "common-flags/parent-dirs.md"

### `-p`, `--path-style` *style*

--8<-- "common-flags/path-style.md:all"

### `-r`, `--recursive`

--8<-- "common-flags/recursive.md:default-false"

### `--tree`

--8<-- "common-flags/tree.md"

## Available entry types

You can provide a list of entry types, separated by commas.
Types can be preceded with `no` to remove them, e.g. `scripts,noalways`.

| Type        | Description                 |
| ----------- | --------------------------- |
| `all`       | All entries                 |
| `none`      | No entries                  |
| `dirs`      | Directories                 |
| `files`     | Files                       |
| `remove`    | Removes                     |
| `scripts`   | Scripts                     |
| `symlinks`  | Symbolic links              |
| `always`    | Scripts that are always run |
| `encrypted` | Encrypted entries           |
| `externals` | External entries            |
| `templates` | Templates                   |


================================================
FILE: assets/chezmoi.io/docs/reference/command-line-flags/developer.md
================================================
# Developer command line flags

The following flags are global but only relevant for developers and debugging.

## Flags

### `--debug`

Log information helpful for debugging.

[profile]: https://blog.golang.org/pprof


================================================
FILE: assets/chezmoi.io/docs/reference/command-line-flags/global.md
================================================
# Global command line flags

The following flags are available for all chezmoi commands. Note that some flags
may not have any effect on certain commands.

## Flags

### `--cache` *directory*

> Configuration: `cacheDir`

Use *directory* as the cache directory.

### `--color` *value*

> Configuration: `color`

Colorize diffs, *value* can be `on`, `off`, `auto`, or any boolean-like value
recognized by `promptBool`. The default is `auto` which will colorize diffs only
if the environment variable `$NO_COLOR` is not set and stdout is a terminal.

### `-c`, `--config` *filename*

Read the [configuration][configuration] from *filename*.

### `--config-format` *format*

Assume the configuration file is in the given format. This is only needed if the
config filename does not have an extension, for example when it is `/dev/stdin`.
Supported formats: `json`, `jsonc`, `toml`, `yaml`.

### `-D`, `--destination` *directory*

> Configuration: `destDir`

Use *directory* as the destination directory.

### `-n`, `--dry-run`

Set dry run mode. In dry run mode, the destination directory is never modified.
This is most useful in combination with the `-v` (verbose) flag to print changes
that would be made without making them.

### `--force`

Make changes without prompting.

### `--interactive`

Prompt before applying each target.

### `--less-interactive`

Prompt before applying changed or pre-existing targets.

### `-k`, `--keep-going`

Keep going as far as possible after a encountering an error.

### `--mode` `file`|`symlink`

Mode of operation. The default is `file`.

### `--no-pager`

Do not use the pager.

### `--no-tty`

Do not attempt to get a TTY for prompts. Instead, read them from stdin.

### `-o`, `--output` *filename*

Write the output to *filename* instead of stdout.

### `--persistent-state` *filename*

> Configuration: `persistentState`

Read and write the persistent state from *filename*. By default, chezmoi stores
its persistent state in `chezmoistate.boltdb` in the same directory as its
configuration file.

### `--progress` *value*

Show progress when downloading externals. *value* can be `on`, `off`, or `auto`.
The default is `auto` which shows progress bars when stdout is a terminal.

### `-R`, `--refresh-externals` [*value*]

Control the refresh of the externals cache. *value* can be any of `always`,
`auto`, or `never` and defaults to `always` if no *value* is specified. If no
`--refresh-externals` flag is specified then chezmoi defaults to `auto`.

`always` (or any truthy value as accepted by `parseBool`) causes chezmoi to
re-download externals.

`auto` means only re-download externals that have not been downloaded within
their refresh periods.

`never` (or any other falsy value accepted by `parseBool`) means only download
if no cached external is available.

### `-S`, `--source` *directory*

> Configuration: `sourceDir`

Use *directory* as the source directory.

### `--source-path`

Interpret *targets* passed to the command as paths in the source directory
rather than the destination directory.

### `--use-builtin-age` [*bool*]

> Configuration: `useBuiltinAge`

Use chezmoi's builtin [age encryption][age] instead of an external `age`
command. *value* can be `on`, `off`, `auto`, or any boolean-like value
recognized by `promptBool`. The default is `auto` which will only use the
builtin age if `age.command` cannot be found in `$PATH`.

The builtin `age` command does not support passphrases, symmetric encryption,
or the use of SSH keys.

### `--use-builtin-diff` [*bool*]

Use chezmoi's builtin diff, even if the `diff.command` configuration variable
is set.

### `--use-builtin-git` [*bool*]

> Configuration: `useBuiltinGit`

Use chezmoi's builtin git instead of `git.command` for the `init` and `update`
commands. *value* can be `on`, `off`, `auto`, or any boolean-like value
recognized by `promptBool`. The default is `auto` which will only use the
builtin git if `git.command` cannot be found in `$PATH`.

!!! info

    chezmoi's builtin git has only supports the HTTP and HTTPS transports and
    does not support `git-repo` externals.

### `-v`, `--verbose`

Set verbose mode. In verbose mode, chezmoi prints the changes that it is making
as approximate shell commands, and any differences in files between the target
state and the destination set are printed as unified diffs.

### `--version`

Print the version of chezmoi, the commit at which it was built, and the build
timestamp.

### `-w`, `--working-tree` *directory*

Use *directory* as the git working tree directory. By default, chezmoi searches
the source directory and then its ancestors for the first directory that
contains a `.git` directory.

[configuration]: /reference/configuration-file/index.md
[age]: https://age-encryption.org


================================================
FILE: assets/chezmoi.io/docs/reference/command-line-flags/index.md
================================================
# Command line flags

Command line flags override any values set in the configuration file.


================================================
FILE: assets/chezmoi.io/docs/reference/commands/add.md
================================================
# `add` *target*...

Add *target*s to the source state. If any target is already in the source
state, then its source state is replaced with its current state in the
destination directory.

## Flags

### `-a`, `--autotemplate`

Automatically generate a template by replacing strings that match variable
values from the `data` section of the config file with their respective config
names as a template string. Longer substitutions occur before shorter ones.
This implies the `--template` option.

!!! warning

    `--autotemplate` uses a greedy algorithm which occasionally generates
    templates with unwanted variable substitutions. Carefully review any
    templates it generates.

### `--create`

Add files that should exist, irrespective of their contents.

Sets the `create_` source state attribute on the added file.

A file will be created with the given contents if the file does not exist.
If the file already exists, then its contents will not be changed.
This allows for managing files with an initial state but should not be changed
by chezmoi afterwards.

### `--encrypt`

> Configuration: `add.encrypt`

Encrypt files using the defined encryption method.

### `--exact`

Set the `exact` attribute on added directories.

!!! warning

    Directories with the `exact` attributes are statefully synced between target and source directories.
    When running `re-add`, any files deleted from the `exact` target directory will be removed from the source directory.
    Likewise, any files added to the `exact` target directory, will be added to the source directory

### `--follow`

If the last part of a target is a symlink, add the target of the symlink
instead of the symlink itself.

### `--new`

Create a new file if the target does not exist.

### `-p`, `--prompt`

Interactively prompt before adding each file.

### `-q`, `--quiet`

Suppress warnings about adding ignored entries.

### `--secrets` `ignore`|`warning`|`error`

> Configuration: `add.secrets`

Action to take when a secret is found when adding a file. The default is
`warning`.

### `-T`, `--template`

Set the `template` attribute on added files and symlinks.

### `--template-symlinks`

> Configuration: `add.templateSymlinks`

When adding symlink to an absolute path in the source directory or destination
directory, create a symlink template with `.chezmoi.sourceDir` or
`.chezmoi.homeDir`. This is useful for creating portable absolute symlinks.

## Common flags

### `-x`, `--exclude` *types*

--8<-- "common-flags/exclude.md"

### `-f`, `--force`

Add *target*s, even if doing so would cause a source template to be
overwritten.

### `-i`, `--include` *types*

--8<-- "common-flags/include.md"

### `-r`, `--recursive`

--8<-- "common-flags/recursive.md:default-true"

## Examples

```sh
chezmoi add ~/.bashrc
chezmoi add ~/.gitconfig --template
chezmoi add ~/.ssh/id_rsa --encrypt
chezmoi add ~/.vim --recursive
chezmoi add ~/.oh-my-zsh --exact --recursive
```

## Notes

!!! bug

    `chezmoi add` will fail if the entry being added is in a directory
    implicitly created by an [external][external]. See [issue #1574][issue-1574]
    for details.

!!! warning

    `chezmoi add --exact --recursive DIR` works in predictable but surprising
    ways and its use is not recommended for nested directories without taking
    precautions.

    If you have not previously added any files from `~/.config` to chezmoi and
    run `chezmoi add --exact --recursive ~/.config/nvim`, chezmoi will consider
    all files under `~/.config` to be managed, and any file *not* in
    `~/.config/nvim` will be removed on your next `chezmoi apply`. This is
    because `~/.config/nvim` is added as:

    ```text
    exact_dot_config/
        exact_nvim/
          exact_lua/
            …
          …
    ```

    To prevent this, add a `.keep` file *first* before adding the subdirectory
    recursively.

    ```sh
    touch ~/.config/.keep
    chezmoi add ~/.config/.keep
    chezmoi add --recursive --exact ~/.config/nvim
    ```

    See [issue #4223][issue-4223] for details.

[external]: /reference/special-files/chezmoiexternal-format.md
[issue-1574]: https://github.com/twpayne/chezmoi/issues/1574
[issue-4223]: https://github.com/twpayne/chezmoi/issues/4223


================================================
FILE: assets/chezmoi.io/docs/reference/commands/age-keygen.md
================================================
# `age-keygen` [*identity-file*]

Generate an age identity or convert an age identity to an age recipient.

## Flags

### `--pq`

Generate a post-quantum key pair.

### `-y`, `--convert`

Read an identity file *identity-file* or the standard input and print its
recipient instead of generating an age identity.

## Examples

```sh
chezmoi age-keygen
chezmoi age-keygen -o identity.txt
chezmoi age-keygen -y identity.txt
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/age.md
================================================
# `age`

<!-- markdownlint-disable no-duplicate-heading -->

Interact with age's passphrase-based encryption.

## Subcommands

### `age encrypt` [*file*...]

Encrypt file or standard input.

#### `-p`, `--passphrase`

Decrypt with a passphrase.

### `age decrypt` [*file*...]

Decrypt file or standard input.

#### `-p`, `--passphrase`

Decrypt with a passphrase.

## Examples

```sh
chezmoi age encrypt --passphrase plaintext.txt > ciphertext.txt
chezmoi age decrypt --passphrase ciphertext.txt > decrypted-ciphertext.txt
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/apply.md
================================================
# `apply` [*target*...]

Ensure that *target*... are in the target state, updating them if necessary. If
no targets are specified, the state of all targets are ensured. If a target has
been modified since chezmoi last wrote it then the user will be prompted if
they want to overwrite the file.

## Common flags

### `-x`, `--exclude` *types*

--8<-- "common-flags/exclude.md"

### `-i`, `--include` *types*

--8<-- "common-flags/include.md"

### `--init`

--8<-- "common-flags/init.md"

### `-P`, `--parent-dirs`

--8<-- "common-flags/parent-dirs.md"

### `-r`, `--recursive`

--8<-- "common-flags/recursive.md:default-true"

### `--source-path`

Specify targets by source path, rather than target path. This is useful for
applying changes after editing.

## Examples

```sh
chezmoi apply
chezmoi apply --dry-run --verbose
chezmoi apply ~/.bashrc
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/archive.md
================================================
# `archive` [*target*....]

Generate an archive of the target state, or only the targets specified. This
can be piped into `tar` to inspect the target state.

## Flags

### `-f`, `--format` *format*

Write the archive in *format*. If `--output` is set the format is guessed from
the extension, otherwise the default is `tar`.

| Supported formats |
| ----------------- |
| `tar`             |
| `tar.gz`          |
| `tgz`             |
| `zip`             |

### `-z`, `--gzip`

Compress the archive with gzip. This is automatically set if the format is
`tar.gz` or `tgz` and is ignored if the format is `zip`.

## Common flags

### `-x`, `--exclude` *types*

--8<-- "common-flags/exclude.md"

### `-i`, `--include` *types*

--8<-- "common-flags/include.md"

### `--init`

--8<-- "common-flags/init.md"

### `-P`, `--parent-dirs`

--8<-- "common-flags/parent-dirs.md"

### `-r`, `--recursive`

--8<-- "common-flags/recursive.md:default-true"

## Examples

```sh
chezmoi archive | tar tvf -
chezmoi archive --output=dotfiles.tar.gz
chezmoi archive --output=dotfiles.zip
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/cat-config.md
================================================
# `cat-config`

Print the configuration file.

## Examples

```sh
chezmoi cat-config
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/cat.md
================================================
# `cat` *target*...

Write the target contents of *target*s to stdout. *target*s must be files,
scripts, or symlinks. For files, the target file contents are written. For
scripts, the script's contents are written. For symlinks, the target is
written.

## Examples

```sh
chezmoi cat ~/.bashrc
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/cd.md
================================================
# `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*.

The shell will have various `CHEZMOI*` environment variables set, as for
scripts.

!!! hint

    This does not change the current directory of the current shell. To do
    that, instead use:

    ```console
    $ cd $(chezmoi source-path)
    ```

## Examples

```sh
chezmoi cd
chezmoi cd ~
chezmoi cd ~/.config
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/chattr.md
================================================
# `chattr` *modifier* *target*...

Change the attributes and/or type of *target*s. *modifier* specifies what to
modify.

See [attributes][attributes] for a description of each attribute.

Add attributes by specifying them or their abbreviations directly, optionally
prefixed with a plus sign (`+`). Remove attributes by prefixing them or their
attributes with the string `no` or a minus sign (`-`). The available attribute
modifiers and their abbreviations are:

| Attribute modifier | Abbreviation |
| ------------------ | ------------ |
| `after`            | `a`          |
| `before`           | `b`          |
| `empty`            | `e`          |
| `encrypted`        | *none*       |
| `exact`            | *none*       |
| `executable`       | `x`          |
| `external`         | *none*       |
| `once`             | `o`          |
| `onchange`         | *none*       |
| `private`          | `p`          |
| `readonly`         | `r`          |
| `remove`           | *none*       |
| `template`         | `t`          |

The type of a target can be changed using a type modifier:

| Type modifier |
| ------------- |
| `create`      |
| `modify`      |
| `script`      |
| `symlink`     |

The negative form of type modifiers, e.g. `nocreate`, changes the target to be
a regular file if it is of that type, otherwise the type is left unchanged.

Multiple modifications may be specified by separating them with a comma (`,`).
If you use the `-`*modifier* form then you must put *modifier* after a `--` to
prevent chezmoi from interpreting `-`*modifier* as an option.

## Common flags

### `-r`, `--recursive`

--8<-- "common-flags/recursive.md:default-false"

## Examples

```sh
chezmoi chattr template ~/.bashrc
chezmoi chattr noempty ~/.profile
chezmoi chattr private,template ~/.netrc
chezmoi chattr -- -x ~/.zshrc
chezmoi chattr +create,+private ~/.kube/config
```

[attributes]: /reference/source-state-attributes.md


================================================
FILE: assets/chezmoi.io/docs/reference/commands/commands.go
================================================
// Package commands contains chezmoi's documentation for commands.
package commands

import "embed"

// FS contains all docs.
//
//go:embed *.md
var FS embed.FS


================================================
FILE: assets/chezmoi.io/docs/reference/commands/commands_test.go
================================================
package commands

import (
	"testing"

	"github.com/alecthomas/assert/v2"
)

func TestFS(t *testing.T) {
	_, err := FS.ReadFile("add.md")
	assert.NoError(t, err)
}


================================================
FILE: assets/chezmoi.io/docs/reference/commands/completion.md
================================================
# `completion` *shell*

Generate shell completion code for the specified shell (`bash`, `fish`,
`powershell`, or `zsh`).

## Examples

```sh
chezmoi completion bash
chezmoi completion fish --output=~/.config/fish/completions/chezmoi.fish
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/data.md
================================================
# `data`

Write the computed template data to stdout.

## Common flags

### `-f`, `--format` `json`|`yaml`

--8<-- "common-flags/format.md"

## Examples

```sh
chezmoi data
chezmoi data --format=yaml
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/decrypt.md
================================================
# `decrypt` [*file*...]

Decrypt *file*s using chezmoi's configured encryption. If no files are given,
decrypt the standard input. The decrypted result is written to the standard
output or a file if the `--output` flag is set.


================================================
FILE: assets/chezmoi.io/docs/reference/commands/destroy.md
================================================
# `destroy` *target*...

Remove *target* from the source state, the destination directory, and the state.

!!! danger

    The `destroy` command permanently removes files both from your home
    directory and chezmoi's source directory.

    Only run `chezmoi destroy` if you have a separate backup of your home
    directory and your source directory.

    If you want chezmoi to stop managing the file use [`forget`][forget]
    instead.

    If you want to remove all traces of chezmoi from your system use
    [`purge`][purge] instead.

## Common flags

### `--force`

Destroy without prompting.

### `-r`, `--recursive`

--8<-- "common-flags/recursive.md:default-false"

[forget]: /reference/commands/forget.md
[purge]: /reference/commands/purge.md


================================================
FILE: assets/chezmoi.io/docs/reference/commands/diff.md
================================================
# `diff` [*target*...]

Print the difference between the target state and the destination state for
*target*s. If no targets are specified, print the differences for all targets.

If a `diff.pager` command is set in the configuration file then the output will
be piped into it.

If `diff.command` is set then it will be invoked to show individual file
differences with `diff.args` passed as arguments. Each element of `diff.args`
is interpreted as a template with the variables `.Destination` and `.Target`
available corresponding to the path of the file in the source and target state
respectively. The default value of `diff.args` is
`["{{ .Destination }}", "{{ .Target }}"]`. If `diff.args` does not contain any
template arguments then `{{ .Destination }}` and `{{ .Target }}` will be
appended automatically.

## Flags

### `--pager` *pager*

> Configuration: `diff.pager`

Pager to use for output.

### `--reverse`

> Configuration: `diff.reverse`

Reverse the direction of the diff, i.e. show the changes to the target required
to match the destination.

### `--script-contents`

Show script contents, defaults to `true`.

## Common flags

### `-x`, `--exclude` *types*

--8<-- "common-flags/exclude.md"

### `-i`, `--include` *types*

--8<-- "common-flags/include.md"

### `--init`

--8<-- "common-flags/init.md"

### `-P`, `--parent-dirs`

--8<-- "common-flags/parent-dirs.md"

### `-r`, `--recursive`

--8<-- "common-flags/recursive.md:default-false"

## Examples

```sh
chezmoi diff
chezmoi diff ~/.bashrc
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/docker.md
================================================
# `docker`

<!-- markdownlint-disable no-duplicate-heading -->

!!! Warning

    `docker` is an experimental command.

!!! Hint

    To use [podman](https://podman.io/) instead of Docker, set the
    `docker.command` configuration variable to `podman`. You can also
    use the [`chezmoi podman` command][chezmoi-podman] instead of
    `chezmoi docker`.

Install chezmoi, run `chezmoi init --apply`, and optionally execute your shell
in [Docker](https://docker.com/) containers.

## Subcommands

### `exec` *container-id* *init-args*...

Install chezmoi, run `chezmoi init --apply *init-args*`, and execute your shell
in the existing Docker container *container-id*.

#### Flags

##### `-i`, `--interactive`

Keep stdin open even if not attached.

##### `-p`, `--package-manager` *package-manager*

Install chezmoi using *package-manager*, if possible. Valid values for
*package-manager* include `apk`, `apt-get`, `brew`, `dnf`, `nix-env`, `pacman`,
`port`, `pkg`, `rpm`, `snap`, `xbps-install`, and `zypper`. Otherwise, fall back
to `curl` or `wget` installation. If neither `curl` nor `wget` are installed
then install them with *package-manager*.

##### `-s`, `--shell`

After installing chezmoi, initializing your dotfiles, execute your shell. This
is the default.

### `run` *image-id* *init-args*...

Create a new Docker container using *image-id*, and in it, install chezmoi, run
`chezmoi init --apply *init-args*`, and execute your shell.

#### Flags

##### `-p`, `--package-manager` *package-manager*

Install chezmoi using *package-manager*, if possible. Valid values for
*package-manager* include `apk`, `apt-get`, `brew`, `dnf`, `nix-env`, `pacman`,
`port`, `pkg`, `rpm`, `snap`, `xbps-install`, and `zypper`. Otherwise, fall back
to `curl` or `wget` installation. If neither `curl` nor `wget` are installed
then install them with *package-manager*.

## Examples

```sh
chezmoi docker exec $CONTAINER_ID $GITHUB_USERNAME
chezmoi docker run -p apk alpine:latest $GITHUB_USERNAME
```

[chezmoi-podman]: /reference/commands/podman.md


================================================
FILE: assets/chezmoi.io/docs/reference/commands/doctor.md
================================================
# `doctor`

Check for potential problems.

## Flags

### `--no-network`

Do not use any network connections.

## Examples

```sh
chezmoi doctor
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/dump-config.md
================================================
# `dump-config`

Dump the configuration.

## Common flags

### `-f`, `--format` `json`|`yaml`

--8<-- "common-flags/format.md"

## Examples

```sh
chezmoi dump-config
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/dump.md
================================================
# `dump` [*target*...]

Dump the target state of *target*s. If no targets are specified, then the
entire target state.

## Common flags

### `-x`, `--exclude` *types*

--8<-- "common-flags/exclude.md"

### `-f`, `--format` `json`|`yaml`

--8<-- "common-flags/format.md"

### `-i`, `--include` *types*

--8<-- "common-flags/include.md"

### `--init`

--8<-- "common-flags/init.md"

### `-P`, `--parent-dirs`

--8<-- "common-flags/parent-dirs.md"

### `-r`, `--recursive`

--8<-- "common-flags/recursive.md:default-true"

## Examples

```sh
chezmoi dump ~/.bashrc
chezmoi dump --format=yaml
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/edit-config-template.md
================================================
# `edit-config-template`

Edit the configuration file template. If no configuration file template exists,
then a new one is created with the contents of the current config file.

## Examples

```sh
chezmoi edit-config-template
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/edit-config.md
================================================
# `edit-config`

Edit the configuration file.

## Examples

```sh
chezmoi edit-config
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/edit-encrypted.md
================================================
# `edit-encrypted` *filename*...

Edit the encrypted files *filename*s.

Each *filename* is decrypted to a temporary directory, the editor is invoked on
the decrypted files. After the editor returns, each the decrypted file is
re-encrypted.

## Examples

  ```sh
  chezmoi edit-encrypted encrypted_file
  ```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/edit.md
================================================
# `edit` [*target*...]

Edit the source state of *target*s, which must be files or symlinks. If no
targets are given then the working tree of the source directory is opened.

Encrypted files are decrypted to a private temporary directory and the editor
is invoked with the decrypted file. When the editor exits the edited decrypted
file is re-encrypted and replaces the original file in the source state.

If the operating system supports hard links, then the edit command invokes the
editor with filenames which match the target filename, unless the
`edit.hardlink` configuration variable is set to `false` or the
`--hardlink=false` command line flag is set. Templates preserve their `.tmpl`
extension so editors can highlight them as templates.

!!! hint

    Depending on your editor, you can set the format of a file in the file itself
    using a [modeline][modelines]. This can be useful if you want to syntax
    highlight a template as a different format.

## Flags

### `-a`, `--apply`

> Configuration: `edit.apply`

Apply the target immediately after editing. This is ignored if there are no
targets, and does not apply scripts.

### `--hardlink` *bool*

> Configuration: `edit.hardlink`

Invoke the editor with a hard link to the source file with a name matching the
target filename. This can help the editor determine the type of the file
correctly. This is the default.

!!! hint

    Creating hardlinks is not possible between different filesystems. Hence,
    if your [`tempDir`][tempdir] resides on a different filesystem (e.g. a
    [tmpfs][tmpfs], which is sometimes used for `/tmp`), this will not work.

### `--watch`

> Configuration: `edit.watch`

Automatically apply changes when files are saved, with the following limitations:

* Only available when `chezmoi edit` is invoked with arguments (i.e.
  argument-free `chezmoi edit` is not supported).
* All edited files are applied when any file is saved.
* Only the edited files are watched, not any dependent files (e.g.
  `.chezmoitemplates` and `include`d files in templates are not watched).
* Only works on operating systems supported by [fsnotify][fsnotify].
* Only works if `edit.hardlink` is enabled and works.

## Common flags

### `-x`, `--exclude` *types*

--8<-- "common-flags/exclude.md"

### `-i`, `--include` *types*

--8<-- "common-flags/include.md"

### `--init`

--8<-- "common-flags/init.md"

## Examples

  ```sh
  chezmoi edit ~/.bashrc
  chezmoi edit ~/.bashrc --apply
  chezmoi edit
  ```

[fsnotify]: https://github.com/fsnotify/fsnotify
[modelines]: https://vimhelp.org/options.txt.html#auto-setting
[tempdir]: /reference/configuration-file/variables.md#tempdir
[tmpfs]: https://en.wikipedia.org/wiki/Tmpfs


================================================
FILE: assets/chezmoi.io/docs/reference/commands/encrypt.md
================================================
# `encrypt` [*file*...]

Encrypt *file*s using chezmoi's configured encryption. If no files are given,
encrypt the standard input. The encrypted result is written to the standard
output or a file if the `--output` flag is set.


================================================
FILE: assets/chezmoi.io/docs/reference/commands/execute-template.md
================================================
# `execute-template` [*template*...]

Execute *template*s. This is useful for [testing templates][testing] or for
calling chezmoi from other scripts. *templates* are interpreted as literal
templates, with no whitespace added to the output between arguments. If no
templates are specified, the template is read from stdin.

## Flags

### `-f`, `--file`

Treat the arguments as filenames, not literal templates.

### `-i`, `--init`

Include simulated functions only available during `chezmoi init`.

### `--left-delimiter` *delimiter*

Set the left template delimiter.

### `--promptBool` *pairs*

Simulate the `promptBool` template function with a function that returns values
from *pairs*. *pairs* is a comma-separated list of *prompt*`=`*value* pairs. If
`promptBool` is called with a *prompt* that does not match any of *pairs*, then
it returns false.

### `--promptChoice` *pairs*

Simulate the `promptChoice` template function with a function that returns
values from *pairs*. *pairs* is a comma-separated list of *prompt*`=`*value*
pairs. If `promptChoice` is called with a *prompt* that does not match any of
*pairs*, then it returns *prompt* unchanged.

### `--promptInt` *pairs*

Simulate the `promptInt` template function with a function that returns values
from *pairs*. *pairs* is a comma-separated list of *prompt*`=`*value* pairs. If
`promptInt` is called with a *prompt* that does not match any of *pairs*, then
it returns zero.

### `--promptMultichoice` *pairs*

Simulate the `promptMultichoice` template function with a function that returns
values from *pairs*. *pairs* is a comma-separated list of *prompt*`=`*value*
pairs. If `promptMultichoice` is called with a *prompt* that does not match any
of *pairs*, then it returns *prompt* as an array.

### `-p`, `--promptString` *pairs*

Simulate the `promptString` template function with a function that returns
values from *pairs*. *pairs* is a comma-separated list of *prompt*`=`*value*
pairs. If `promptString` is called with a *prompt* that does not match any of
*pairs*, then it returns *prompt* unchanged.

### `--right-delimiter` *delimiter*

Set the right template delimiter.

### `--stdinisatty` *bool*

Simulate the `stdinIsATTY` function by returning *bool*.

### `--with-stdin`

If run with arguments, then set `.chezmoi.stdin` to the contents of the standard
input.

## Examples

```sh
chezmoi execute-template '{{ .chezmoi.sourceDir }}'
chezmoi execute-template '{{ .chezmoi.os }}' / '{{ .chezmoi.arch }}'
echo '{{ .chezmoi | toJson }}' | chezmoi execute-template
chezmoi execute-template --init --promptString email=me@home.org < ~/.local/share/chezmoi/.chezmoi.toml.tmpl
```

[testing]: /user-guide/templating.md#testing-templates


================================================
FILE: assets/chezmoi.io/docs/reference/commands/forget.md
================================================
# `forget` *target*...

Remove *target*s from the source state, i.e. stop managing them. *target*s must
have entries in the source state. They cannot be externals.

## Examples

```sh
chezmoi forget ~/.bashrc
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/generate.md
================================================
# `generate` *output*

Generates *output* for use with chezmoi. The currently supported *output*s are:

| Output                  | Description                                                                   |
| ----------------------- | ----------------------------------------------------------------------------- |
| `git-commit-message`    | A git commit message, describing the changes to the source directory.         |
| `install.sh`            | An install script, suitable for use with GitHub Codespaces                    |
| `install-init-shell.sh` | A script which installs chezmoi, runs `chezmoi init`, and executes your shell |

## Examples

```sh
chezmoi generate install.sh > install.sh
chezmoi git -- commit -m "$(chezmoi generate git-commit-message)"
chezmoi generate install-init-shell.sh $GITHUB_USERNAME
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/git.md
================================================
# `git` [*arg*...]

Run `git` *args* in the working tree (typically the source directory).

!!! note

    Flags in *args* must occur after `--` to prevent chezmoi from interpreting
    them.

## Examples

```sh
chezmoi git add .
chezmoi git add dot_gitconfig
chezmoi git -- commit -m "Add .gitconfig"
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/help.md
================================================
# `help` [*command*...]

Print the help associated with *command*, or general help if no command is
given.


================================================
FILE: assets/chezmoi.io/docs/reference/commands/ignored.md
================================================
# `ignored`

Print the list of entries ignored by chezmoi.

## Common flags

### `-0`, `--nul-path-separator`

--8<-- "common-flags/nul-path-separator.md"

### `-t`, `--tree`

--8<-- "common-flags/tree.md"

## Examples

```sh
chezmoi ignored
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/import.md
================================================
# `import` *filename*

Import the source state from an archive file in to a directory in the source
state. This is primarily used to make subdirectories of your home directory
exactly match the contents of a downloaded archive. You will generally always
want to set the `--destination`, `--exact`, and `--remove-destination` flags.

The supported archive formats are `rar`, `tar`, `tar.gz`, `tgz`, `tar.bz2`,
`tbz2`, `txz`, `tar.zst`, and `zip`.

## Flags

### `-d`, `--destination` *directory*

Set the destination (in the source state) where the archive will be imported.

### `--exact`

Set the `exact` attribute on all imported directories.

### `-r`, `--remove-destination`

Remove destination (in the source state) before importing.

### `--strip-components` *n*

Strip *n* leading components from paths.

## Common flags

### `-x`, `--exclude` *types*

--8<-- "common-flags/exclude.md"

### `-i`, `--include` *types*

--8<-- "common-flags/include.md"

## Examples

```sh
curl -s -L -o ${TMPDIR}/oh-my-zsh-master.tar.gz https://github.com/ohmyzsh/ohmyzsh/archive/master.tar.gz
mkdir -p $(chezmoi source-path)/dot_oh-my-zsh
chezmoi import --strip-components 1 --destination ~/.oh-my-zsh ${TMPDIR}/oh-my-zsh-master.tar.gz
```


================================================
FILE: assets/chezmoi.io/docs/reference/commands/index.md
================================================
# Commands

This section provides documentation for chezmoi commands and their arguments.

All commands accept [global flags][global], though some flags may have no effect
on certain commands. Many comm
Download .txt
gitextract_mhbu3wo7/

├── .config/
│   ├── capslock-summary.json
│   ├── editorconfig-checker.json
│   ├── golangci.yml
│   ├── goreleaser.yaml
│   └── markdownlint-cli2.yaml
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── CODE_OF_CONDUCT.md
│   ├── CONTRIBUTING.md
│   ├── ISSUE_TEMPLATE/
│   │   ├── 01_support_request.md
│   │   ├── 02_feature_request.md
│   │   └── 03_bug_report.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── SECURITY.md
│   ├── actions/
│   │   ├── free-disk-space/
│   │   │   └── action.yml
│   │   └── setup-go/
│   │       └── action.yml
│   └── workflows/
│       ├── clear-pr-caches.yml
│       ├── govulncheck.yml
│       ├── installer.yml
│       ├── lock-threads.yml
│       └── main.yml
├── .gitignore
├── LICENSE
├── Makefile
├── README.md
├── assets/
│   ├── chezmoi.io/
│   │   ├── .gitignore
│   │   ├── CNAME
│   │   ├── docs/
│   │   │   ├── chezmoi/
│   │   │   │   └── index.html
│   │   │   ├── comparison-table.md
│   │   │   ├── developer-guide/
│   │   │   │   ├── architecture.md
│   │   │   │   ├── building-on-top-of-chezmoi.md
│   │   │   │   ├── contributing-changes.md
│   │   │   │   ├── index.md
│   │   │   │   ├── install-script.md
│   │   │   │   ├── packaging.md
│   │   │   │   ├── releases.md
│   │   │   │   ├── security.md
│   │   │   │   ├── testing.md
│   │   │   │   ├── using-make.md
│   │   │   │   └── website.md
│   │   │   ├── docs.go
│   │   │   ├── extra/
│   │   │   │   └── refresh_on_toggle_dark_light.js
│   │   │   ├── hooks.py
│   │   │   ├── index.md.tmpl
│   │   │   ├── install.md.tmpl
│   │   │   ├── license.md
│   │   │   ├── links/
│   │   │   │   ├── articles.md.tmpl
│   │   │   │   ├── articles.md.yaml
│   │   │   │   ├── dotfile-repos.md
│   │   │   │   ├── podcasts.md.tmpl
│   │   │   │   ├── podcasts.md.yaml
│   │   │   │   ├── related-software.md
│   │   │   │   ├── social-media.md
│   │   │   │   ├── videos.md.tmpl
│   │   │   │   └── videos.md.yaml
│   │   │   ├── migrating-from-another-dotfile-manager.md
│   │   │   ├── quick-start.md
│   │   │   ├── reference/
│   │   │   │   ├── application-order.md
│   │   │   │   ├── command-line-flags/
│   │   │   │   │   ├── common.md
│   │   │   │   │   ├── developer.md
│   │   │   │   │   ├── global.md
│   │   │   │   │   └── index.md
│   │   │   │   ├── commands/
│   │   │   │   │   ├── add.md
│   │   │   │   │   ├── age-keygen.md
│   │   │   │   │   ├── age.md
│   │   │   │   │   ├── apply.md
│   │   │   │   │   ├── archive.md
│   │   │   │   │   ├── cat-config.md
│   │   │   │   │   ├── cat.md
│   │   │   │   │   ├── cd.md
│   │   │   │   │   ├── chattr.md
│   │   │   │   │   ├── commands.go
│   │   │   │   │   ├── commands_test.go
│   │   │   │   │   ├── completion.md
│   │   │   │   │   ├── data.md
│   │   │   │   │   ├── decrypt.md
│   │   │   │   │   ├── destroy.md
│   │   │   │   │   ├── diff.md
│   │   │   │   │   ├── docker.md
│   │   │   │   │   ├── doctor.md
│   │   │   │   │   ├── dump-config.md
│   │   │   │   │   ├── dump.md
│   │   │   │   │   ├── edit-config-template.md
│   │   │   │   │   ├── edit-config.md
│   │   │   │   │   ├── edit-encrypted.md
│   │   │   │   │   ├── edit.md
│   │   │   │   │   ├── encrypt.md
│   │   │   │   │   ├── execute-template.md
│   │   │   │   │   ├── forget.md
│   │   │   │   │   ├── generate.md
│   │   │   │   │   ├── git.md
│   │   │   │   │   ├── help.md
│   │   │   │   │   ├── ignored.md
│   │   │   │   │   ├── import.md
│   │   │   │   │   ├── index.md
│   │   │   │   │   ├── init.md
│   │   │   │   │   ├── license.md
│   │   │   │   │   ├── list.md
│   │   │   │   │   ├── manage.md
│   │   │   │   │   ├── managed.md
│   │   │   │   │   ├── merge-all.md
│   │   │   │   │   ├── merge.md
│   │   │   │   │   ├── podman.md
│   │   │   │   │   ├── purge.md
│   │   │   │   │   ├── re-add.md
│   │   │   │   │   ├── remove.md
│   │   │   │   │   ├── rm.md
│   │   │   │   │   ├── secret.md
│   │   │   │   │   ├── source-path.md
│   │   │   │   │   ├── ssh.md
│   │   │   │   │   ├── state.md
│   │   │   │   │   ├── status.md
│   │   │   │   │   ├── target-path.md
│   │   │   │   │   ├── unmanage.md
│   │   │   │   │   ├── unmanaged.md
│   │   │   │   │   ├── update.md
│   │   │   │   │   ├── upgrade.md
│   │   │   │   │   └── verify.md
│   │   │   │   ├── concepts.md
│   │   │   │   ├── configuration-file/
│   │   │   │   │   ├── editor.md
│   │   │   │   │   ├── hooks.md
│   │   │   │   │   ├── index.md
│   │   │   │   │   ├── interpreters.md
│   │   │   │   │   ├── pinentry.md
│   │   │   │   │   ├── textconv.md
│   │   │   │   │   ├── umask.md
│   │   │   │   │   ├── variables.md.tmpl
│   │   │   │   │   ├── variables.md.yaml
│   │   │   │   │   └── warnings.md
│   │   │   │   ├── index.md
│   │   │   │   ├── plugins.md
│   │   │   │   ├── release-history.md.tmpl
│   │   │   │   ├── source-state-attributes.md
│   │   │   │   ├── special-directories/
│   │   │   │   │   ├── chezmoidata.md
│   │   │   │   │   ├── chezmoiexternals.md
│   │   │   │   │   ├── chezmoiscripts.md
│   │   │   │   │   ├── chezmoitemplates.md
│   │   │   │   │   └── index.md
│   │   │   │   ├── special-files/
│   │   │   │   │   ├── chezmoi-format-tmpl.md
│   │   │   │   │   ├── chezmoidata-format.md
│   │   │   │   │   ├── chezmoiexternal-format.md
│   │   │   │   │   ├── chezmoiignore.md
│   │   │   │   │   ├── chezmoiremove.md
│   │   │   │   │   ├── chezmoiroot.md
│   │   │   │   │   ├── chezmoiversion.md
│   │   │   │   │   └── index.md
│   │   │   │   ├── target-types.md
│   │   │   │   └── templates/
│   │   │   │       ├── 1password-functions/
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── onepassword.md
│   │   │   │       │   ├── onepasswordDetailsFields.md
│   │   │   │       │   ├── onepasswordDocument.md
│   │   │   │       │   ├── onepasswordItemFields.md
│   │   │   │       │   └── onepasswordRead.md
│   │   │   │       ├── aws-secrets-manager-functions/
│   │   │   │       │   ├── awsSecretsManager.md
│   │   │   │       │   ├── awsSecretsManagerRaw.md
│   │   │   │       │   └── index.md
│   │   │   │       ├── azure-key-vault-functions/
│   │   │   │       │   └── azureKeyVault.md
│   │   │   │       ├── bitwarden-functions/
│   │   │   │       │   ├── bitwarden.md
│   │   │   │       │   ├── bitwardenAttachment.md
│   │   │   │       │   ├── bitwardenAttachmentByRef.md
│   │   │   │       │   ├── bitwardenFields.md
│   │   │   │       │   ├── bitwardenSecrets.md
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── rbw.md
│   │   │   │       │   └── rbwFields.md
│   │   │   │       ├── dashlane-functions/
│   │   │   │       │   ├── dashlaneNote.md
│   │   │   │       │   ├── dashlanePassword.md
│   │   │   │       │   └── index.md
│   │   │   │       ├── directives.md
│   │   │   │       ├── doppler-functions/
│   │   │   │       │   ├── doppler.md
│   │   │   │       │   ├── dopplerProjectJson.md
│   │   │   │       │   └── index.md
│   │   │   │       ├── ejson-functions/
│   │   │   │       │   ├── ejsonDecrypt.md
│   │   │   │       │   ├── ejsonDecryptWithKey.md
│   │   │   │       │   └── index.md
│   │   │   │       ├── functions/
│   │   │   │       │   ├── abortEmpty.md
│   │   │   │       │   ├── comment.md
│   │   │   │       │   ├── completion.md
│   │   │   │       │   ├── decrypt.md
│   │   │   │       │   ├── deleteValueAtPath.md
│   │   │   │       │   ├── encrypt.md
│   │   │   │       │   ├── ensureLinePrefix.md
│   │   │   │       │   ├── eqFold.md
│   │   │   │       │   ├── exec.md
│   │   │   │       │   ├── findExecutable.md
│   │   │   │       │   ├── findOneExecutable.md
│   │   │   │       │   ├── fromIni.md
│   │   │   │       │   ├── fromJson.md
│   │   │   │       │   ├── fromJsonc.md
│   │   │   │       │   ├── fromToml.md
│   │   │   │       │   ├── fromYaml.md
│   │   │   │       │   ├── getRedirectedURL.md
│   │   │   │       │   ├── glob.md
│   │   │   │       │   ├── hexDecode.md
│   │   │   │       │   ├── hexEncode.md
│   │   │   │       │   ├── include.md
│   │   │   │       │   ├── includeTemplate.md
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── ioreg.md
│   │   │   │       │   ├── isExecutable.md
│   │   │   │       │   ├── joinPath.md
│   │   │   │       │   ├── jq.md
│   │   │   │       │   ├── lookPath.md
│   │   │   │       │   ├── lstat.md
│   │   │   │       │   ├── mozillaInstallHash.md
│   │   │   │       │   ├── output.md
│   │   │   │       │   ├── outputList.md
│   │   │   │       │   ├── pruneEmptyDicts.md
│   │   │   │       │   ├── quoteList.md
│   │   │   │       │   ├── replaceAllRegex.md
│   │   │   │       │   ├── setValueAtPath.md
│   │   │   │       │   ├── stat.md
│   │   │   │       │   ├── toIni.md
│   │   │   │       │   ├── toPrettyJson.md
│   │   │   │       │   ├── toString.md
│   │   │   │       │   ├── toStrings.md
│   │   │   │       │   ├── toToml.md
│   │   │   │       │   ├── toYaml.md
│   │   │   │       │   └── warnf.md
│   │   │   │       ├── github-functions/
│   │   │   │       │   ├── gitHubKeys.md
│   │   │   │       │   ├── gitHubLatestRelease.md
│   │   │   │       │   ├── gitHubLatestReleaseAssetURL.md
│   │   │   │       │   ├── gitHubLatestTag.md
│   │   │   │       │   ├── gitHubRelease.md
│   │   │   │       │   ├── gitHubReleaseAssetURL.md
│   │   │   │       │   ├── gitHubReleases.md
│   │   │   │       │   ├── gitHubTags.md
│   │   │   │       │   └── index.md
│   │   │   │       ├── gopass-functions/
│   │   │   │       │   ├── gopass.md
│   │   │   │       │   ├── gopassRaw.md
│   │   │   │       │   └── index.md
│   │   │   │       ├── index.md
│   │   │   │       ├── init-functions/
│   │   │   │       │   ├── exit.md
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── promptBool.md
│   │   │   │       │   ├── promptBoolOnce.md
│   │   │   │       │   ├── promptChoice.md
│   │   │   │       │   ├── promptChoiceOnce.md
│   │   │   │       │   ├── promptInt.md
│   │   │   │       │   ├── promptIntOnce.md
│   │   │   │       │   ├── promptMultichoice.md
│   │   │   │       │   ├── promptMultichoiceOnce.md
│   │   │   │       │   ├── promptString.md
│   │   │   │       │   ├── promptStringOnce.md
│   │   │   │       │   ├── stdinIsATTY.md
│   │   │   │       │   └── writeToStdout.md
│   │   │   │       ├── keepassxc-functions/
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── keepassxc.md
│   │   │   │       │   ├── keepassxcAttachment.md
│   │   │   │       │   └── keepassxcAttribute.md
│   │   │   │       ├── keeper-functions/
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── keeper.md
│   │   │   │       │   ├── keeperDataFields.md
│   │   │   │       │   └── keeperFindPassword.md
│   │   │   │       ├── keyring-functions/
│   │   │   │       │   └── keyring.md
│   │   │   │       ├── lastpass-functions/
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── lastpass.md
│   │   │   │       │   └── lastpassRaw.md
│   │   │   │       ├── pass-functions/
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── pass.md
│   │   │   │       │   ├── passFields.md
│   │   │   │       │   └── passRaw.md
│   │   │   │       ├── passhole-functions/
│   │   │   │       │   ├── index.md
│   │   │   │       │   └── passhole.md
│   │   │   │       ├── protonpass-functions/
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── protonPass.md
│   │   │   │       │   └── protonPassJSON.md
│   │   │   │       ├── secret-functions/
│   │   │   │       │   ├── index.md
│   │   │   │       │   ├── secret.md
│   │   │   │       │   └── secretJSON.md
│   │   │   │       ├── variables.md
│   │   │   │       └── vault-functions/
│   │   │   │           └── vault.md
│   │   │   ├── user-guide/
│   │   │   │   ├── advanced/
│   │   │   │   │   ├── customize-your-source-directory.md
│   │   │   │   │   ├── install-packages-declaratively.md
│   │   │   │   │   ├── install-your-password-manager-on-init.md
│   │   │   │   │   ├── migrate-away-from-chezmoi.md
│   │   │   │   │   └── use-chezmoi-with-watchman.md
│   │   │   │   ├── command-overview.md
│   │   │   │   ├── daily-operations.md
│   │   │   │   ├── encryption/
│   │   │   │   │   ├── age.md
│   │   │   │   │   ├── gpg.md
│   │   │   │   │   ├── index.md
│   │   │   │   │   ├── rage.md
│   │   │   │   │   └── transparent.md
│   │   │   │   ├── frequently-asked-questions/
│   │   │   │   │   ├── design.md
│   │   │   │   │   ├── encryption.md
│   │   │   │   │   ├── general.md
│   │   │   │   │   ├── troubleshooting.md
│   │   │   │   │   └── usage.md
│   │   │   │   ├── include-files-from-elsewhere.md
│   │   │   │   ├── machines/
│   │   │   │   │   ├── containers-and-vms.md
│   │   │   │   │   ├── general.md
│   │   │   │   │   ├── linux.md
│   │   │   │   │   ├── macos.md
│   │   │   │   │   └── windows.md
│   │   │   │   ├── manage-different-types-of-file.md
│   │   │   │   ├── manage-machine-to-machine-differences.md
│   │   │   │   ├── password-managers/
│   │   │   │   │   ├── 1password.md
│   │   │   │   │   ├── aws-secrets-manager.md
│   │   │   │   │   ├── azure-key-vault.md
│   │   │   │   │   ├── bitwarden.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── dashlane.md
│   │   │   │   │   ├── doppler.md
│   │   │   │   │   ├── ejson.md
│   │   │   │   │   ├── gopass.md
│   │   │   │   │   ├── index.md
│   │   │   │   │   ├── keepassxc.md
│   │   │   │   │   ├── keeper.md
│   │   │   │   │   ├── keychain-and-windows-credentials-manager.md
│   │   │   │   │   ├── lastpass.md
│   │   │   │   │   ├── pass.md
│   │   │   │   │   ├── passhole.md
│   │   │   │   │   ├── proton-pass.md
│   │   │   │   │   └── vault.md
│   │   │   │   ├── setup.md
│   │   │   │   ├── templating.md
│   │   │   │   ├── tools/
│   │   │   │   │   ├── diff.md
│   │   │   │   │   ├── editor.md
│   │   │   │   │   ├── http-or-socks5-proxy.md
│   │   │   │   │   └── merge.md
│   │   │   │   └── use-scripts-to-perform-actions.md
│   │   │   ├── voice_30-04-2025_09-20-13.ogx
│   │   │   ├── voice_30-04-2025_09-20-48.ogx
│   │   │   ├── voice_30-04-2025_09-20-56.ogx
│   │   │   ├── what-does-chezmoi-do.md
│   │   │   └── why-use-chezmoi.md
│   │   ├── mkdocs.yml
│   │   └── snippets/
│   │       ├── common-flags/
│   │       │   ├── exclude.md
│   │       │   ├── format.md
│   │       │   ├── include.md
│   │       │   ├── init.md
│   │       │   ├── nul-path-separator.md
│   │       │   ├── override-data-file.md
│   │       │   ├── override-data.md
│   │       │   ├── parent-dirs.md
│   │       │   ├── path-style.md
│   │       │   ├── recursive.md
│   │       │   └── tree.md
│   │       └── config-format.md
│   ├── cosign/
│   │   ├── cosign.key
│   │   └── cosign.pub
│   ├── docker/
│   │   ├── alpine.Dockerfile
│   │   ├── archlinux.Dockerfile
│   │   ├── entrypoint.sh
│   │   ├── fedora.Dockerfile
│   │   ├── test.sh
│   │   └── voidlinux.Dockerfile
│   ├── get.chezmoi.io/
│   │   ├── .nojekyll
│   │   └── CNAME
│   ├── images/
│   │   ├── logotype_black.ai
│   │   └── logotype_blue.ai
│   ├── scripts/
│   │   ├── format-yaml.py
│   │   ├── install-local-bin.sh
│   │   ├── install.ps1
│   │   ├── install.sh
│   │   └── stow-to-chezmoi.sh
│   ├── templates/
│   │   ├── COMMIT_MESSAGE.tmpl
│   │   ├── install-init-shell.sh.tmpl
│   │   ├── install.sh
│   │   ├── templates.go
│   │   └── versioninfo.json.tmpl
│   └── vagrant/
│       ├── freebsd14.Vagrantfile
│       ├── freebsd14.test-chezmoi.sh
│       ├── openbsd7.Vagrantfile
│       ├── openbsd7.test-chezmoi.sh
│       └── test.sh
├── bin/
│   └── .gitignore
├── completions/
│   ├── chezmoi-completion.bash
│   ├── chezmoi.fish
│   ├── chezmoi.ps1
│   └── chezmoi.zsh
├── go.mod
├── go.sum
├── internal/
│   ├── archivetest/
│   │   ├── archivetest.go
│   │   ├── tar.go
│   │   ├── tar_test.go
│   │   ├── zip.go
│   │   └── zip_test.go
│   ├── chezmoi/
│   │   ├── abspath.go
│   │   ├── abspath_test.go
│   │   ├── actualstateentry.go
│   │   ├── ageencryption.go
│   │   ├── ageencryption_test.go
│   │   ├── archive.go
│   │   ├── archive_test.go
│   │   ├── archivereadersystem.go
│   │   ├── archivereadersystem_test.go
│   │   ├── attr.go
│   │   ├── attr_test.go
│   │   ├── autotemplate.go
│   │   ├── autotemplate_test.go
│   │   ├── boltpersistentstate.go
│   │   ├── boltpersistentstate_test.go
│   │   ├── byteordermarks.go
│   │   ├── chezmoi.go
│   │   ├── chezmoi_test.go
│   │   ├── chezmoi_unix.go
│   │   ├── chezmoi_unix_test.go
│   │   ├── chezmoi_windows.go
│   │   ├── compression.go
│   │   ├── data.go
│   │   ├── data_test.go
│   │   ├── debugencryption.go
│   │   ├── debugpersistentstate.go
│   │   ├── debugsystem.go
│   │   ├── debugsystem_test.go
│   │   ├── diff.go
│   │   ├── dryrunsystem.go
│   │   ├── dryrunsystem_test.go
│   │   ├── dumpsystem.go
│   │   ├── dumpsystem_test.go
│   │   ├── duration.go
│   │   ├── encryption.go
│   │   ├── encryption_test.go
│   │   ├── entrystate.go
│   │   ├── entrystate_test.go
│   │   ├── entrytypefilter.go
│   │   ├── entrytypeset.go
│   │   ├── entrytypeset_test.go
│   │   ├── erroronwritesystem.go
│   │   ├── erroronwritesystem_test.go
│   │   ├── errors.go
│   │   ├── externaldiffsystem.go
│   │   ├── externaldiffsystem_test.go
│   │   ├── findexecutable.go
│   │   ├── findexecutable_darwin_test.go
│   │   ├── findexecutable_unix_test.go
│   │   ├── findexecutable_windows_test.go
│   │   ├── format.go
│   │   ├── format_test.go
│   │   ├── gitdiffsystem.go
│   │   ├── gitdiffsystem_test.go
│   │   ├── github.go
│   │   ├── glob.go
│   │   ├── gpgencryption.go
│   │   ├── gpgencryption_test.go
│   │   ├── hexbytes.go
│   │   ├── hexbytes_test.go
│   │   ├── interpreter.go
│   │   ├── lookpath.go
│   │   ├── mockpersistentstate.go
│   │   ├── mockpersistentstate_test.go
│   │   ├── mode.go
│   │   ├── noencryption.go
│   │   ├── noencryption_test.go
│   │   ├── nullpersistentstate.go
│   │   ├── nullsystem.go
│   │   ├── nullsystem_test.go
│   │   ├── path_unix.go
│   │   ├── path_windows.go
│   │   ├── path_windows_test.go
│   │   ├── patternset.go
│   │   ├── patternset_test.go
│   │   ├── persistentstate.go
│   │   ├── persistentstate_test.go
│   │   ├── readonlysystem.go
│   │   ├── readonlysystem_test.go
│   │   ├── realsystem.go
│   │   ├── realsystem_test.go
│   │   ├── realsystem_unix.go
│   │   ├── realsystem_windows.go
│   │   ├── recursivemerge.go
│   │   ├── recursivemerge_test.go
│   │   ├── refreshexternals.go
│   │   ├── relpath.go
│   │   ├── sourcerelpath.go
│   │   ├── sourcerelpath_test.go
│   │   ├── sourcestate.go
│   │   ├── sourcestate_test.go
│   │   ├── sourcestateentry.go
│   │   ├── sourcestatetreenode.go
│   │   ├── sourcestatetreenode_test.go
│   │   ├── system.go
│   │   ├── system_test.go
│   │   ├── targetstateentry.go
│   │   ├── targetstateentry_test.go
│   │   ├── tarwritersystem.go
│   │   ├── tarwritersystem_test.go
│   │   ├── template.go
│   │   ├── template_test.go
│   │   ├── templatefuncs.go
│   │   ├── transparentencryption.go
│   │   ├── transparentencryption_test.go
│   │   ├── zipwritersystem.go
│   │   └── zipwritersystem_test.go
│   ├── chezmoiassert/
│   │   └── chezmoiassert.go
│   ├── chezmoibubbles/
│   │   ├── boolinputmodel.go
│   │   ├── boolinputmodel_test.go
│   │   ├── chezmoibubbles.go
│   │   ├── chezmoibubbles_test.go
│   │   ├── choiceinputmodel.go
│   │   ├── choiceinputmodel_test.go
│   │   ├── intinputmodel.go
│   │   ├── intinputmodel_test.go
│   │   ├── multichoiceinputmodel.go
│   │   ├── passwordinputmodel.go
│   │   ├── passwordinputmodel_test.go
│   │   ├── stringinputmodel.go
│   │   ├── stringinputmodel_test.go
│   │   └── test-all.sh
│   ├── chezmoierrors/
│   │   └── chezmoierrors.go
│   ├── chezmoigit/
│   │   ├── chezmoigit.go
│   │   ├── status.go
│   │   └── status_test.go
│   ├── chezmoilog/
│   │   ├── chezmoilog.go
│   │   ├── nullhandler.go
│   │   └── nullhandler_test.go
│   ├── chezmoiset/
│   │   └── chezmoiset.go
│   ├── chezmoitest/
│   │   ├── chezmoitest.go
│   │   ├── chezmoitest_test.go
│   │   ├── chezmoitest_unix.go
│   │   └── chezmoitest_windows.go
│   ├── cmd/
│   │   ├── addcmd.go
│   │   ├── addcmd_test.go
│   │   ├── agecmd.go
│   │   ├── agekeygencmd.go
│   │   ├── annotation.go
│   │   ├── applycmd.go
│   │   ├── applycmd_test.go
│   │   ├── archivecmd.go
│   │   ├── autobool.go
│   │   ├── awssecretsmanagertemplatefuncs.go
│   │   ├── azurekeyvaulttemplatefuncs.go
│   │   ├── bitwardensecretstemplatefuncs.go
│   │   ├── bitwardentemplatefuncs.go
│   │   ├── catcmd.go
│   │   ├── catcmd_test.go
│   │   ├── catconfigcmd.go
│   │   ├── cdcmd.go
│   │   ├── chattrcmd.go
│   │   ├── chattrcmd_test.go
│   │   ├── choiceflag.go
│   │   ├── cmd.go
│   │   ├── cmd_test.go
│   │   ├── completioncmd.go
│   │   ├── config.go
│   │   ├── config_tags_test.go
│   │   ├── config_test.go
│   │   ├── dashlanetemplatefuncs.go
│   │   ├── datacmd.go
│   │   ├── datacmd_test.go
│   │   ├── dataformat.go
│   │   ├── decryptcmd.go
│   │   ├── destroycmd.go
│   │   ├── diffcmd.go
│   │   ├── diffcmd_test.go
│   │   ├── dockercmd.go
│   │   ├── doctorcmd.go
│   │   ├── doctorcmd_unix.go
│   │   ├── doctorcmd_windows.go
│   │   ├── dopplertemplatefuncs.go
│   │   ├── dumpcmd.go
│   │   ├── dumpconfigcmd.go
│   │   ├── editcmd.go
│   │   ├── editconfigcmd.go
│   │   ├── editconfigtemplatecmd.go
│   │   ├── editencryptedcmd.go
│   │   ├── ejsontemplatefuncs.go
│   │   ├── encryptcmd.go
│   │   ├── encryptiontemplatefuncs.go
│   │   ├── errors.go
│   │   ├── executetemplatecmd.go
│   │   ├── forgetcmd.go
│   │   ├── generatecmd.go
│   │   ├── gitcmd.go
│   │   ├── githubtemplatefuncs.go
│   │   ├── gopasstemplatefuncs.go
│   │   ├── helpcmd.go
│   │   ├── helps.gen.go
│   │   ├── ignoredcmd.go
│   │   ├── importcmd.go
│   │   ├── importcmd_test.go
│   │   ├── initcmd.go
│   │   ├── initcmd_test.go
│   │   ├── inittemplatefuncs.go
│   │   ├── inittemplatefuncs_test.go
│   │   ├── interactivetemplatefuncs.go
│   │   ├── internaltestcmd.go
│   │   ├── interpreters.go
│   │   ├── interpreters_test.go
│   │   ├── interpreters_unix_test.go
│   │   ├── interpreters_windows_test.go
│   │   ├── keepassxctemplatefuncs.go
│   │   ├── keepassxctemplatefuncs_test.go
│   │   ├── keepertemplatefuncs.go
│   │   ├── keyringtemplatefuncs.go
│   │   ├── keyringtemplatefuncs_freebsdnocgo.go
│   │   ├── lastpasstemplatefuncs.go
│   │   ├── lastpasstemplatefuncs_test.go
│   │   ├── lazyscryptidentity.go
│   │   ├── lazywriter.go
│   │   ├── license.gen.go
│   │   ├── licensecmd.go
│   │   ├── mackupcmd_darwin.go
│   │   ├── mackupcmd_darwin_test.go
│   │   ├── mackupcmd_nodarwin.go
│   │   ├── main_test.go
│   │   ├── managedcmd.go
│   │   ├── managedcmd_test.go
│   │   ├── mergeallcmd.go
│   │   ├── mergecmd.go
│   │   ├── mockcommand.cmd.tmpl
│   │   ├── mockcommand.tmpl
│   │   ├── noupgradecmd.go
│   │   ├── onepasswordtemplatefuncs.go
│   │   ├── onepasswordtemplatefuncs_test.go
│   │   ├── passholetemplatefuncs.go
│   │   ├── passtemplatefuncs.go
│   │   ├── pathlist.go
│   │   ├── pathlist_test.go
│   │   ├── pathstyle.go
│   │   ├── pinentry.go
│   │   ├── prompt.go
│   │   ├── protonpasstemplatefuncs.go
│   │   ├── purgecmd.go
│   │   ├── rbwtemplatefuncs.go
│   │   ├── readdcmd.go
│   │   ├── readdcmd_test.go
│   │   ├── readhttpresponse.go
│   │   ├── readhttpresponse_test.go
│   │   ├── removecmd.go
│   │   ├── secretcmd.go
│   │   ├── secretkeyringcmd.go
│   │   ├── secretkeyringcmd_freebsdnocgo.go
│   │   ├── secrettemplatefuncs.go
│   │   ├── shellquote.go
│   │   ├── shellquote_test.go
│   │   ├── sourcepathcmd.go
│   │   ├── sshcmd.go
│   │   ├── statecmd.go
│   │   ├── statuscmd.go
│   │   ├── statuscmd_test.go
│   │   ├── symlinks_test.go
│   │   ├── targetpathcmd.go
│   │   ├── templatefuncs.go
│   │   ├── templatefuncs_test.go
│   │   ├── testdata/
│   │   │   └── scripts/
│   │   │       ├── add.txtar
│   │   │       ├── addattributes.txtar
│   │   │       ├── addautotemplate.txtar
│   │   │       ├── addencrypted.txtar
│   │   │       ├── addnew.txtar
│   │   │       ├── addsecrets.txtar
│   │   │       ├── age.txtar
│   │   │       ├── ageencryption.txtar
│   │   │       ├── ageencryptionsymmetric.txtar
│   │   │       ├── agekeygen.txtar
│   │   │       ├── apply.txtar
│   │   │       ├── applychmod_unix.txtar
│   │   │       ├── applyexact.txtar
│   │   │       ├── applyremove.txtar
│   │   │       ├── applyskipencrypted.txtar
│   │   │       ├── applysourcepath.txtar
│   │   │       ├── applystate.txtar
│   │   │       ├── applytype.txtar
│   │   │       ├── applyverbose.txtar
│   │   │       ├── archivetar.txtar
│   │   │       ├── archivezip.txtar
│   │   │       ├── autocommit.txtar
│   │   │       ├── autopush.txtar
│   │   │       ├── bitwarden.txtar
│   │   │       ├── bitwardenunlock.txtar
│   │   │       ├── builtinage.txtar
│   │   │       ├── builtingit.txtar
│   │   │       ├── cat.txtar
│   │   │       ├── catconfig.txtar
│   │   │       ├── cd_unix.txtar
│   │   │       ├── cd_windows.txtar
│   │   │       ├── chattr.txtar
│   │   │       ├── chattrencrypted.txtar
│   │   │       ├── completion.txtar
│   │   │       ├── completion_unix.txtar
│   │   │       ├── config.txtar
│   │   │       ├── configstate.txtar
│   │   │       ├── create.txtar
│   │   │       ├── dashlane.txtar
│   │   │       ├── data.txtar
│   │   │       ├── debug.txtar
│   │   │       ├── destroy.txtar
│   │   │       ├── diff.txtar
│   │   │       ├── diffcommand_unix.txtar
│   │   │       ├── diffcommand_windows.txtar
│   │   │       ├── discussion4732.txtar
│   │   │       ├── doctor_unix.txtar
│   │   │       ├── doctor_windows.txtar
│   │   │       ├── doppler.txtar
│   │   │       ├── dumpconfig.txtar
│   │   │       ├── dumpjson.txtar
│   │   │       ├── dumpyaml.txtar
│   │   │       ├── edgecases.txtar
│   │   │       ├── edgecasesumask.txtar
│   │   │       ├── edit.txtar
│   │   │       ├── editconfig.txtar
│   │   │       ├── editconfigtemplate.txtar
│   │   │       ├── editencrypted.txtar
│   │   │       ├── edithardlink.txtar
│   │   │       ├── ejson.txtar
│   │   │       ├── encryptiontemplatefuncs.txtar
│   │   │       ├── errors.txtar
│   │   │       ├── exclude.txtar
│   │   │       ├── exectemplatefunc.txtar
│   │   │       ├── executetemplate.txtar
│   │   │       ├── external.txtar
│   │   │       ├── externalarchiveinclude.txtar
│   │   │       ├── externalcompression.txtar
│   │   │       ├── externaldiff.txtar
│   │   │       ├── externaldir.txtar
│   │   │       ├── externalencrypted.txtar
│   │   │       ├── externalfileurl.txtar
│   │   │       ├── externalfilter.txtar
│   │   │       ├── externalgitrepo.txtar
│   │   │       ├── externalguess.txtar
│   │   │       ├── externalrar.txtar
│   │   │       ├── externalzip.txtar
│   │   │       ├── forget.txtar
│   │   │       ├── generate.txtar
│   │   │       ├── git.txtar
│   │   │       ├── githubtemplatefuncs.txtar
│   │   │       ├── gitleaks.txtar
│   │   │       ├── gopass.txtar
│   │   │       ├── gpg.txtar
│   │   │       ├── gpgencryption.txtar
│   │   │       ├── gpgencryptionsymmetric.txtar
│   │   │       ├── help.txtar
│   │   │       ├── hooks.txtar
│   │   │       ├── hooks_windows.txtar
│   │   │       ├── ignore.txtar
│   │   │       ├── ignored.txtar
│   │   │       ├── import.txtar
│   │   │       ├── importtarzst.txtar
│   │   │       ├── importxz.txtar
│   │   │       ├── importzip.txtar
│   │   │       ├── init.txtar
│   │   │       ├── initconfig.txtar
│   │   │       ├── initgitlfs.txtar
│   │   │       ├── inittemplatefuncs.txtar
│   │   │       ├── issue1161.txtar
│   │   │       ├── issue1213.txtar
│   │   │       ├── issue1237.txtar
│   │   │       ├── issue1365.txtar
│   │   │       ├── issue1666.txtar
│   │   │       ├── issue1794.txtar
│   │   │       ├── issue1832.txtar
│   │   │       ├── issue1866.txtar
│   │   │       ├── issue1869.txtar
│   │   │       ├── issue2016.txtar
│   │   │       ├── issue2092.txtar
│   │   │       ├── issue2132.txtar
│   │   │       ├── issue2137.txtar
│   │   │       ├── issue2177.txtar
│   │   │       ├── issue2283.txtar
│   │   │       ├── issue2300.txtar
│   │   │       ├── issue2302.txtar
│   │   │       ├── issue2315.txtar
│   │   │       ├── issue2354.txtar
│   │   │       ├── issue2380.txtar
│   │   │       ├── issue2427.txtar
│   │   │       ├── issue2500.txtar
│   │   │       ├── issue2510.txtar
│   │   │       ├── issue2573.txtar
│   │   │       ├── issue2577.txtar
│   │   │       ├── issue2597.txtar
│   │   │       ├── issue2599.txtar
│   │   │       ├── issue2609.txtar
│   │   │       ├── issue2628.txtar
│   │   │       ├── issue2695.txtar
│   │   │       ├── issue2752.txtar
│   │   │       ├── issue2820.txtar
│   │   │       ├── issue2858.txtar
│   │   │       ├── issue2861.txtar
│   │   │       ├── issue2865.txtar
│   │   │       ├── issue2934.txtar
│   │   │       ├── issue2937.txtar
│   │   │       ├── issue2942.txtar
│   │   │       ├── issue2954.txtar
│   │   │       ├── issue2964.txtar
│   │   │       ├── issue2977.txtar
│   │   │       ├── issue2995.txtar
│   │   │       ├── issue3005.txtar
│   │   │       ├── issue3008.txtar
│   │   │       ├── issue3051.txtar
│   │   │       ├── issue3064.txtar
│   │   │       ├── issue3113.txtar
│   │   │       ├── issue3126.txtar
│   │   │       ├── issue3127.txtar
│   │   │       ├── issue3163.txtar
│   │   │       ├── issue3206.txtar
│   │   │       ├── issue3232.txtar
│   │   │       ├── issue3240.txtar
│   │   │       ├── issue3257.txtar
│   │   │       ├── issue3268.txtar
│   │   │       ├── issue3325.txtar
│   │   │       ├── issue3344.txtar
│   │   │       ├── issue3349.txtar
│   │   │       ├── issue3371.txtar
│   │   │       ├── issue3374.txtar
│   │   │       ├── issue3414.txtar
│   │   │       ├── issue3415.txtar
│   │   │       ├── issue3418.txtar
│   │   │       ├── issue3421.txtar
│   │   │       ├── issue3510.txtar
│   │   │       ├── issue3525.txtar
│   │   │       ├── issue3582.txtar
│   │   │       ├── issue3590.txtar
│   │   │       ├── issue3602.txtar
│   │   │       ├── issue3630.txtar
│   │   │       ├── issue3652.txtar
│   │   │       ├── issue3666.txtar
│   │   │       ├── issue3693.txtar
│   │   │       ├── issue3703.txtar
│   │   │       ├── issue3744.txtar
│   │   │       ├── issue3772.txtar
│   │   │       ├── issue3887.txtar
│   │   │       ├── issue3891.txtar
│   │   │       ├── issue3987.txtar
│   │   │       ├── issue4002.txtar
│   │   │       ├── issue4012.txtar
│   │   │       ├── issue4024.txtar
│   │   │       ├── issue4027.txtar
│   │   │       ├── issue4104.txtar
│   │   │       ├── issue4181.txtar
│   │   │       ├── issue4315.txtar
│   │   │       ├── issue4454.txtar
│   │   │       ├── issue4479.txtar
│   │   │       ├── issue4496.txtar
│   │   │       ├── issue4500.txtar
│   │   │       ├── issue4634.txtar
│   │   │       ├── issue4647.txtar
│   │   │       ├── issue4656.txtar
│   │   │       ├── issue4662.txtar
│   │   │       ├── issue4703.txtar
│   │   │       ├── issue4727.txtar
│   │   │       ├── issue4743.txtar
│   │   │       ├── issue4745.txtar
│   │   │       ├── issue4787.txtar
│   │   │       ├── issue4796.txtar
│   │   │       ├── issue4816.txtar
│   │   │       ├── issue4824.txtar
│   │   │       ├── issue4827.txtar
│   │   │       ├── issue4845.txtar
│   │   │       ├── issue4927.txtar
│   │   │       ├── issue796.txtar
│   │   │       ├── keepassxc.txtar
│   │   │       ├── keeper.txtar
│   │   │       ├── keepgoing.txtar
│   │   │       ├── lastpass.txtar
│   │   │       ├── license.txtar
│   │   │       ├── literal.txtar
│   │   │       ├── mackupbrew_darwin.txtar
│   │   │       ├── mackupmacports_darwin.txtar
│   │   │       ├── mackuppip_darwin.txtar
│   │   │       ├── mackuppipx_darwin.txtar
│   │   │       ├── managed.txtar
│   │   │       ├── managedtree.txtar
│   │   │       ├── merge_unix.txtar
│   │   │       ├── mergeall_unix.txtar
│   │   │       ├── mergeencryptedage_unix.txtar
│   │   │       ├── mergeencryptedgpg_unix.txtar
│   │   │       ├── modesymlink.txtar
│   │   │       ├── modify_unix.txtar
│   │   │       ├── modify_windows.txtar
│   │   │       ├── modifyencrypted.txtar
│   │   │       ├── modifypython_windows.txtar
│   │   │       ├── noencryption.txtar
│   │   │       ├── nosourcedir.txtar
│   │   │       ├── onepassword2.txtar
│   │   │       ├── onepassword2connect.txtar
│   │   │       ├── onepassword2service.txtar
│   │   │       ├── options.txtar
│   │   │       ├── pager.txtar
│   │   │       ├── pass.txtar
│   │   │       ├── passhole.txtar
│   │   │       ├── plugin.txtar
│   │   │       ├── protonpass.txtar
│   │   │       ├── purge.txtar
│   │   │       ├── rbw.txtar
│   │   │       ├── re-add.txtar
│   │   │       ├── readd-exact.txtar
│   │   │       ├── readdreencrypt.txtar
│   │   │       ├── remove.txtar
│   │   │       ├── removedir.txtar
│   │   │       ├── root.txtar
│   │   │       ├── runscriptdir_unix.txtar
│   │   │       ├── script.txtar
│   │   │       ├── script_unix.txtar
│   │   │       ├── script_windows.txtar
│   │   │       ├── scriptenv.txtar
│   │   │       ├── scriptinterpreters_unix_pwsh.txtar
│   │   │       ├── scriptinterpreters_windows.txtar
│   │   │       ├── scriptinterpreterstemplate.txtar
│   │   │       ├── scriptonce_unix.txtar
│   │   │       ├── scriptonce_windows.txtar
│   │   │       ├── scriptonchange_unix.txtar
│   │   │       ├── scriptorder_unix.txtar
│   │   │       ├── scriptorder_windows.txtar
│   │   │       ├── scriptperl.txtar
│   │   │       ├── scriptpython.txtar
│   │   │       ├── scriptruby.txtar
│   │   │       ├── scriptsdir_unix.txtar
│   │   │       ├── scriptsubdir_unix.txtar
│   │   │       ├── scriptsubdir_windows.txtar
│   │   │       ├── scripttempdir.txtar
│   │   │       ├── secret.txtar
│   │   │       ├── sourcedir.txtar
│   │   │       ├── sourcepath.txtar
│   │   │       ├── state.txtar
│   │   │       ├── state_unix.txtar
│   │   │       ├── state_windows.txtar
│   │   │       ├── status.txtar
│   │   │       ├── symlinks.txtar
│   │   │       ├── symlinks_windows.txtar
│   │   │       ├── targetpath.txtar
│   │   │       ├── templatedata.txtar
│   │   │       ├── templatedirectives.txtar
│   │   │       ├── templatefuncs.txtar
│   │   │       ├── templatevars.txtar
│   │   │       ├── textconv.txtar
│   │   │       ├── tilde.txtar
│   │   │       ├── transparentencryption.txtar
│   │   │       ├── umask_unix.txtar
│   │   │       ├── unmanaged.txtar
│   │   │       ├── unmanagedtree.txtar
│   │   │       ├── update.txtar
│   │   │       ├── upgrade.txtar
│   │   │       ├── vault.txtar
│   │   │       ├── verify.txtar
│   │   │       ├── version.txtar
│   │   │       └── workingtree.txtar
│   │   ├── textconv.go
│   │   ├── unmanagedcmd.go
│   │   ├── unmanagedcmd_test.go
│   │   ├── updatecmd.go
│   │   ├── upgradecmd.go
│   │   ├── upgradecmd_test.go
│   │   ├── upgradecmd_unix.go
│   │   ├── upgradecmd_windows.go
│   │   ├── util.go
│   │   ├── util_test.go
│   │   ├── util_unix.go
│   │   ├── util_windows.go
│   │   ├── vaulttemplatefuncs.go
│   │   ├── verifycmd.go
│   │   └── verifycmd_test.go
│   └── cmds/
│       ├── execute-template/
│       │   ├── main.go
│       │   └── main_test.go
│       ├── generate-commit/
│       │   └── main.go
│       ├── generate-helps/
│       │   ├── helps.go.tmpl
│       │   └── main.go
│       ├── generate-install.sh/
│       │   ├── install.sh.tmpl
│       │   ├── main.go
│       │   └── main_test.go
│       ├── generate-license/
│       │   ├── license.go.tmpl
│       │   └── main.go
│       ├── hexencode/
│       │   └── main.go
│       ├── lint-commit-messages/
│       │   ├── main.go
│       │   └── main_test.go
│       ├── lint-txtar/
│       │   └── main.go
│       └── lint-whitespace/
│           ├── main.go
│           └── main_test.go
├── main.go
├── main_test.go
└── pyproject.toml
Download .txt
Showing preview only (201K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2141 symbols across 279 files)

FILE: assets/chezmoi.io/docs/hooks.py
  function on_pre_build (line 28) | def on_pre_build(config: MkDocsConfig, **kwargs) -> None:
  function on_files (line 41) | def on_files(files: Files, config: MkDocsConfig, **kwargs) -> Files:
  function on_post_build (line 56) | def on_post_build(config: MkDocsConfig, **kwargs) -> None:

FILE: assets/chezmoi.io/docs/reference/commands/commands_test.go
  function TestFS (line 9) | func TestFS(t *testing.T) {

FILE: assets/scripts/format-yaml.py
  function main (line 11) | def main() -> int:

FILE: internal/archivetest/archivetest.go
  type Dir (line 9) | type Dir struct
  type File (line 15) | type File struct
  type Symlink (line 21) | type Symlink struct

FILE: internal/archivetest/tar.go
  function NewTar (line 13) | func NewTar(root map[string]any) ([]byte, error) {
  function tarAddEntry (line 27) | func tarAddEntry(w *tar.Writer, name string, entry any) error {

FILE: internal/archivetest/tar_test.go
  function TestNewTar (line 12) | func TestNewTar(t *testing.T) {

FILE: internal/archivetest/zip.go
  function NewZip (line 13) | func NewZip(root map[string]any) ([]byte, error) {
  function zipAddEntry (line 27) | func zipAddEntry(w *zip.Writer, name string, entry any) error {
  function zipAddEntryDir (line 46) | func zipAddEntryDir(w *zip.Writer, name string, perm fs.FileMode, entrie...
  function zipAddEntryFile (line 62) | func zipAddEntryFile(w *zip.Writer, name string, data []byte, perm fs.Fi...
  function zipAddEntrySymlink (line 77) | func zipAddEntrySymlink(w *zip.Writer, name string, target []byte) error {

FILE: internal/archivetest/zip_test.go
  function TestNewZip (line 12) | func TestNewZip(t *testing.T) {

FILE: internal/chezmoi/abspath.go
  type AbsPath (line 20) | type AbsPath
    method Append (line 28) | func (p AbsPath) Append(s string) AbsPath {
    method Base (line 33) | func (p AbsPath) Base() string {
    method Bytes (line 38) | func (p AbsPath) Bytes() []byte {
    method Dir (line 43) | func (p AbsPath) Dir() AbsPath {
    method IsEmpty (line 48) | func (p AbsPath) IsEmpty() bool {
    method Ext (line 53) | func (p AbsPath) Ext() string {
    method HasDirPrefix (line 58) | func (p AbsPath) HasDirPrefix(prefix AbsPath) bool {
    method Join (line 68) | func (p AbsPath) Join(relPaths ...RelPath) AbsPath {
    method JoinString (line 78) | func (p AbsPath) JoinString(ss ...string) AbsPath {
    method Len (line 86) | func (p AbsPath) Len() int {
    method MustTrimDirPrefix (line 91) | func (p AbsPath) MustTrimDirPrefix(dirPrefix AbsPath) RelPath {
    method Set (line 100) | func (p *AbsPath) Set(s string) error {
    method Split (line 118) | func (p AbsPath) Split() (AbsPath, RelPath) {
    method String (line 123) | func (p AbsPath) String() string {
    method ToSlash (line 128) | func (p AbsPath) ToSlash() AbsPath {
    method TrimDirPrefix (line 133) | func (p AbsPath) TrimDirPrefix(dirPrefixAbsPath AbsPath) (RelPath, err...
    method TrimSuffix (line 148) | func (p AbsPath) TrimSuffix(suffix string) AbsPath {
    method Type (line 153) | func (p AbsPath) Type() string {
    method WithTrailingSlash (line 158) | func (p AbsPath) WithTrailingSlash() AbsPath {
  function NewAbsPath (line 23) | func NewAbsPath(absPath string) AbsPath {
  function HomeDirAbsPath (line 166) | func HomeDirAbsPath() (AbsPath, error) {
  function StringToAbsPathHookFunc (line 181) | func StringToAbsPathHookFunc() mapstructure.DecodeHookFunc {

FILE: internal/chezmoi/abspath_test.go
  function TestNewAbsPathFromExtPath (line 14) | func TestNewAbsPathFromExtPath(t *testing.T) {
  function TestAbsPathJoin (line 66) | func TestAbsPathJoin(t *testing.T) {

FILE: internal/chezmoi/actualstateentry.go
  type ActualStateEntry (line 12) | type ActualStateEntry interface
  type ActualStateAbsent (line 21) | type ActualStateAbsent struct
    method EntryState (line 92) | func (s *ActualStateAbsent) EntryState() (*EntryState, error) {
    method IsExternal (line 99) | func (s *ActualStateAbsent) IsExternal() bool {
    method Path (line 104) | func (s *ActualStateAbsent) Path() AbsPath {
    method Remove (line 109) | func (s *ActualStateAbsent) Remove(system System) error {
    method OriginString (line 114) | func (s *ActualStateAbsent) OriginString() string {
  type ActualStateDir (line 26) | type ActualStateDir struct
    method EntryState (line 119) | func (s *ActualStateDir) EntryState() (*EntryState, error) {
    method IsExternal (line 127) | func (s *ActualStateDir) IsExternal() bool {
    method Path (line 132) | func (s *ActualStateDir) Path() AbsPath {
    method Remove (line 137) | func (s *ActualStateDir) Remove(system System) error {
    method OriginString (line 142) | func (s *ActualStateDir) OriginString() string {
  type ActualStateFile (line 32) | type ActualStateFile struct
    method Contents (line 147) | func (s *ActualStateFile) Contents() ([]byte, error) {
    method EntryState (line 152) | func (s *ActualStateFile) EntryState() (*EntryState, error) {
    method IsExternal (line 167) | func (s *ActualStateFile) IsExternal() bool {
    method Path (line 172) | func (s *ActualStateFile) Path() AbsPath {
    method Perm (line 177) | func (s *ActualStateFile) Perm() fs.FileMode {
    method Remove (line 182) | func (s *ActualStateFile) Remove(system System) error {
    method OriginString (line 187) | func (s *ActualStateFile) OriginString() string {
  type ActualStateSymlink (line 39) | type ActualStateSymlink struct
    method EntryState (line 192) | func (s *ActualStateSymlink) EntryState() (*EntryState, error) {
    method IsExternal (line 206) | func (s *ActualStateSymlink) IsExternal() bool {
    method Linkname (line 211) | func (s *ActualStateSymlink) Linkname() (string, error) {
    method Path (line 216) | func (s *ActualStateSymlink) Path() AbsPath {
    method Remove (line 221) | func (s *ActualStateSymlink) Remove(system System) error {
    method OriginString (line 226) | func (s *ActualStateSymlink) OriginString() string {
  function NewActualStateEntry (line 46) | func NewActualStateEntry(system System, absPath AbsPath, fileInfo fs.Fil...

FILE: internal/chezmoi/ageencryption.go
  type AgeEncryption (line 19) | type AgeEncryption struct
    method Decrypt (line 35) | func (e *AgeEncryption) Decrypt(ciphertext []byte) ([]byte, error) {
    method DecryptToFile (line 47) | func (e *AgeEncryption) DecryptToFile(plaintextAbsPath AbsPath, cipher...
    method Encrypt (line 64) | func (e *AgeEncryption) Encrypt(plaintext []byte) ([]byte, error) {
    method EncryptFile (line 76) | func (e *AgeEncryption) EncryptFile(plaintextAbsPath AbsPath) ([]byte,...
    method EncryptedSuffix (line 92) | func (e *AgeEncryption) EncryptedSuffix() string {
    method builtinDecrypt (line 97) | func (e *AgeEncryption) builtinDecrypt(ciphertext []byte) ([]byte, err...
    method builtinEncrypt (line 118) | func (e *AgeEncryption) builtinEncrypt(plaintext []byte) ([]byte, erro...
    method builtinIdentities (line 143) | func (e *AgeEncryption) builtinIdentities() ([]age.Identity, error) {
    method builtinRecipients (line 164) | func (e *AgeEncryption) builtinRecipients() ([]age.Recipient, error) {
    method decryptArgs (line 198) | func (e *AgeEncryption) decryptArgs() []string {
    method encryptArgs (line 208) | func (e *AgeEncryption) encryptArgs() []string {
    method identityArgs (line 237) | func (e *AgeEncryption) identityArgs() []string {
  function parseIdentityFile (line 250) | func parseIdentityFile(identityFile AbsPath) (identities []age.Identity,...
  function parseRecipientsFile (line 261) | func parseRecipientsFile(recipientsFile AbsPath) (recipients []age.Recip...

FILE: internal/chezmoi/ageencryption_test.go
  function TestAgeEncryption (line 19) | func TestAgeEncryption(t *testing.T) {
  function TestAgeEncryptionMarshalUnmarshal (line 35) | func TestAgeEncryptionMarshalUnmarshal(t *testing.T) {
  function TestAgeEncryptionMarshalUnmarshalField (line 72) | func TestAgeEncryptionMarshalUnmarshalField(t *testing.T) {
  function TestAgeEncryptionMarshalUnmarshalFieldEmbedded (line 114) | func TestAgeEncryptionMarshalUnmarshalFieldEmbedded(t *testing.T) {
  function TestAgeMultipleIdentitiesAndMultipleRecipients (line 161) | func TestAgeMultipleIdentitiesAndMultipleRecipients(t *testing.T) {
  function TestAgeRecipientsFile (line 189) | func TestAgeRecipientsFile(t *testing.T) {
  function TestBuiltinAgeEncryption (line 220) | func TestBuiltinAgeEncryption(t *testing.T) {
  function TestBuiltinAgeMultipleIdentitiesAndMultipleRecipients (line 230) | func TestBuiltinAgeMultipleIdentitiesAndMultipleRecipients(t *testing.T) {
  function TestBuiltinAgeRecipientsFile (line 247) | func TestBuiltinAgeRecipientsFile(t *testing.T) {
  function builtinAgeGenerateKey (line 267) | func builtinAgeGenerateKey(t *testing.T) (*age.X25519Recipient, AbsPath) {
  function forEachAgeCommand (line 276) | func forEachAgeCommand(t *testing.T, f func(*testing.T, string)) {

FILE: internal/chezmoi/archive.go
  type ArchiveFormat (line 26) | type ArchiveFormat
  constant ArchiveFormatUnknown (line 30) | ArchiveFormatUnknown ArchiveFormat = ""
  constant ArchiveFormatRar (line 31) | ArchiveFormatRar     ArchiveFormat = "rar"
  constant ArchiveFormatTar (line 32) | ArchiveFormatTar     ArchiveFormat = "tar"
  constant ArchiveFormatTarBz2 (line 33) | ArchiveFormatTarBz2  ArchiveFormat = "tar.bz2"
  constant ArchiveFormatTarGz (line 34) | ArchiveFormatTarGz   ArchiveFormat = "tar.gz"
  constant ArchiveFormatTarXz (line 35) | ArchiveFormatTarXz   ArchiveFormat = "tar.xz"
  constant ArchiveFormatTarZst (line 36) | ArchiveFormatTarZst  ArchiveFormat = "tar.zst"
  constant ArchiveFormatZip (line 37) | ArchiveFormatZip     ArchiveFormat = "zip"
  type WalkArchiveFunc (line 41) | type WalkArchiveFunc
  function GuessArchiveFormat (line 44) | func GuessArchiveFormat(name string, data []byte) ArchiveFormat {
  function WalkArchive (line 83) | func WalkArchive(data []byte, format ArchiveFormat, f WalkArchiveFunc) e...
  function isTarArchive (line 126) | func isTarArchive(r io.Reader) bool {
  function implicitTarDirHeader (line 132) | func implicitTarDirHeader(dir string, modTime time.Time) *tar.Header {
  type RARFileInfo (line 144) | type RARFileInfo struct
    method Name (line 148) | func (i RARFileInfo) Name() string       { return i.FileHeader.Name }
    method Size (line 149) | func (i RARFileInfo) Size() int64        { return i.UnPackedSize }
    method Mode (line 150) | func (i RARFileInfo) Mode() fs.FileMode  { return i.FileHeader.Mode() }
    method ModTime (line 151) | func (i RARFileInfo) ModTime() time.Time { return i.ModificationTime }
    method IsDir (line 152) | func (i RARFileInfo) IsDir() bool        { return i.FileHeader.IsDir }
    method Sys (line 153) | func (i RARFileInfo) Sys() any           { return nil }
  function walkArchiveRar (line 156) | func walkArchiveRar(r io.Reader, f WalkArchiveFunc) error {
  function walkArchiveTar (line 203) | func walkArchiveTar(r io.Reader, f WalkArchiveFunc) error {
  function walkArchiveZip (line 270) | func walkArchiveZip(r io.ReaderAt, size int64, f WalkArchiveFunc) error {

FILE: internal/chezmoi/archive_test.go
  function TestWalkArchive (line 13) | func TestWalkArchive(t *testing.T) {

FILE: internal/chezmoi/archivereadersystem.go
  type ArchiveReaderSystem (line 12) | type ArchiveReaderSystem struct
    method FileInfos (line 82) | func (s *ArchiveReaderSystem) FileInfos() map[AbsPath]fs.FileInfo {
    method Lstat (line 87) | func (s *ArchiveReaderSystem) Lstat(filename AbsPath) (fs.FileInfo, er...
    method ReadFile (line 96) | func (s *ArchiveReaderSystem) ReadFile(name AbsPath) ([]byte, error) {
    method Readlink (line 107) | func (s *ArchiveReaderSystem) Readlink(name AbsPath) (string, error) {
  type ArchiveReaderSystemOptions (line 22) | type ArchiveReaderSystemOptions struct
  function NewArchiveReaderSystem (line 29) | func NewArchiveReaderSystem(

FILE: internal/chezmoi/archivereadersystem_test.go
  function TestArchiveReaderSystemTar (line 13) | func TestArchiveReaderSystemTar(t *testing.T) {

FILE: internal/chezmoi/attr.go
  type SourceFileTargetType (line 18) | type SourceFileTargetType
  constant SourceFileTypeCreate (line 22) | SourceFileTypeCreate SourceFileTargetType = iota
  constant SourceFileTypeFile (line 23) | SourceFileTypeFile
  constant SourceFileTypeModify (line 24) | SourceFileTypeModify
  constant SourceFileTypeRemove (line 25) | SourceFileTypeRemove
  constant SourceFileTypeScript (line 26) | SourceFileTypeScript
  constant SourceFileTypeSymlink (line 27) | SourceFileTypeSymlink
  type ScriptOrder (line 40) | type ScriptOrder
  constant ScriptOrderBefore (line 44) | ScriptOrderBefore ScriptOrder = -1
  constant ScriptOrderDuring (line 45) | ScriptOrderDuring ScriptOrder = 0
  constant ScriptOrderAfter (line 46) | ScriptOrderAfter  ScriptOrder = 1
  type ScriptCondition (line 50) | type ScriptCondition
  constant ScriptConditionNone (line 54) | ScriptConditionNone     ScriptCondition = ""
  constant ScriptConditionAlways (line 55) | ScriptConditionAlways   ScriptCondition = "always"
  constant ScriptConditionOnce (line 56) | ScriptConditionOnce     ScriptCondition = "once"
  constant ScriptConditionOnChange (line 57) | ScriptConditionOnChange ScriptCondition = "onchange"
  type DirAttr (line 61) | type DirAttr struct
    method LogValue (line 129) | func (da DirAttr) LogValue() slog.Value {
    method SourceName (line 141) | func (da DirAttr) SourceName() string {
    method perm (line 170) | func (da DirAttr) perm() fs.FileMode {
  type FileAttr (line 71) | type FileAttr struct
    method LogValue (line 285) | func (fa FileAttr) LogValue() slog.Value {
    method SourceName (line 301) | func (fa FileAttr) SourceName(encryptedSuffix string) string {
    method perm (line 391) | func (fa FileAttr) perm() fs.FileMode {
  type invalidDirNameError (line 84) | type invalidDirNameError
    method Error (line 86) | func (e invalidDirNameError) Error() string {
  type invalidFileNameError (line 90) | type invalidFileNameError
    method Error (line 92) | func (e invalidFileNameError) Error() string {
  function parseDirAttr (line 97) | func parseDirAttr(name string) (DirAttr, error) {
  function parseFileAttr (line 182) | func parseFileAttr(name, encryptedSuffix string) (FileAttr, error) {

FILE: internal/chezmoi/attr_test.go
  function TestDirAttr (line 11) | func TestDirAttr(t *testing.T) {
  function TestDirAttrLiteral (line 50) | func TestDirAttrLiteral(t *testing.T) {
  function TestFileAttr (line 84) | func TestFileAttr(t *testing.T) {
  function TestFileAttrEncryptedSuffix (line 196) | func TestFileAttrEncryptedSuffix(t *testing.T) {
  function TestFileAttrLiteral (line 220) | func TestFileAttrLiteral(t *testing.T) {
  function TestFileAttrPerm (line 314) | func TestFileAttrPerm(t *testing.T) {
  function TestInvalidDirAttr (line 375) | func TestInvalidDirAttr(t *testing.T) {
  function TestInvalidFileAttr (line 387) | func TestInvalidFileAttr(t *testing.T) {

FILE: internal/chezmoi/autotemplate.go
  type TemplateVariable (line 12) | type TemplateVariable struct
  function autoTemplate (line 22) | func autoTemplate(contents []byte, data map[string]any) ([]byte, bool) {
  function appendVariables (line 95) | func appendVariables(variables []TemplateVariable, parent []string, data...
  function extractVariables (line 112) | func extractVariables(data map[string]any) []TemplateVariable {
  function inWord (line 117) | func inWord(s string, i int) bool {
  function isWord (line 122) | func isWord(b byte) bool {

FILE: internal/chezmoi/autotemplate_test.go
  function TestAutoTemplate (line 9) | func TestAutoTemplate(t *testing.T) {
  function TestInWord (line 178) | func TestInWord(t *testing.T) {

FILE: internal/chezmoi/boltpersistentstate.go
  type BoltPersistentStateMode (line 17) | type BoltPersistentStateMode
  constant BoltPersistentStateReadOnly (line 21) | BoltPersistentStateReadOnly BoltPersistentStateMode = iota
  constant BoltPersistentStateReadWrite (line 22) | BoltPersistentStateReadWrite
  type BoltPersistentState (line 26) | type BoltPersistentState struct
    method Close (line 75) | func (b *BoltPersistentState) Close() error {
    method CopyTo (line 86) | func (b *BoltPersistentState) CopyTo(p PersistentState) error {
    method Delete (line 105) | func (b *BoltPersistentState) Delete(bucket, key []byte) error {
    method DeleteBucket (line 123) | func (b *BoltPersistentState) DeleteBucket(bucket []byte) error {
    method Data (line 137) | func (b *BoltPersistentState) Data() (map[string]map[string]string, er...
    method ForEach (line 167) | func (b *BoltPersistentState) ForEach(bucket []byte, fn func(k, v []by...
    method Get (line 187) | func (b *BoltPersistentState) Get(bucket, key []byte) ([]byte, error) {
    method Set (line 211) | func (b *BoltPersistentState) Set(bucket, key, value []byte) error {
    method open (line 226) | func (b *BoltPersistentState) open() error {
  function NewBoltPersistentState (line 35) | func NewBoltPersistentState(system System, path AbsPath, mode BoltPersis...

FILE: internal/chezmoi/boltpersistentstate_test.go
  function TestBoltPersistentState (line 16) | func TestBoltPersistentState(t *testing.T) {
  function TestBoltPersistentStateMock (line 90) | func TestBoltPersistentStateMock(t *testing.T) {
  function TestBoltPersistentStateGeneric (line 132) | func TestBoltPersistentStateGeneric(t *testing.T) {
  function TestBoltPersistentStateReadOnly (line 149) | func TestBoltPersistentStateReadOnly(t *testing.T) {

FILE: internal/chezmoi/byteordermarks.go
  type byteOrderMark (line 3) | type byteOrderMark struct

FILE: internal/chezmoi/chezmoi.go
  constant ignorePrefix (line 37) | ignorePrefix     = "."
  constant afterPrefix (line 38) | afterPrefix      = "after_"
  constant beforePrefix (line 39) | beforePrefix     = "before_"
  constant createPrefix (line 40) | createPrefix     = "create_"
  constant dotPrefix (line 41) | dotPrefix        = "dot_"
  constant emptyPrefix (line 42) | emptyPrefix      = "empty_"
  constant encryptedPrefix (line 43) | encryptedPrefix  = "encrypted_"
  constant exactPrefix (line 44) | exactPrefix      = "exact_"
  constant executablePrefix (line 45) | executablePrefix = "executable_"
  constant externalPrefix (line 46) | externalPrefix   = "external_"
  constant literalPrefix (line 47) | literalPrefix    = "literal_"
  constant modifyPrefix (line 48) | modifyPrefix     = "modify_"
  constant oncePrefix (line 49) | oncePrefix       = "once_"
  constant onChangePrefix (line 50) | onChangePrefix   = "onchange_"
  constant privatePrefix (line 51) | privatePrefix    = "private_"
  constant readOnlyPrefix (line 52) | readOnlyPrefix   = "readonly_"
  constant removePrefix (line 53) | removePrefix     = "remove_"
  constant runPrefix (line 54) | runPrefix        = "run_"
  constant symlinkPrefix (line 55) | symlinkPrefix    = "symlink_"
  constant literalSuffix (line 56) | literalSuffix    = ".literal"
  constant TemplateSuffix (line 57) | TemplateSuffix   = ".tmpl"
  constant Prefix (line 62) | Prefix = ".chezmoi"
  constant RootName (line 64) | RootName         = Prefix + "root"
  constant TemplatesDirName (line 65) | TemplatesDirName = Prefix + "templates"
  constant VersionName (line 66) | VersionName      = Prefix + "version"
  constant dataName (line 67) | dataName         = Prefix + "data"
  constant externalName (line 68) | externalName     = Prefix + "external"
  constant externalsDirName (line 69) | externalsDirName = Prefix + "externals"
  constant ignoreName (line 70) | ignoreName       = Prefix + "ignore"
  constant removeName (line 71) | removeName       = Prefix + "remove"
  constant scriptsDirName (line 72) | scriptsDirName   = Prefix + "scripts"
  type TextConvFunc (line 150) | type TextConvFunc
  function FQDNHostname (line 153) | func FQDNHostname(fileSystem vfs.FS) (string, error) {
  function FlagCompletionFunc (line 183) | func FlagCompletionFunc(allCompletions []string) func(*cobra.Command, []...
  function ParseBool (line 197) | func ParseBool(str string) (bool, error) {
  function IsSuspiciousSourceDirEntry (line 209) | func IsSuspiciousSourceDirEntry(base string, fileInfo fs.FileInfo, encry...
  function UniqueAbbreviations (line 236) | func UniqueAbbreviations(values []string) map[string]string {
  function eagerNoErr (line 258) | func eagerNoErr[T any](value T) func() (T, error) {
  function eagerZeroNoErr (line 265) | func eagerZeroNoErr[T any]() func() (T, error) {
  function etcHostnameFQDNHostname (line 273) | func etcHostnameFQDNHostname(fileSystem vfs.FS) (string, error) {
  function etcMynameFQDNHostname (line 289) | func etcMynameFQDNHostname(fileSystem vfs.FS) (string, error) {
  function etcHostsFQDNHostname (line 306) | func etcHostsFQDNHostname(fileSystem vfs.FS) (string, error) {
  function isEmpty (line 337) | func isEmpty(data []byte) bool {
  function isPrivate (line 342) | func isPrivate(fileInfo fs.FileInfo) bool {
  function isReadOnly (line 347) | func isReadOnly(fileInfo fs.FileInfo) bool {
  function md5Sum (line 352) | func md5Sum(data []byte) []byte {
  function lazySHA256 (line 358) | func lazySHA256(contentsFunc func() ([]byte, error)) func() ([32]byte, e...
  function modeTypeName (line 369) | func modeTypeName(mode fs.FileMode) string {
  function ripemd160Sum (line 377) | func ripemd160Sum(data []byte) []byte {
  function sha1Sum (line 382) | func sha1Sum(data []byte) []byte {
  function sha384Sum (line 388) | func sha384Sum(data []byte) []byte {
  function sha512Sum (line 394) | func sha512Sum(data []byte) []byte {
  function ensureSuffix (line 400) | func ensureSuffix(s, suffix string) string {

FILE: internal/chezmoi/chezmoi_test.go
  function TestEtcHostsFQDNHostname (line 13) | func TestEtcHostsFQDNHostname(t *testing.T) {
  function TestUniqueAbbreviations (line 160) | func TestUniqueAbbreviations(t *testing.T) {

FILE: internal/chezmoi/chezmoi_unix.go
  constant nativeLineEnding (line 12) | nativeLineEnding = "\n"
  function init (line 14) | func init() {
  function findExecutableExtensions (line 21) | func findExecutableExtensions(path string) []string {
  function IsExecutable (line 26) | func IsExecutable(fileInfo fs.FileInfo) bool {
  function UserHomeDir (line 31) | func UserHomeDir() (string, error) {

FILE: internal/chezmoi/chezmoi_unix_test.go
  function TestUmask (line 13) | func TestUmask(t *testing.T) {

FILE: internal/chezmoi/chezmoi_windows.go
  constant nativeLineEnding (line 11) | nativeLineEnding = "\r\n"
  function findExecutableExtensions (line 18) | func findExecutableExtensions(path string) []string {
  function IsExecutable (line 34) | func IsExecutable(fileInfo fs.FileInfo) bool {
  function UserHomeDir (line 52) | func UserHomeDir() (string, error) {
  function isSlash (line 62) | func isSlash(c byte) bool {

FILE: internal/chezmoi/compression.go
  type CompressionFormat (line 15) | type CompressionFormat
  constant CompressionFormatNone (line 19) | CompressionFormatNone  CompressionFormat = ""
  constant CompressionFormatBzip2 (line 20) | CompressionFormatBzip2 CompressionFormat = "bzip2"
  constant CompressionFormatGzip (line 21) | CompressionFormatGzip  CompressionFormat = "gzip"
  constant CompressionFormatXz (line 22) | CompressionFormatXz    CompressionFormat = "xz"
  constant CompressionFormatZstd (line 23) | CompressionFormatZstd  CompressionFormat = "zstd"
  function decompress (line 26) | func decompress(compressionFormat CompressionFormat, data []byte) ([]byt...

FILE: internal/chezmoi/data.go
  function Kernel (line 15) | func Kernel(fileSystem vfs.FS) (map[string]any, error) {
  function OSRelease (line 51) | func OSRelease(fileSystem vfs.FS) (map[string]any, error) {
  function maybeUnquote (line 72) | func maybeUnquote(s string) string {
  function parseOSRelease (line 83) | func parseOSRelease(data []byte) (map[string]any, error) {

FILE: internal/chezmoi/data_test.go
  function TestKernel (line 13) | func TestKernel(t *testing.T) {
  function TestOSRelease (line 63) | func TestOSRelease(t *testing.T) {
  function TestParseOSRelease (line 169) | func TestParseOSRelease(t *testing.T) {

FILE: internal/chezmoi/debugencryption.go
  type DebugEncryption (line 10) | type DebugEncryption struct
    method Decrypt (line 25) | func (e *DebugEncryption) Decrypt(ciphertext []byte) ([]byte, error) {
    method DecryptToFile (line 35) | func (e *DebugEncryption) DecryptToFile(plaintextAbsPath AbsPath, ciph...
    method Encrypt (line 45) | func (e *DebugEncryption) Encrypt(plaintext []byte) ([]byte, error) {
    method EncryptFile (line 55) | func (e *DebugEncryption) EncryptFile(plaintextAbsPath AbsPath) ([]byt...
    method EncryptedSuffix (line 65) | func (e *DebugEncryption) EncryptedSuffix() string {
  function NewDebugEncryption (line 17) | func NewDebugEncryption(encryption Encryption, logger *slog.Logger) *Deb...

FILE: internal/chezmoi/debugpersistentstate.go
  type DebugPersistentState (line 10) | type DebugPersistentState struct
    method Close (line 25) | func (s *DebugPersistentState) Close() error {
    method CopyTo (line 32) | func (s *DebugPersistentState) CopyTo(p PersistentState) error {
    method Data (line 39) | func (s *DebugPersistentState) Data() (map[string]map[string]string, e...
    method Delete (line 48) | func (s *DebugPersistentState) Delete(bucket, key []byte) error {
    method DeleteBucket (line 58) | func (s *DebugPersistentState) DeleteBucket(bucket []byte) error {
    method ForEach (line 67) | func (s *DebugPersistentState) ForEach(bucket []byte, fn func(k, v []b...
    method Get (line 84) | func (s *DebugPersistentState) Get(bucket, key []byte) ([]byte, error) {
    method Set (line 95) | func (s *DebugPersistentState) Set(bucket, key, value []byte) error {
  function NewDebugPersistentState (line 17) | func NewDebugPersistentState(persistentState PersistentState, logger *sl...

FILE: internal/chezmoi/debugsystem.go
  type DebugSystem (line 15) | type DebugSystem struct
    method Chtimes (line 30) | func (s *DebugSystem) Chtimes(name AbsPath, atime, mtime time.Time) er...
    method Chmod (line 41) | func (s *DebugSystem) Chmod(name AbsPath, mode fs.FileMode) error {
    method Glob (line 51) | func (s *DebugSystem) Glob(name string) ([]string, error) {
    method Link (line 61) | func (s *DebugSystem) Link(oldPath, newPath AbsPath) error {
    method Lstat (line 71) | func (s *DebugSystem) Lstat(name AbsPath) (fs.FileInfo, error) {
    method Mkdir (line 80) | func (s *DebugSystem) Mkdir(name AbsPath, perm fs.FileMode) error {
    method RawPath (line 90) | func (s *DebugSystem) RawPath(path AbsPath) (AbsPath, error) {
    method ReadDir (line 95) | func (s *DebugSystem) ReadDir(name AbsPath) ([]fs.DirEntry, error) {
    method ReadFile (line 104) | func (s *DebugSystem) ReadFile(name AbsPath) ([]byte, error) {
    method Readlink (line 115) | func (s *DebugSystem) Readlink(name AbsPath) (string, error) {
    method Remove (line 124) | func (s *DebugSystem) Remove(name AbsPath) error {
    method RemoveAll (line 133) | func (s *DebugSystem) RemoveAll(name AbsPath) error {
    method Rename (line 142) | func (s *DebugSystem) Rename(oldPath, newPath AbsPath) error {
    method RunCmd (line 152) | func (s *DebugSystem) RunCmd(cmd *exec.Cmd) error {
    method RunScript (line 165) | func (s *DebugSystem) RunScript(scriptName RelPath, dir AbsPath, data ...
    method Stat (line 180) | func (s *DebugSystem) Stat(name AbsPath) (fs.FileInfo, error) {
    method UnderlyingFS (line 189) | func (s *DebugSystem) UnderlyingFS() vfs.FS {
    method WriteFile (line 194) | func (s *DebugSystem) WriteFile(name AbsPath, data []byte, perm fs.Fil...
    method WriteSymlink (line 206) | func (s *DebugSystem) WriteSymlink(oldName string, newName AbsPath) er...
  function NewDebugSystem (line 22) | func NewDebugSystem(system System, logger *slog.Logger) *DebugSystem {

FILE: internal/chezmoi/diff.go
  type gitDiffChunk (line 23) | type gitDiffChunk struct
    method Content (line 28) | func (c *gitDiffChunk) Content() string      { return c.content }
    method Type (line 29) | func (c *gitDiffChunk) Type() diff.Operation { return c.operation }
  type gitDiffFile (line 33) | type gitDiffFile struct
    method Hash (line 39) | func (f *gitDiffFile) Hash() plumbing.Hash     { return f.hash }
    method Mode (line 40) | func (f *gitDiffFile) Mode() filemode.FileMode { return f.fileMode }
    method Path (line 41) | func (f *gitDiffFile) Path() string            { return f.relPath.Stri...
  type gitDiffFilePatch (line 45) | type gitDiffFilePatch struct
    method IsBinary (line 51) | func (fp *gitDiffFilePatch) IsBinary() bool              { return fp.b...
    method Files (line 52) | func (fp *gitDiffFilePatch) Files() (from, to diff.File) { return fp.f...
    method Chunks (line 53) | func (fp *gitDiffFilePatch) Chunks() []diff.Chunk        { return fp.c...
  type gitDiffPatch (line 57) | type gitDiffPatch struct
    method FilePatches (line 62) | func (p *gitDiffPatch) FilePatches() []diff.FilePatch { return p.fileP...
    method Message (line 63) | func (p *gitDiffPatch) Message() string               { return p.messa...
  function DiffPatch (line 67) | func DiffPatch(path RelPath, fromData []byte, fromMode fs.FileMode, toDa...
  function diffChunks (line 120) | func diffChunks(from, to string) []diff.Chunk {
  function diffFileMode (line 152) | func diffFileMode(mode fs.FileMode) (filemode.FileMode, error) {
  function isBinary (line 161) | func isBinary(data []byte) bool {

FILE: internal/chezmoi/dryrunsystem.go
  type DryRunSystem (line 13) | type DryRunSystem struct
    method Chmod (line 26) | func (s *DryRunSystem) Chmod(name AbsPath, mode fs.FileMode) error {
    method Chtimes (line 32) | func (s *DryRunSystem) Chtimes(name AbsPath, atime, mtime time.Time) e...
    method Glob (line 38) | func (s *DryRunSystem) Glob(pattern string) ([]string, error) {
    method Link (line 43) | func (s *DryRunSystem) Link(oldName, newName AbsPath) error {
    method Lstat (line 49) | func (s *DryRunSystem) Lstat(name AbsPath) (fs.FileInfo, error) {
    method Mkdir (line 54) | func (s *DryRunSystem) Mkdir(name AbsPath, perm fs.FileMode) error {
    method IsModified (line 61) | func (s *DryRunSystem) IsModified() bool {
    method RawPath (line 66) | func (s *DryRunSystem) RawPath(path AbsPath) (AbsPath, error) {
    method ReadDir (line 71) | func (s *DryRunSystem) ReadDir(name AbsPath) ([]fs.DirEntry, error) {
    method ReadFile (line 76) | func (s *DryRunSystem) ReadFile(name AbsPath) ([]byte, error) {
    method Readlink (line 81) | func (s *DryRunSystem) Readlink(name AbsPath) (string, error) {
    method Remove (line 86) | func (s *DryRunSystem) Remove(AbsPath) error {
    method RemoveAll (line 92) | func (s *DryRunSystem) RemoveAll(AbsPath) error {
    method Rename (line 98) | func (s *DryRunSystem) Rename(oldPath, newPath AbsPath) error {
    method RunCmd (line 104) | func (s *DryRunSystem) RunCmd(cmd *exec.Cmd) error {
    method RunScript (line 110) | func (s *DryRunSystem) RunScript(scriptName RelPath, dir AbsPath, data...
    method Stat (line 116) | func (s *DryRunSystem) Stat(name AbsPath) (fs.FileInfo, error) {
    method UnderlyingFS (line 121) | func (s *DryRunSystem) UnderlyingFS() vfs.FS {
    method WriteFile (line 126) | func (s *DryRunSystem) WriteFile(AbsPath, []byte, fs.FileMode) error {
    method WriteSymlink (line 132) | func (s *DryRunSystem) WriteSymlink(string, AbsPath) error {
    method setModified (line 140) | func (s *DryRunSystem) setModified() {
  function NewDryRunSystem (line 19) | func NewDryRunSystem(system System) *DryRunSystem {

FILE: internal/chezmoi/dumpsystem.go
  type DumpSystemDataType (line 11) | type DumpSystemDataType
  constant DumpSystemDataTypeCommand (line 15) | DumpSystemDataTypeCommand DumpSystemDataType = "command"
  constant DumpSystemDataTypeDir (line 16) | DumpSystemDataTypeDir     DumpSystemDataType = "dir"
  constant DumpSystemDataTypeFile (line 17) | DumpSystemDataTypeFile    DumpSystemDataType = "file"
  constant DumpSystemDataTypeScript (line 18) | DumpSystemDataTypeScript  DumpSystemDataType = "script"
  constant DumpSystemDataTypeSymlink (line 19) | DumpSystemDataTypeSymlink DumpSystemDataType = "symlink"
  type DumpSystem (line 23) | type DumpSystem struct
    method Data (line 76) | func (s *DumpSystem) Data() map[string]any {
    method Mkdir (line 81) | func (s *DumpSystem) Mkdir(dirname AbsPath, perm fs.FileMode) error {
    method RunCmd (line 90) | func (s *DumpSystem) RunCmd(cmd *exec.Cmd) error {
    method RunScript (line 102) | func (s *DumpSystem) RunScript(scriptName RelPath, dir AbsPath, data [...
    method UnderlyingFS (line 119) | func (s *DumpSystem) UnderlyingFS() vfs.FS {
    method WriteFile (line 124) | func (s *DumpSystem) WriteFile(filename AbsPath, data []byte, perm fs....
    method WriteSymlink (line 134) | func (s *DumpSystem) WriteSymlink(oldName string, newName AbsPath) err...
    method setData (line 142) | func (s *DumpSystem) setData(key string, value any) error {
  type DumpSystemCommandData (line 31) | type DumpSystemCommandData struct
  type DumpSystemDirData (line 38) | type DumpSystemDirData struct
  type DumpSystemFileData (line 45) | type DumpSystemFileData struct
  type DumpSystemScriptData (line 53) | type DumpSystemScriptData struct
  type DumpSystemSymlinkData (line 62) | type DumpSystemSymlinkData struct
  function NewDumpSystem (line 69) | func NewDumpSystem() *DumpSystem {

FILE: internal/chezmoi/dumpsystem_test.go
  function TestDumpSystem (line 16) | func TestDumpSystem(t *testing.T) {

FILE: internal/chezmoi/duration.go
  type Duration (line 6) | type Duration
    method UnmarshalText (line 8) | func (d *Duration) UnmarshalText(data []byte) error {

FILE: internal/chezmoi/encryption.go
  type Encryption (line 4) | type Encryption interface

FILE: internal/chezmoi/encryption_test.go
  type xorEncryption (line 13) | type xorEncryption struct
    method Decrypt (line 19) | func (e *xorEncryption) Decrypt(ciphertext []byte) ([]byte, error) {
    method DecryptToFile (line 23) | func (e *xorEncryption) DecryptToFile(plaintextAbsPath AbsPath, cipher...
    method Encrypt (line 27) | func (e *xorEncryption) Encrypt(plaintext []byte) ([]byte, error) {
    method EncryptFile (line 31) | func (e *xorEncryption) EncryptFile(plaintextAbsPath AbsPath) ([]byte,...
    method EncryptedSuffix (line 39) | func (e *xorEncryption) EncryptedSuffix() string {
    method xorWithKey (line 43) | func (e *xorEncryption) xorWithKey(input []byte) []byte {
  function lookPathOrSkip (line 51) | func lookPathOrSkip(t *testing.T, file string) string {
  function testEncryptionDecryptToFile (line 61) | func testEncryptionDecryptToFile(t *testing.T, encryption Encryption) {
  function testEncryptionEncryptDecrypt (line 82) | func testEncryptionEncryptDecrypt(t *testing.T, encryption Encryption) {
  function testEncryptionEncryptFile (line 99) | func testEncryptionEncryptFile(t *testing.T, encryption Encryption) {
  function TestXOREncryption (line 119) | func TestXOREncryption(t *testing.T) {
  function testEncryption (line 125) | func testEncryption(t *testing.T, encryption Encryption) {

FILE: internal/chezmoi/entrystate.go
  type EntryStateType (line 13) | type EntryStateType
  constant EntryStateTypeDir (line 17) | EntryStateTypeDir     EntryStateType = "dir"
  constant EntryStateTypeFile (line 18) | EntryStateTypeFile    EntryStateType = "file"
  constant EntryStateTypeSymlink (line 19) | EntryStateTypeSymlink EntryStateType = "symlink"
  constant EntryStateTypeRemove (line 20) | EntryStateTypeRemove  EntryStateType = "remove"
  constant EntryStateTypeScript (line 21) | EntryStateTypeScript  EntryStateType = "script"
  type EntryState (line 26) | type EntryState struct
    method Contents (line 35) | func (s *EntryState) Contents() []byte {
    method Equal (line 40) | func (s *EntryState) Equal(other *EntryState) bool {
    method Equivalent (line 51) | func (s *EntryState) Equivalent(other *EntryState) bool {
    method LogValue (line 63) | func (s *EntryState) LogValue() slog.Value {
    method Overwrite (line 82) | func (s *EntryState) Overwrite() bool {

FILE: internal/chezmoi/entrystate_test.go
  function TestEntryStateEquivalent (line 15) | func TestEntryStateEquivalent(t *testing.T) {

FILE: internal/chezmoi/entrytypefilter.go
  type EntryTypeFilter (line 8) | type EntryTypeFilter struct
    method IncludeEntryTypeBits (line 23) | func (f *EntryTypeFilter) IncludeEntryTypeBits(entryTypeBits EntryType...
    method IncludeFileInfo (line 28) | func (f *EntryTypeFilter) IncludeFileInfo(fileInfo fs.FileInfo) bool {
    method IncludeSourceStateEntry (line 33) | func (f *EntryTypeFilter) IncludeSourceStateEntry(sourceStateEntry Sou...
    method IncludeTargetStateEntry (line 38) | func (f *EntryTypeFilter) IncludeTargetStateEntry(targetStateEntry Tar...
  function NewEntryTypeFilter (line 15) | func NewEntryTypeFilter(includeEntryTypeBits, excludeEntryTypeBits Entry...

FILE: internal/chezmoi/entrytypeset.go
  type EntryTypeSet (line 18) | type EntryTypeSet struct
    method Bits (line 101) | func (s *EntryTypeSet) Bits() EntryTypeBits {
    method ContainsEntryTypeBits (line 106) | func (s *EntryTypeSet) ContainsEntryTypeBits(b EntryTypeBits) bool {
    method ContainsFileInfo (line 111) | func (s *EntryTypeSet) ContainsFileInfo(fileInfo fs.FileInfo) bool {
    method ContainsSourceStateEntry (line 125) | func (s *EntryTypeSet) ContainsSourceStateEntry(sourceStateEntry Sourc...
    method ContainsTargetStateEntry (line 186) | func (s *EntryTypeSet) ContainsTargetStateEntry(targetStateEntry Targe...
    method MarshalJSON (line 254) | func (s *EntryTypeSet) MarshalJSON() ([]byte, error) {
    method MarshalYAML (line 272) | func (s *EntryTypeSet) MarshalYAML() (any, error) {
    method Set (line 286) | func (s *EntryTypeSet) Set(str string) error {
    method SetSlice (line 295) | func (s *EntryTypeSet) SetSlice(ss []string) error {
    method String (line 320) | func (s *EntryTypeSet) String() string {
    method Type (line 341) | func (s *EntryTypeSet) Type() string {
  type EntryTypeBits (line 23) | type EntryTypeBits
  constant EntryTypeDirs (line 27) | EntryTypeDirs EntryTypeBits = 1 << iota
  constant EntryTypeFiles (line 28) | EntryTypeFiles
  constant EntryTypeRemove (line 29) | EntryTypeRemove
  constant EntryTypeScripts (line 30) | EntryTypeScripts
  constant EntryTypeSymlinks (line 31) | EntryTypeSymlinks
  constant EntryTypeEncrypted (line 32) | EntryTypeEncrypted
  constant EntryTypeExternals (line 33) | EntryTypeExternals
  constant EntryTypeTemplates (line 34) | EntryTypeTemplates
  constant EntryTypeAlways (line 35) | EntryTypeAlways
  constant EntryTypesAll (line 38) | EntryTypesAll EntryTypeBits = EntryTypeDirs |
  constant EntryTypesNone (line 49) | EntryTypesNone EntryTypeBits = 0
  function NewEntryTypeSet (line 94) | func NewEntryTypeSet(bits EntryTypeBits) *EntryTypeSet {
  function StringSliceToEntryTypeSetHookFunc (line 348) | func StringSliceToEntryTypeSetHookFunc() mapstructure.DecodeHookFunc {
  function EntryTypeSetFlagCompletionFunc (line 374) | func EntryTypeSetFlagCompletionFunc(cmd *cobra.Command, args []string, t...

FILE: internal/chezmoi/entrytypeset_test.go
  function TestIncludeMaskSet (line 10) | func TestIncludeMaskSet(t *testing.T) {
  function TestIncludeMaskStringSlice (line 66) | func TestIncludeMaskStringSlice(t *testing.T) {
  function TestEntryTypeSetFlagCompletionFunc (line 118) | func TestEntryTypeSetFlagCompletionFunc(t *testing.T) {

FILE: internal/chezmoi/erroronwritesystem.go
  type ErrorOnWriteSystem (line 13) | type ErrorOnWriteSystem struct
    method Chmod (line 28) | func (s *ErrorOnWriteSystem) Chmod(name AbsPath, mode fs.FileMode) err...
    method Chtimes (line 33) | func (s *ErrorOnWriteSystem) Chtimes(name AbsPath, atime, mtime time.T...
    method Glob (line 38) | func (s *ErrorOnWriteSystem) Glob(pattern string) ([]string, error) {
    method Link (line 43) | func (s *ErrorOnWriteSystem) Link(oldName, newName AbsPath) error {
    method Lstat (line 48) | func (s *ErrorOnWriteSystem) Lstat(name AbsPath) (fs.FileInfo, error) {
    method Mkdir (line 53) | func (s *ErrorOnWriteSystem) Mkdir(name AbsPath, perm fs.FileMode) err...
    method RawPath (line 58) | func (s *ErrorOnWriteSystem) RawPath(path AbsPath) (AbsPath, error) {
    method ReadDir (line 63) | func (s *ErrorOnWriteSystem) ReadDir(name AbsPath) ([]fs.DirEntry, err...
    method ReadFile (line 68) | func (s *ErrorOnWriteSystem) ReadFile(name AbsPath) ([]byte, error) {
    method Readlink (line 73) | func (s *ErrorOnWriteSystem) Readlink(name AbsPath) (string, error) {
    method Remove (line 78) | func (s *ErrorOnWriteSystem) Remove(AbsPath) error {
    method RemoveAll (line 83) | func (s *ErrorOnWriteSystem) RemoveAll(AbsPath) error {
    method Rename (line 88) | func (s *ErrorOnWriteSystem) Rename(oldPath, newPath AbsPath) error {
    method RunCmd (line 93) | func (s *ErrorOnWriteSystem) RunCmd(cmd *exec.Cmd) error {
    method RunScript (line 98) | func (s *ErrorOnWriteSystem) RunScript(scriptName RelPath, dir AbsPath...
    method Stat (line 103) | func (s *ErrorOnWriteSystem) Stat(name AbsPath) (fs.FileInfo, error) {
    method UnderlyingFS (line 108) | func (s *ErrorOnWriteSystem) UnderlyingFS() vfs.FS {
    method WriteFile (line 113) | func (s *ErrorOnWriteSystem) WriteFile(AbsPath, []byte, fs.FileMode) e...
    method WriteSymlink (line 118) | func (s *ErrorOnWriteSystem) WriteSymlink(string, AbsPath) error {
  function NewErrorOnWriteSystem (line 20) | func NewErrorOnWriteSystem(system System, err error) *ErrorOnWriteSystem {

FILE: internal/chezmoi/errors.go
  type ExitCodeError (line 13) | type ExitCodeError
    method Error (line 15) | func (e ExitCodeError) Error() string {
  type TooOldError (line 21) | type TooOldError struct
    method Error (line 26) | func (e *TooOldError) Error() string {
  type InconsistentStateError (line 31) | type InconsistentStateError struct
    method Error (line 36) | func (e *InconsistentStateError) Error() string {
  type NotInAbsDirError (line 41) | type NotInAbsDirError struct
    method Error (line 46) | func (e *NotInAbsDirError) Error() string {
  type NotInRelDirError (line 50) | type NotInRelDirError struct
    method Error (line 55) | func (e *NotInRelDirError) Error() string {
  type UnsupportedFileTypeError (line 59) | type UnsupportedFileTypeError struct
    method Error (line 64) | func (e *UnsupportedFileTypeError) Error() string {

FILE: internal/chezmoi/externaldiffsystem.go
  type ExternalDiffSystem (line 19) | type ExternalDiffSystem struct
    method Close (line 66) | func (s *ExternalDiffSystem) Close() error {
    method Chmod (line 77) | func (s *ExternalDiffSystem) Chmod(name AbsPath, mode fs.FileMode) err...
    method Chtimes (line 83) | func (s *ExternalDiffSystem) Chtimes(name AbsPath, atime, mtime time.T...
    method Glob (line 88) | func (s *ExternalDiffSystem) Glob(pattern string) ([]string, error) {
    method Link (line 93) | func (s *ExternalDiffSystem) Link(oldName, newName AbsPath) error {
    method Lstat (line 99) | func (s *ExternalDiffSystem) Lstat(name AbsPath) (fs.FileInfo, error) {
    method Mkdir (line 104) | func (s *ExternalDiffSystem) Mkdir(name AbsPath, perm fs.FileMode) err...
    method RawPath (line 126) | func (s *ExternalDiffSystem) RawPath(path AbsPath) (AbsPath, error) {
    method ReadDir (line 131) | func (s *ExternalDiffSystem) ReadDir(name AbsPath) ([]fs.DirEntry, err...
    method ReadFile (line 136) | func (s *ExternalDiffSystem) ReadFile(name AbsPath) ([]byte, error) {
    method Readlink (line 141) | func (s *ExternalDiffSystem) Readlink(name AbsPath) (string, error) {
    method Remove (line 146) | func (s *ExternalDiffSystem) Remove(name AbsPath) error {
    method RemoveAll (line 163) | func (s *ExternalDiffSystem) RemoveAll(name AbsPath) error {
    method Rename (line 180) | func (s *ExternalDiffSystem) Rename(oldPath, newPath AbsPath) error {
    method RunCmd (line 186) | func (s *ExternalDiffSystem) RunCmd(cmd *exec.Cmd) error {
    method RunDiffCommand (line 191) | func (s *ExternalDiffSystem) RunDiffCommand(destAbsPath, targetAbsPath...
    method RunScript (line 286) | func (s *ExternalDiffSystem) RunScript(scriptName RelPath, dir AbsPath...
    method Stat (line 315) | func (s *ExternalDiffSystem) Stat(name AbsPath) (fs.FileInfo, error) {
    method UnderlyingFS (line 320) | func (s *ExternalDiffSystem) UnderlyingFS() vfs.FS {
    method WriteFile (line 325) | func (s *ExternalDiffSystem) WriteFile(filename AbsPath, data []byte, ...
    method WriteSymlink (line 396) | func (s *ExternalDiffSystem) WriteSymlink(oldName string, newName AbsP...
    method tempDir (line 403) | func (s *ExternalDiffSystem) tempDir() (AbsPath, error) {
    method entriesDiffer (line 418) | func (s *ExternalDiffSystem) entriesDiffer(absPath1, absPath2 AbsPath)...
  type ExternalDiffSystemOptions (line 34) | type ExternalDiffSystemOptions struct
  function NewExternalDiffSystem (line 43) | func NewExternalDiffSystem(

FILE: internal/chezmoi/findexecutable.go
  function FindExecutable (line 23) | func FindExecutable(files, paths []string) (string, error) {

FILE: internal/chezmoi/findexecutable_darwin_test.go
  function TestFindExecutable (line 10) | func TestFindExecutable(t *testing.T) {

FILE: internal/chezmoi/findexecutable_unix_test.go
  function TestFindExecutable (line 12) | func TestFindExecutable(t *testing.T) {

FILE: internal/chezmoi/findexecutable_windows_test.go
  function TestFindExecutable (line 13) | func TestFindExecutable(t *testing.T) {

FILE: internal/chezmoi/format.go
  type Format (line 29) | type Format interface
  type formatJSON (line 36) | type formatJSON struct
    method Marshal (line 103) | func (formatJSON) Marshal(value any) ([]byte, error) {
    method Name (line 115) | func (formatJSON) Name() string {
    method Unmarshal (line 120) | func (formatJSON) Unmarshal(data []byte, value any) error {
  type formatJSONC (line 39) | type formatJSONC struct
    method Marshal (line 78) | func (formatJSONC) Marshal(value any) ([]byte, error) {
    method Name (line 89) | func (formatJSONC) Name() string {
    method Unmarshal (line 94) | func (formatJSONC) Unmarshal(data []byte, value any) error {
  type formatTOML (line 42) | type formatTOML struct
    method Marshal (line 151) | func (formatTOML) Marshal(value any) ([]byte, error) {
    method Name (line 156) | func (formatTOML) Name() string {
    method Unmarshal (line 161) | func (formatTOML) Unmarshal(data []byte, value any) error {
  type formatYAML (line 45) | type formatYAML struct
    method Name (line 168) | func (formatYAML) Name() string {
    method Marshal (line 173) | func (formatYAML) Marshal(value any) ([]byte, error) {
    method Unmarshal (line 178) | func (formatYAML) Unmarshal(data []byte, value any) error {
  function UnmarshalFileData (line 68) | func UnmarshalFileData(filenameAbsPath AbsPath, data []byte, value any) ...
  function FormatFromAbsPath (line 194) | func FormatFromAbsPath(absPath AbsPath) (Format, error) {
  function formatFromExtension (line 203) | func formatFromExtension(extension string) (Format, error) {
  function isPrefixDotFormat (line 211) | func isPrefixDotFormat(name, prefix string) bool {
  function isPrefixDotFormatDotTmpl (line 220) | func isPrefixDotFormatDotTmpl(name, prefix string) bool {
  function replaceJSONNumbersWithNumericValues (line 232) | func replaceJSONNumbersWithNumericValues(value any) any {
  function replaceJSONNumbersWithNumericValuesMap (line 255) | func replaceJSONNumbersWithNumericValuesMap(value map[string]any) map[st...
  function replaceJSONNumbersWithNumericValuesSlice (line 262) | func replaceJSONNumbersWithNumericValuesSlice(value []any) []any {

FILE: internal/chezmoi/format_test.go
  function TestFormatJSONSingleValue (line 9) | func TestFormatJSONSingleValue(t *testing.T) {
  function TestFormats (line 16) | func TestFormats(t *testing.T) {
  function TestFormatRoundTrip (line 24) | func TestFormatRoundTrip(t *testing.T) {
  function TestFormatEdgeCases (line 58) | func TestFormatEdgeCases(t *testing.T) {

FILE: internal/chezmoi/gitdiffsystem.go
  type GitDiffSystem (line 21) | type GitDiffSystem struct
    method Chmod (line 62) | func (s *GitDiffSystem) Chmod(name AbsPath, mode fs.FileMode) error {
    method Chtimes (line 84) | func (s *GitDiffSystem) Chtimes(name AbsPath, atime, mtime time.Time) ...
    method Glob (line 92) | func (s *GitDiffSystem) Glob(pattern string) ([]string, error) {
    method Link (line 109) | func (s *GitDiffSystem) Link(oldName, newName AbsPath) error {
    method Lstat (line 115) | func (s *GitDiffSystem) Lstat(name AbsPath) (fs.FileInfo, error) {
    method Mkdir (line 123) | func (s *GitDiffSystem) Mkdir(name AbsPath, perm fs.FileMode) error {
    method RawPath (line 133) | func (s *GitDiffSystem) RawPath(path AbsPath) (AbsPath, error) {
    method ReadDir (line 138) | func (s *GitDiffSystem) ReadDir(name AbsPath) ([]fs.DirEntry, error) {
    method ReadFile (line 158) | func (s *GitDiffSystem) ReadFile(name AbsPath) ([]byte, error) {
    method Readlink (line 163) | func (s *GitDiffSystem) Readlink(name AbsPath) (string, error) {
    method Remove (line 168) | func (s *GitDiffSystem) Remove(name AbsPath) error {
    method RemoveAll (line 195) | func (s *GitDiffSystem) RemoveAll(name AbsPath) error {
    method Rename (line 209) | func (s *GitDiffSystem) Rename(oldPath, newPath AbsPath) error {
    method RunCmd (line 260) | func (s *GitDiffSystem) RunCmd(cmd *exec.Cmd) error {
    method RunScript (line 265) | func (s *GitDiffSystem) RunScript(scriptName RelPath, dir AbsPath, dat...
    method Stat (line 292) | func (s *GitDiffSystem) Stat(name AbsPath) (fs.FileInfo, error) {
    method UnderlyingFS (line 300) | func (s *GitDiffSystem) UnderlyingFS() vfs.FS {
    method WriteFile (line 305) | func (s *GitDiffSystem) WriteFile(filename AbsPath, data []byte, perm ...
    method WriteSymlink (line 315) | func (s *GitDiffSystem) WriteSymlink(oldName string, newName AbsPath) ...
    method encodeDiff (line 331) | func (s *GitDiffSystem) encodeDiff(absPath AbsPath, toData []byte, toM...
    method isRemoved (line 383) | func (s *GitDiffSystem) isRemoved(absPath AbsPath) bool {
    method trimPrefix (line 403) | func (s *GitDiffSystem) trimPrefix(absPath AbsPath) RelPath {
  type GitDiffSystemOptions (line 33) | type GitDiffSystemOptions struct
  function NewGitDiffSystem (line 44) | func NewGitDiffSystem(system System, w io.Writer, dirAbsPath AbsPath, op...

FILE: internal/chezmoi/github.go
  function NewGitHubClient (line 14) | func NewGitHubClient(ctx context.Context, httpClient *http.Client) *gith...

FILE: internal/chezmoi/glob.go
  type LstatFS (line 11) | type LstatFS struct
    method Open (line 19) | func (s LstatFS) Open(name string) (fs.File, error) {
    method Stat (line 24) | func (s LstatFS) Stat(name string) (fs.FileInfo, error) {
  function Glob (line 30) | func Glob(fileSystem vfs.FS, prefix string) ([]string, error) {

FILE: internal/chezmoi/gpgencryption.go
  type GPGEncryption (line 15) | type GPGEncryption struct
    method Decrypt (line 25) | func (e *GPGEncryption) Decrypt(ciphertext []byte) ([]byte, error) {
    method DecryptToFile (line 49) | func (e *GPGEncryption) DecryptToFile(plaintextAbsPath AbsPath, cipher...
    method Encrypt (line 61) | func (e *GPGEncryption) Encrypt(plaintext []byte) ([]byte, error) {
    method EncryptFile (line 85) | func (e *GPGEncryption) EncryptFile(plaintextAbsPath AbsPath) ([]byte,...
    method EncryptedSuffix (line 105) | func (e *GPGEncryption) EncryptedSuffix() string {
    method decryptArgs (line 110) | func (e *GPGEncryption) decryptArgs(plaintextAbsPath, ciphertextAbsPat...
    method encryptArgs (line 118) | func (e *GPGEncryption) encryptArgs(plaintextAbsPath, ciphertextAbsPat...
    method run (line 142) | func (e *GPGEncryption) run(args []string) error {
  function withPrivateTempDir (line 151) | func withPrivateTempDir(f func(tempDirAbsPath AbsPath) error) (err error) {

FILE: internal/chezmoi/gpgencryption_test.go
  function TestGPGEncryption (line 12) | func TestGPGEncryption(t *testing.T) {

FILE: internal/chezmoi/hexbytes.go
  type HexBytes (line 9) | type HexBytes
    method Bytes (line 12) | func (h HexBytes) Bytes() []byte {
    method MarshalText (line 17) | func (h HexBytes) MarshalText() ([]byte, error) {
    method MarshalYAML (line 27) | func (h HexBytes) MarshalYAML() ([]byte, error) {
    method UnmarshalText (line 36) | func (h *HexBytes) UnmarshalText(text []byte) error {
    method UnmarshalYAML (line 51) | func (h *HexBytes) UnmarshalYAML(data []byte) error {
    method String (line 68) | func (h HexBytes) String() string {

FILE: internal/chezmoi/hexbytes_test.go
  function TestHexBytes (line 10) | func TestHexBytes(t *testing.T) {

FILE: internal/chezmoi/interpreter.go
  type Interpreter (line 9) | type Interpreter struct
    method ExecCommand (line 15) | func (i *Interpreter) ExecCommand(name string) *exec.Cmd {
    method None (line 23) | func (i *Interpreter) None() bool {
    method LogValue (line 28) | func (i *Interpreter) LogValue() slog.Value {

FILE: internal/chezmoi/lookpath.go
  function LookPath (line 15) | func LookPath(file string) (string, error) {

FILE: internal/chezmoi/mockpersistentstate.go
  type MockPersistentState (line 4) | type MockPersistentState struct
    method Close (line 16) | func (s *MockPersistentState) Close() error {
    method CopyTo (line 21) | func (s *MockPersistentState) CopyTo(p PersistentState) error {
    method Data (line 33) | func (s *MockPersistentState) Data() (map[string]map[string]string, er...
    method Delete (line 46) | func (s *MockPersistentState) Delete(bucket, key []byte) error {
    method DeleteBucket (line 56) | func (s *MockPersistentState) DeleteBucket(bucket []byte) error {
    method ForEach (line 62) | func (s *MockPersistentState) ForEach(bucket []byte, fn func(k, v []by...
    method Get (line 72) | func (s *MockPersistentState) Get(bucket, key []byte) ([]byte, error) {
    method Set (line 81) | func (s *MockPersistentState) Set(bucket, key, value []byte) error {
  function NewMockPersistentState (line 9) | func NewMockPersistentState() *MockPersistentState {

FILE: internal/chezmoi/mockpersistentstate_test.go
  function TestMockPersistentState (line 7) | func TestMockPersistentState(t *testing.T) {

FILE: internal/chezmoi/mode.go
  type Mode (line 5) | type Mode
    method Set (line 26) | func (m *Mode) Set(s string) error {
    method String (line 40) | func (m Mode) String() string {
    method Type (line 45) | func (m Mode) Type() string {
  constant ModeFile (line 9) | ModeFile    Mode = "file"
  constant ModeSymlink (line 10) | ModeSymlink Mode = "symlink"
  type InvalidModeError (line 13) | type InvalidModeError
    method Error (line 15) | func (e InvalidModeError) Error() string {

FILE: internal/chezmoi/noencryption.go
  type NoEncryption (line 8) | type NoEncryption struct
    method Decrypt (line 11) | func (NoEncryption) Decrypt([]byte) ([]byte, error) { return nil, errE...
    method DecryptToFile (line 14) | func (NoEncryption) DecryptToFile(AbsPath, []byte) error { return errE...
    method Encrypt (line 17) | func (NoEncryption) Encrypt([]byte) ([]byte, error) { return nil, errE...
    method EncryptFile (line 20) | func (NoEncryption) EncryptFile(AbsPath) ([]byte, error) { return nil,...
    method EncryptedSuffix (line 23) | func (NoEncryption) EncryptedSuffix() string { return "" }

FILE: internal/chezmoi/nullpersistentstate.go
  type NullPersistentState (line 5) | type NullPersistentState struct
    method Close (line 8) | func (NullPersistentState) Close() error { return nil }
    method CopyTo (line 11) | func (NullPersistentState) CopyTo(s PersistentState) error { return nil }
    method Data (line 14) | func (NullPersistentState) Data() (map[string]map[string]string, error...
    method Delete (line 17) | func (NullPersistentState) Delete(bucket, key []byte) error { return n...
    method DeleteBucket (line 20) | func (NullPersistentState) DeleteBucket(bucket []byte) error { return ...
    method ForEach (line 23) | func (NullPersistentState) ForEach(bucket []byte, fn func(k, v []byte)...
    method Get (line 26) | func (NullPersistentState) Get(bucket, key []byte) ([]byte, error) { r...
    method Set (line 29) | func (NullPersistentState) Set(bucket, key, value []byte) error { retu...

FILE: internal/chezmoi/nullsystem.go
  type NullSystem (line 3) | type NullSystem struct

FILE: internal/chezmoi/path_unix.go
  function NewAbsPathFromExtPath (line 14) | func NewAbsPathFromExtPath(extPath string, homeDirAbsPath AbsPath) (AbsP...
  function NormalizePath (line 34) | func NormalizePath(path string) (AbsPath, error) {
  function normalizeLinkname (line 44) | func normalizeLinkname(linkname string) string {

FILE: internal/chezmoi/path_windows.go
  function NewAbsPathFromExtPath (line 13) | func NewAbsPathFromExtPath(extPath string, homeDirAbsPath AbsPath) (AbsP...
  function NormalizePath (line 33) | func NormalizePath(path string) (AbsPath, error) {
  function normalizeLinkname (line 48) | func normalizeLinkname(linkname string) string {
  function volumeNameLen (line 57) | func volumeNameLen(path string) int {
  function volumeNameToUpper (line 93) | func volumeNameToUpper(path string) string {

FILE: internal/chezmoi/path_windows_test.go
  function TestAbsPathTrimDirPrefix (line 10) | func TestAbsPathTrimDirPrefix(t *testing.T) {
  function TestNormalizeLinkname (line 50) | func TestNormalizeLinkname(t *testing.T) {

FILE: internal/chezmoi/patternset.go
  type PatternSetIncludeType (line 16) | type PatternSetIncludeType
  constant PatternSetInclude (line 19) | PatternSetInclude PatternSetIncludeType = true
  constant PatternSetExclude (line 20) | PatternSetExclude PatternSetIncludeType = false
  type PatternSetMatchType (line 23) | type PatternSetMatchType
  constant PatternSetMatchInclude (line 26) | PatternSetMatchInclude PatternSetMatchType = 1
  constant PatternSetMatchUnknown (line 27) | PatternSetMatchUnknown PatternSetMatchType = 0
  constant PatternSetMatchExclude (line 28) | PatternSetMatchExclude PatternSetMatchType = -1
  type PatternSet (line 32) | type PatternSet struct
    method LogValue (line 46) | func (ps *PatternSet) LogValue() slog.Value {
    method Add (line 57) | func (ps *PatternSet) Add(pattern string, include PatternSetIncludeTyp...
    method Glob (line 71) | func (ps *PatternSet) Glob(fileSystem vfs.FS, prefix string) ([]string...
    method Match (line 99) | func (ps *PatternSet) Match(name string) PatternSetMatchType {
  function NewPatternSet (line 38) | func NewPatternSet() *PatternSet {

FILE: internal/chezmoi/patternset_test.go
  function TestPatternSet (line 12) | func TestPatternSet(t *testing.T) {
  function TestPatternSetGlob (line 78) | func TestPatternSetGlob(t *testing.T) {
  function mustNewPatternSet (line 138) | func mustNewPatternSet(t *testing.T, patterns map[string]PatternSetInclu...

FILE: internal/chezmoi/persistentstate.go
  type PersistentState (line 22) | type PersistentState interface
  function PersistentStateBucketData (line 34) | func PersistentStateBucketData(s PersistentState, bucket []byte) (map[st...
  function PersistentStateData (line 50) | func PersistentStateData(s PersistentState, buckets map[string][]byte) (...
  function PersistentStateGet (line 64) | func PersistentStateGet(s PersistentState, bucket, key []byte, value any...
  function PersistentStateSet (line 79) | func PersistentStateSet(s PersistentState, bucket, key []byte, value any...

FILE: internal/chezmoi/persistentstate_test.go
  function testPersistentState (line 10) | func testPersistentState(t *testing.T, constructor func() PersistentStat...

FILE: internal/chezmoi/readonlysystem.go
  type ReadOnlySystem (line 10) | type ReadOnlySystem struct
    method Glob (line 24) | func (s *ReadOnlySystem) Glob(pattern string) ([]string, error) {
    method Lstat (line 29) | func (s *ReadOnlySystem) Lstat(filename AbsPath) (fs.FileInfo, error) {
    method RawPath (line 34) | func (s *ReadOnlySystem) RawPath(path AbsPath) (AbsPath, error) {
    method ReadDir (line 39) | func (s *ReadOnlySystem) ReadDir(name AbsPath) ([]fs.DirEntry, error) {
    method ReadFile (line 44) | func (s *ReadOnlySystem) ReadFile(name AbsPath) ([]byte, error) {
    method Readlink (line 49) | func (s *ReadOnlySystem) Readlink(name AbsPath) (string, error) {
    method Stat (line 54) | func (s *ReadOnlySystem) Stat(name AbsPath) (fs.FileInfo, error) {
    method UnderlyingFS (line 59) | func (s *ReadOnlySystem) UnderlyingFS() vfs.FS {
  function NewReadOnlySystem (line 17) | func NewReadOnlySystem(system System) *ReadOnlySystem {

FILE: internal/chezmoi/realsystem.go
  type RealSystemOption (line 20) | type RealSystemOption
  method Chtimes (line 23) | func (s *RealSystem) Chtimes(name AbsPath, atime, mtime time.Time) error {
  method Glob (line 28) | func (s *RealSystem) Glob(pattern string) ([]string, error) {
  method Link (line 33) | func (s *RealSystem) Link(oldName, newName AbsPath) error {
  method Lstat (line 38) | func (s *RealSystem) Lstat(filename AbsPath) (fs.FileInfo, error) {
  method Mkdir (line 43) | func (s *RealSystem) Mkdir(name AbsPath, perm fs.FileMode) error {
  method RawPath (line 48) | func (s *RealSystem) RawPath(absPath AbsPath) (AbsPath, error) {
  method ReadDir (line 57) | func (s *RealSystem) ReadDir(name AbsPath) ([]fs.DirEntry, error) {
  method ReadFile (line 62) | func (s *RealSystem) ReadFile(name AbsPath) ([]byte, error) {
  method Remove (line 67) | func (s *RealSystem) Remove(name AbsPath) error {
  method RemoveAll (line 72) | func (s *RealSystem) RemoveAll(name AbsPath) error {
  method Rename (line 77) | func (s *RealSystem) Rename(oldPath, newPath AbsPath) error {
  method RunCmd (line 82) | func (s *RealSystem) RunCmd(cmd *exec.Cmd) error {
  method RunScript (line 87) | func (s *RealSystem) RunScript(scriptName RelPath, dir AbsPath, data []b...
  method Stat (line 138) | func (s *RealSystem) Stat(name AbsPath) (fs.FileInfo, error) {
  method UnderlyingFS (line 143) | func (s *RealSystem) UnderlyingFS() vfs.FS {
  method getScriptWorkingDir (line 152) | func (s *RealSystem) getScriptWorkingDir(dir AbsPath) (string, error) {

FILE: internal/chezmoi/realsystem_test.go
  function TestRealSystemGlob (line 16) | func TestRealSystemGlob(t *testing.T) {
  function pathsToSlashes (line 65) | func pathsToSlashes(paths []string) []string {

FILE: internal/chezmoi/realsystem_unix.go
  type RealSystem (line 19) | type RealSystem struct
    method Chmod (line 58) | func (s *RealSystem) Chmod(name AbsPath, mode fs.FileMode) error {
    method Readlink (line 63) | func (s *RealSystem) Readlink(name AbsPath) (string, error) {
    method WriteFile (line 68) | func (s *RealSystem) WriteFile(filename AbsPath, data []byte, perm fs....
    method WriteSymlink (line 110) | func (s *RealSystem) WriteSymlink(oldName string, newName AbsPath) err...
  function RealSystemWithSafe (line 29) | func RealSystemWithSafe(safe bool) RealSystemOption {
  function RealSystemWithScriptTempDir (line 37) | func RealSystemWithScriptTempDir(scriptTempDir AbsPath) RealSystemOption {
  function NewRealSystem (line 44) | func NewRealSystem(fileSystem vfs.FS, options ...RealSystemOption) *Real...
  function writeFile (line 125) | func writeFile(fileSystem vfs.FS, filename AbsPath, data []byte, perm fs...

FILE: internal/chezmoi/realsystem_windows.go
  type RealSystem (line 13) | type RealSystem struct
    method Chmod (line 45) | func (s *RealSystem) Chmod(name AbsPath, mode fs.FileMode) error {
    method Readlink (line 50) | func (s *RealSystem) Readlink(name AbsPath) (string, error) {
    method WriteFile (line 59) | func (s *RealSystem) WriteFile(filename AbsPath, data []byte, perm fs....
    method WriteSymlink (line 64) | func (s *RealSystem) WriteSymlink(oldName string, newName AbsPath) err...
  function RealSystemWithSafe (line 23) | func RealSystemWithSafe(safe bool) RealSystemOption {
  function RealSystemWithScriptTempDir (line 29) | func RealSystemWithScriptTempDir(scriptTempDir AbsPath) RealSystemOption {
  function NewRealSystem (line 34) | func NewRealSystem(fileSystem vfs.FS, options ...RealSystemOption) *Real...

FILE: internal/chezmoi/recursivemerge.go
  function recursiveCopy (line 4) | func recursiveCopy(v any) any {
  function RecursiveMerge (line 21) | func RecursiveMerge(dest, source map[string]any) {

FILE: internal/chezmoi/recursivemerge_test.go
  function TestRecursiveMerge (line 9) | func TestRecursiveMerge(t *testing.T) {
  function TestRecursiveMergeCopies (line 57) | func TestRecursiveMergeCopies(t *testing.T) {

FILE: internal/chezmoi/refreshexternals.go
  type RefreshExternals (line 10) | type RefreshExternals
    method Set (line 28) | func (re *RefreshExternals) Set(s string) error {
    method String (line 45) | func (re RefreshExternals) String() string {
    method Type (line 58) | func (re RefreshExternals) Type() string {
  constant RefreshExternalsAuto (line 13) | RefreshExternalsAuto RefreshExternals = iota
  constant RefreshExternalsAlways (line 14) | RefreshExternalsAlways
  constant RefreshExternalsNever (line 15) | RefreshExternalsNever

FILE: internal/chezmoi/relpath.go
  type RelPath (line 15) | type RelPath struct
    method AppendString (line 27) | func (p RelPath) AppendString(s string) RelPath {
    method Base (line 32) | func (p RelPath) Base() string {
    method Dir (line 37) | func (p RelPath) Dir() RelPath {
    method IsEmpty (line 42) | func (p RelPath) IsEmpty() bool {
    method Ext (line 47) | func (p RelPath) Ext() string {
    method HasDirPrefix (line 52) | func (p RelPath) HasDirPrefix(dirPrefix RelPath) bool {
    method Join (line 57) | func (p RelPath) Join(relPaths ...RelPath) RelPath {
    method JoinString (line 69) | func (p RelPath) JoinString(ss ...string) RelPath {
    method Len (line 77) | func (p RelPath) Len() int {
    method MarshalText (line 82) | func (p RelPath) MarshalText() ([]byte, error) {
    method Slice (line 87) | func (p RelPath) Slice(begin, end int) RelPath {
    method SourceRelPath (line 92) | func (p RelPath) SourceRelPath() SourceRelPath {
    method SourceRelDirPath (line 97) | func (p RelPath) SourceRelDirPath() SourceRelPath {
    method Split (line 102) | func (p RelPath) Split() (dirRelPath, fileRelPath RelPath) {
    method SplitAll (line 108) | func (p RelPath) SplitAll() []RelPath {
    method String (line 117) | func (p RelPath) String() string {
    method TrimDirPrefix (line 122) | func (p RelPath) TrimDirPrefix(dirPrefix RelPath) (RelPath, error) {
  function NewRelPath (line 20) | func NewRelPath(relPath string) RelPath {
  function CompareRelPaths (line 133) | func CompareRelPaths(a, b RelPath) int {

FILE: internal/chezmoi/sourcerelpath.go
  type SourceRelPath (line 11) | type SourceRelPath struct
    method Dir (line 32) | func (p SourceRelPath) Dir() SourceRelPath {
    method IsEmpty (line 40) | func (p SourceRelPath) IsEmpty() bool {
    method Join (line 45) | func (p SourceRelPath) Join(sourceRelPaths ...SourceRelPath) SourceRel...
    method MarshalText (line 60) | func (p SourceRelPath) MarshalText() ([]byte, error) {
    method RelPath (line 65) | func (p SourceRelPath) RelPath() RelPath {
    method Split (line 70) | func (p SourceRelPath) Split() (dirSourceRelPath, fileSourceRelPath So...
    method String (line 75) | func (p SourceRelPath) String() string {
    method TargetRelPath (line 80) | func (p SourceRelPath) TargetRelPath(encryptedSuffix string) (RelPath,...
  function NewSourceRelDirPath (line 17) | func NewSourceRelDirPath(relPath string) SourceRelPath {
  function NewSourceRelPath (line 25) | func NewSourceRelPath(relPath string) SourceRelPath {

FILE: internal/chezmoi/sourcerelpath_test.go
  function TestSourceRelPath (line 9) | func TestSourceRelPath(t *testing.T) {

FILE: internal/chezmoi/sourcestate.go
  type ExternalType (line 42) | type ExternalType
  constant ExternalTypeArchive (line 46) | ExternalTypeArchive     ExternalType = "archive"
  constant ExternalTypeArchiveFile (line 47) | ExternalTypeArchiveFile ExternalType = "archive-file"
  constant ExternalTypeFile (line 48) | ExternalTypeFile        ExternalType = "file"
  constant ExternalTypeGitRepo (line 49) | ExternalTypeGitRepo     ExternalType = "git-repo"
  type ExternalArchive (line 64) | type ExternalArchive struct
  type ExternalChecksum (line 68) | type ExternalChecksum struct
  type ExternalClone (line 78) | type ExternalClone struct
  type ExternalFilter (line 82) | type ExternalFilter struct
  type ExternalPull (line 87) | type ExternalPull struct
  type WarnFunc (line 92) | type WarnFunc
  type External (line 95) | type External struct
    method IsExternal (line 3051) | func (e *External) IsExternal() bool {
    method Path (line 3055) | func (e *External) Path() AbsPath {
    method OriginString (line 3059) | func (e *External) OriginString() string {
  type SourceState (line 121) | type SourceState struct
    method Add (line 384) | func (s *SourceState) Add(
    method AddDestAbsPathInfos (line 716) | func (s *SourceState) AddDestAbsPathInfos(
    method Apply (line 765) | func (s *SourceState) Apply(
    method Encryption (line 856) | func (s *SourceState) Encryption() Encryption {
    method ExecuteTemplateData (line 870) | func (s *SourceState) ExecuteTemplateData(options ExecuteTemplateDataO...
    method ForEach (line 903) | func (s *SourceState) ForEach(f func(RelPath, SourceStateEntry) error)...
    method Get (line 910) | func (s *SourceState) Get(targetRelPath RelPath) SourceStateEntry {
    method Ignore (line 915) | func (s *SourceState) Ignore(targetRelPath RelPath) bool {
    method Ignored (line 926) | func (s *SourceState) Ignored() []RelPath {
    method MustEntry (line 932) | func (s *SourceState) MustEntry(targetRelPath RelPath) SourceStateEntry {
    method PostApply (line 941) | func (s *SourceState) PostApply(
    method Read (line 999) | func (s *SourceState) Read(ctx context.Context, options *ReadOptions) ...
    method TargetRelPaths (line 1384) | func (s *SourceState) TargetRelPaths() []RelPath {
    method TemplateData (line 1400) | func (s *SourceState) TemplateData() map[string]any {
    method addExternal (line 1422) | func (s *SourceState) addExternal(sourceAbsPath, parentAbsPath AbsPath...
    method addExternalDir (line 1475) | func (s *SourceState) addExternalDir(ctx context.Context, externalsDir...
    method addPatterns (line 1510) | func (s *SourceState) addPatterns(patternSet *PatternSet, sourceAbsPat...
    method addTemplateData (line 1545) | func (s *SourceState) addTemplateData(sourceAbsPath AbsPath) error {
    method addTemplateDataDir (line 1569) | func (s *SourceState) addTemplateDataDir(sourceAbsPath AbsPath, fileIn...
    method addTemplatesDir (line 1602) | func (s *SourceState) addTemplatesDir(ctx context.Context, templatesDi...
    method executeTemplate (line 1652) | func (s *SourceState) executeTemplate(templateAbsPath AbsPath) ([]byte...
    method getExternalDataRaw (line 1665) | func (s *SourceState) getExternalDataRaw(
    method getExternalDataAndURL (line 1757) | func (s *SourceState) getExternalDataAndURL(
    method getExternalData (line 1786) | func (s *SourceState) getExternalData(
    method newSourceStateDir (line 1895) | func (s *SourceState) newSourceStateDir(absPath AbsPath, sourceRelPath...
    method newCreateTargetStateEntryFunc (line 1910) | func (s *SourceState) newCreateTargetStateEntryFunc(
    method newFileTargetStateEntryFunc (line 1956) | func (s *SourceState) newFileTargetStateEntryFunc(
    method newModifyTargetStateEntryFunc (line 2010) | func (s *SourceState) newModifyTargetStateEntryFunc(
    method newRemoveTargetStateEntryFunc (line 2123) | func (s *SourceState) newRemoveTargetStateEntryFunc() TargetStateEntry...
    method newScriptTargetStateEntryFunc (line 2131) | func (s *SourceState) newScriptTargetStateEntryFunc(
    method newSymlinkTargetStateEntryFunc (line 2172) | func (s *SourceState) newSymlinkTargetStateEntryFunc(
    method newSourceStateFile (line 2204) | func (s *SourceState) newSourceStateFile(
    method newSourceStateDirEntry (line 2277) | func (s *SourceState) newSourceStateDirEntry(
    method newSourceStateFileEntryFromFile (line 2303) | func (s *SourceState) newSourceStateFileEntryFromFile(
    method newSourceStateFileEntryFromSymlink (line 2376) | func (s *SourceState) newSourceStateFileEntryFromSymlink(
    method populateImplicitParentDirs (line 2428) | func (s *SourceState) populateImplicitParentDirs(
    method readExternal (line 2447) | func (s *SourceState) readExternal(
    method readExternalArchive (line 2472) | func (s *SourceState) readExternalArchive(
    method readExternalArchiveData (line 2645) | func (s *SourceState) readExternalArchiveData(
    method readExternalArchiveFile (line 2676) | func (s *SourceState) readExternalArchiveFile(
    method readExternalDir (line 2787) | func (s *SourceState) readExternalDir(
    method readExternalFile (line 2887) | func (s *SourceState) readExternalFile(
    method readScriptsDir (line 2926) | func (s *SourceState) readScriptsDir(ctx context.Context, scriptsDirAb...
    method readVersionFile (line 3009) | func (s *SourceState) readVersionFile(sourceAbsPath AbsPath) error {
    method sourceStateEntry (line 3029) | func (s *SourceState) sourceStateEntry(
  type SourceStateOption (line 158) | type SourceStateOption
  function WithBaseSystem (line 161) | func WithBaseSystem(baseSystem System) SourceStateOption {
  function WithCacheDir (line 168) | func WithCacheDir(cacheDirAbsPath AbsPath) SourceStateOption {
  function WithDefaultTemplateDataFunc (line 175) | func WithDefaultTemplateDataFunc(defaultTemplateDataFunc func() map[stri...
  function WithDestDir (line 182) | func WithDestDir(destDirAbsPath AbsPath) SourceStateOption {
  function WithEncryption (line 189) | func WithEncryption(encryption Encryption) SourceStateOption {
  function WithHTTPClient (line 196) | func WithHTTPClient(httpClient *http.Client) SourceStateOption {
  function WithInterpreters (line 203) | func WithInterpreters(interpreters map[string]Interpreter) SourceStateOp...
  function WithLogger (line 210) | func WithLogger(logger *slog.Logger) SourceStateOption {
  function WithMode (line 217) | func WithMode(mode Mode) SourceStateOption {
  function WithPriorityTemplateData (line 224) | func WithPriorityTemplateData(priorityTemplateData map[string]any) Sourc...
  function WithReadTemplateData (line 231) | func WithReadTemplateData(readTemplateData bool) SourceStateOption {
  function WithReadTemplates (line 238) | func WithReadTemplates(readTemplates bool) SourceStateOption {
  function WithScriptTempDir (line 245) | func WithScriptTempDir(scriptDirAbsPath AbsPath) SourceStateOption {
  function WithSourceDir (line 252) | func WithSourceDir(sourceDirAbsPath AbsPath) SourceStateOption {
  function WithSystem (line 259) | func WithSystem(system System) SourceStateOption {
  function WithTemplateDataOnly (line 266) | func WithTemplateDataOnly(templateDataOnly bool) SourceStateOption {
  function WithTemplateFuncs (line 273) | func WithTemplateFuncs(templateFuncs template.FuncMap) SourceStateOption {
  function WithTemplateOptions (line 280) | func WithTemplateOptions(templateOptions []string) SourceStateOption {
  function WithUmask (line 287) | func WithUmask(umask fs.FileMode) SourceStateOption {
  function WithVersion (line 294) | func WithVersion(version semver.Version) SourceStateOption {
  function WithWarnFunc (line 301) | func WithWarnFunc(warnFunc WarnFunc) SourceStateOption {
  type TargetStateEntryFunc (line 309) | type TargetStateEntryFunc
  function NewSourceState (line 312) | func NewSourceState(options ...SourceStateOption) *SourceState {
  type PreAddFunc (line 337) | type PreAddFunc
  type ReplaceFunc (line 340) | type ReplaceFunc
  type AddOptions (line 343) | type AddOptions struct
    method shouldBeExact (line 366) | func (o *AddOptions) shouldBeExact(targetRelPath RelPath) bool {
  type PreApplyFunc (line 755) | type PreApplyFunc
  type ApplyOptions (line 758) | type ApplyOptions struct
  type ExecuteTemplateDataOptions (line 861) | type ExecuteTemplateDataOptions struct
  type ReadOptions (line 992) | type ReadOptions struct
  function canonicalSourceStateEntry (line 3069) | func canonicalSourceStateEntry(sourceStateEntries []SourceStateEntry) (S...
  function isAppleDoubleFile (line 3116) | func isAppleDoubleFile(name string, contents []byte) bool {

FILE: internal/chezmoi/sourcestate_test.go
  function TestSourceStateAdd (line 26) | func TestSourceStateAdd(t *testing.T) {
  function TestSourceStateAddInExternal (line 577) | func TestSourceStateAddInExternal(t *testing.T) {
  function TestSourceStateApplyAll (line 643) | func TestSourceStateApplyAll(t *testing.T) {
  function TestSourceStateExecuteTemplateData (line 863) | func TestSourceStateExecuteTemplateData(t *testing.T) {
  function TestSourceStateRead (line 912) | func TestSourceStateRead(t *testing.T) {
  function TestSourceStateReadExternal (line 1580) | func TestSourceStateReadExternal(t *testing.T) {
  function TestSourceStateReadScriptsConcurrent (line 1674) | func TestSourceStateReadScriptsConcurrent(t *testing.T) {
  function TestSourceStateReadExternalCache (line 1710) | func TestSourceStateReadExternalCache(t *testing.T) {
  function TestSourceStateTargetRelPaths (line 1787) | func TestSourceStateTargetRelPaths(t *testing.T) {
  function TestTemplateOptionsParseDirectives (line 1842) | func TestTemplateOptionsParseDirectives(t *testing.T) {
  function TestSourceStateExternalErrors (line 2041) | func TestSourceStateExternalErrors(t *testing.T) {
  method applyAll (line 2146) | func (s *SourceState) applyAll(
  function requireEvaluateAll (line 2165) | func requireEvaluateAll(t *testing.T, s *SourceState, destSystem System) {
  function withEntries (line 2199) | func withEntries(sourceEntries map[RelPath]SourceStateEntry) SourceState...
  function withIgnore (line 2208) | func withIgnore(ignore *PatternSet) SourceStateOption {
  function withIgnoredRelPathStrs (line 2214) | func withIgnoredRelPathStrs(relPathStrs ...string) SourceStateOption {
  function withRemove (line 2222) | func withRemove(remove *PatternSet) SourceStateOption {
  function withUserTemplateData (line 2229) | func withUserTemplateData(templateData map[string]any) SourceStateOption {
  function withTemplates (line 2235) | func withTemplates(templates map[string]*Template) SourceStateOption {
  function manyScripts (line 2241) | func manyScripts(amount int) map[string]any {

FILE: internal/chezmoi/sourcestateentry.go
  type SourceAttr (line 12) | type SourceAttr struct
  type SourceStateOrigin (line 20) | type SourceStateOrigin interface
  type SourceStateOriginAbsPath (line 27) | type SourceStateOriginAbsPath
    method IsExternal (line 300) | func (SourceStateOriginAbsPath) IsExternal() bool {
    method Path (line 305) | func (s SourceStateOriginAbsPath) Path() AbsPath {
    method OriginString (line 310) | func (s SourceStateOriginAbsPath) OriginString() string {
  type SourceStateEntry (line 30) | type SourceStateEntry interface
  type SourceStateCommand (line 40) | type SourceStateCommand struct
    method Evaluate (line 93) | func (s *SourceStateCommand) Evaluate() error {
    method LogValue (line 98) | func (s *SourceStateCommand) LogValue() slog.Value {
    method Order (line 106) | func (s *SourceStateCommand) Order() ScriptOrder {
    method Origin (line 111) | func (s *SourceStateCommand) Origin() SourceStateOrigin {
    method SourceRelPath (line 116) | func (s *SourceStateCommand) SourceRelPath() SourceRelPath {
    method TargetStateEntry (line 121) | func (s *SourceStateCommand) TargetStateEntry(destSystem System, destD...
  type SourceStateDir (line 49) | type SourceStateDir struct
    method Attr (line 131) | func (s *SourceStateDir) Attr() DirAttr {
    method Evaluate (line 136) | func (s *SourceStateDir) Evaluate() error {
    method LogValue (line 141) | func (s *SourceStateDir) LogValue() slog.Value {
    method Order (line 149) | func (s *SourceStateDir) Order() ScriptOrder {
    method Origin (line 154) | func (s *SourceStateDir) Origin() SourceStateOrigin {
    method SourceRelPath (line 159) | func (s *SourceStateDir) SourceRelPath() SourceRelPath {
    method TargetStateEntry (line 164) | func (s *SourceStateDir) TargetStateEntry(destSystem System, destDirAb...
  type SourceStateFile (line 57) | type SourceStateFile struct
    method Attr (line 169) | func (s *SourceStateFile) Attr() FileAttr {
    method Contents (line 174) | func (s *SourceStateFile) Contents() ([]byte, error) {
    method ContentsSHA256 (line 179) | func (s *SourceStateFile) ContentsSHA256() ([32]byte, error) {
    method Evaluate (line 184) | func (s *SourceStateFile) Evaluate() error {
    method LogValue (line 195) | func (s *SourceStateFile) LogValue() slog.Value {
    method Order (line 214) | func (s *SourceStateFile) Order() ScriptOrder {
    method Origin (line 219) | func (s *SourceStateFile) Origin() SourceStateOrigin {
    method SourceRelPath (line 224) | func (s *SourceStateFile) SourceRelPath() SourceRelPath {
    method TargetStateEntry (line 229) | func (s *SourceStateFile) TargetStateEntry(destSystem System, destDirA...
  type SourceStateImplicitDir (line 72) | type SourceStateImplicitDir struct
    method Evaluate (line 238) | func (s *SourceStateImplicitDir) Evaluate() error {
    method LogValue (line 243) | func (s *SourceStateImplicitDir) LogValue() slog.Value {
    method Order (line 248) | func (s *SourceStateImplicitDir) Order() ScriptOrder {
    method Origin (line 253) | func (s *SourceStateImplicitDir) Origin() SourceStateOrigin {
    method SourceRelPath (line 258) | func (s *SourceStateImplicitDir) SourceRelPath() SourceRelPath {
    method TargetStateEntry (line 263) | func (s *SourceStateImplicitDir) TargetStateEntry(destSystem System, d...
  type SourceStateRemove (line 78) | type SourceStateRemove struct
    method Evaluate (line 268) | func (s *SourceStateRemove) Evaluate() error {
    method LogValue (line 273) | func (s *SourceStateRemove) LogValue() slog.Value {
    method Order (line 280) | func (s *SourceStateRemove) Order() ScriptOrder {
    method Origin (line 285) | func (s *SourceStateRemove) Origin() SourceStateOrigin {
    method SourceRelPath (line 290) | func (s *SourceStateRemove) SourceRelPath() SourceRelPath {
    method TargetStateEntry (line 295) | func (s *SourceStateRemove) TargetStateEntry(destSystem System, destDi...
  type SourceStateOriginRemove (line 90) | type SourceStateOriginRemove struct
    method Path (line 315) | func (s SourceStateOriginRemove) Path() AbsPath {
    method OriginString (line 320) | func (s SourceStateOriginRemove) OriginString() string {
    method IsExternal (line 325) | func (SourceStateOriginRemove) IsExternal() bool {

FILE: internal/chezmoi/sourcestatetreenode.go
  type SourceStateEntryTreeNode (line 12) | type SourceStateEntryTreeNode struct
    method Get (line 23) | func (n *SourceStateEntryTreeNode) Get(relPath RelPath) SourceStateEnt...
    method GetNodes (line 32) | func (n *SourceStateEntryTreeNode) GetNodes(targetRelPath RelPath) []*...
    method ForEach (line 51) | func (n *SourceStateEntryTreeNode) ForEach(targetRelPath RelPath, f fu...
    method ForEachNode (line 61) | func (n *SourceStateEntryTreeNode) ForEachNode(targetRelPath RelPath, ...
    method GetMap (line 82) | func (n *SourceStateEntryTreeNode) GetMap() map[RelPath]SourceStateEnt...
    method MkdirAll (line 93) | func (n *SourceStateEntryTreeNode) MkdirAll(
    method Set (line 146) | func (n *SourceStateEntryTreeNode) Set(targetRelPath RelPath, sourceSt...
  function NewSourceStateEntryTreeNode (line 18) | func NewSourceStateEntryTreeNode() *SourceStateEntryTreeNode {

FILE: internal/chezmoi/sourcestatetreenode_test.go
  function TestSourceStateEntryTreeNodeEmpty (line 10) | func TestSourceStateEntryTreeNodeEmpty(t *testing.T) {
  function TestSourceStateEntryTreeNodeSingle (line 19) | func TestSourceStateEntryTreeNodeSingle(t *testing.T) {
  function TestSourceStateEntryTreeNodeMultiple (line 32) | func TestSourceStateEntryTreeNodeMultiple(t *testing.T) {

FILE: internal/chezmoi/system.go
  type RunScriptOptions (line 17) | type RunScriptOptions struct
  type System (line 25) | type System interface
  type emptySystemMixin (line 48) | type emptySystemMixin struct
    method Glob (line 50) | func (emptySystemMixin) Glob(pattern string) ([]string, error)       {...
    method Lstat (line 51) | func (emptySystemMixin) Lstat(name AbsPath) (fs.FileInfo, error)     {...
    method RawPath (line 52) | func (emptySystemMixin) RawPath(path AbsPath) (AbsPath, error)       {...
    method ReadDir (line 53) | func (emptySystemMixin) ReadDir(name AbsPath) ([]fs.DirEntry, error) {...
    method ReadFile (line 54) | func (emptySystemMixin) ReadFile(name AbsPath) ([]byte, error)       {...
    method Readlink (line 55) | func (emptySystemMixin) Readlink(name AbsPath) (string, error)       {...
    method Stat (line 56) | func (emptySystemMixin) Stat(name AbsPath) (fs.FileInfo, error)      {...
    method UnderlyingFS (line 57) | func (emptySystemMixin) UnderlyingFS() vfs.FS                        {...
  type noUpdateSystemMixin (line 60) | type noUpdateSystemMixin struct
    method Chmod (line 62) | func (noUpdateSystemMixin) Chmod(name AbsPath, perm fs.FileMode) error {
    method Chtimes (line 66) | func (noUpdateSystemMixin) Chtimes(name AbsPath, atime, mtime time.Tim...
    method Link (line 70) | func (noUpdateSystemMixin) Link(oldName, newName AbsPath) error {
    method Mkdir (line 74) | func (noUpdateSystemMixin) Mkdir(name AbsPath, perm fs.FileMode) error {
    method Remove (line 78) | func (noUpdateSystemMixin) Remove(name AbsPath) error {
    method RemoveAll (line 82) | func (noUpdateSystemMixin) RemoveAll(name AbsPath) error {
    method Rename (line 86) | func (noUpdateSystemMixin) Rename(oldPath, newPath AbsPath) error {
    method RunCmd (line 90) | func (noUpdateSystemMixin) RunCmd(cmd *exec.Cmd) error {
    method RunScript (line 94) | func (noUpdateSystemMixin) RunScript(scriptName RelPath, dir AbsPath, ...
    method WriteFile (line 98) | func (noUpdateSystemMixin) WriteFile(filename AbsPath, data []byte, pe...
    method WriteSymlink (line 102) | func (noUpdateSystemMixin) WriteSymlink(oldName string, newName AbsPat...
  function MkdirAll (line 107) | func MkdirAll(system System, absPath AbsPath, perm fs.FileMode) error {
  type WalkFunc (line 150) | type WalkFunc
  function Walk (line 156) | func Walk(system System, rootAbsPath AbsPath, walkFunc WalkFunc) error {
  type ConcurrentWalkSourceDirFunc (line 165) | type ConcurrentWalkSourceDirFunc
  function WalkSourceDir (line 177) | func WalkSourceDir(system System, sourceDirAbsPath AbsPath, walkFunc Wal...
  function walkSourceDirHelper (line 202) | func walkSourceDirHelper(system System, name AbsPath, fileInfo fs.FileIn...
  function concurrentWalkSourceDir (line 239) | func concurrentWalkSourceDir(
  function compareDirEntries (line 293) | func compareDirEntries(a, b fs.DirEntry) int {

FILE: internal/chezmoi/system_test.go
  function TestConcurrentWalkSourceDir (line 17) | func TestConcurrentWalkSourceDir(t *testing.T) {
  function TestWalkSourceDir (line 48) | func TestWalkSourceDir(t *testing.T) {

FILE: internal/chezmoi/targetstateentry.go
  type TargetStateEntry (line 15) | type TargetStateEntry interface
  type TargetStateModifyDirWithCmd (line 29) | type TargetStateModifyDirWithCmd struct
    method Apply (line 86) | func (t *TargetStateModifyDirWithCmd) Apply(
    method EntryState (line 115) | func (t *TargetStateModifyDirWithCmd) EntryState(umask fs.FileMode) (*...
    method Evaluate (line 123) | func (t *TargetStateModifyDirWithCmd) Evaluate() error {
    method SkipApply (line 128) | func (t *TargetStateModifyDirWithCmd) SkipApply(persistentState Persis...
    method SourceAttr (line 151) | func (t *TargetStateModifyDirWithCmd) SourceAttr() SourceAttr {
  type TargetStateDir (line 37) | type TargetStateDir struct
    method Apply (line 156) | func (t *TargetStateDir) Apply(
    method EntryState (line 174) | func (t *TargetStateDir) EntryState(umask fs.FileMode) (*EntryState, e...
    method Evaluate (line 182) | func (t *TargetStateDir) Evaluate() error {
    method SkipApply (line 187) | func (t *TargetStateDir) SkipApply(persistentState PersistentState, ta...
    method SourceAttr (line 192) | func (t *TargetStateDir) SourceAttr() SourceAttr {
  type TargetStateFile (line 43) | type TargetStateFile struct
    method Apply (line 197) | func (t *TargetStateFile) Apply(
    method Contents (line 238) | func (t *TargetStateFile) Contents() ([]byte, error) {
    method ContentsSHA256 (line 243) | func (t *TargetStateFile) ContentsSHA256() ([32]byte, error) {
    method EntryState (line 248) | func (t *TargetStateFile) EntryState(umask fs.FileMode) (*EntryState, ...
    method Evaluate (line 272) | func (t *TargetStateFile) Evaluate() error {
    method Perm (line 283) | func (t *TargetStateFile) Perm(umask fs.FileMode) fs.FileMode {
    method SkipApply (line 288) | func (t *TargetStateFile) SkipApply(persistentState PersistentState, t...
    method SourceAttr (line 293) | func (t *TargetStateFile) SourceAttr() SourceAttr {
  type TargetStateRemove (line 53) | type TargetStateRemove struct
    method Apply (line 298) | func (t *TargetStateRemove) Apply(
    method EntryState (line 310) | func (t *TargetStateRemove) EntryState(umask fs.FileMode) (*EntryState...
    method Evaluate (line 317) | func (t *TargetStateRemove) Evaluate() error {
    method SkipApply (line 322) | func (t *TargetStateRemove) SkipApply(persistentState PersistentState,...
    method SourceAttr (line 327) | func (t *TargetStateRemove) SourceAttr() SourceAttr {
  type TargetStateScript (line 56) | type TargetStateScript struct
    method Apply (line 332) | func (t *TargetStateScript) Apply(
    method Contents (line 385) | func (t *TargetStateScript) Contents() ([]byte, error) {
    method ContentsSHA256 (line 390) | func (t *TargetStateScript) ContentsSHA256() ([32]byte, error) {
    method EntryState (line 395) | func (t *TargetStateScript) EntryState(umask fs.FileMode) (*EntryState...
    method Evaluate (line 407) | func (t *TargetStateScript) Evaluate() error {
    method SkipApply (line 413) | func (t *TargetStateScript) SkipApply(persistentState PersistentState,...
    method SourceAttr (line 458) | func (t *TargetStateScript) SourceAttr() SourceAttr {
  type TargetStateSymlink (line 67) | type TargetStateSymlink struct
    method Apply (line 463) | func (t *TargetStateSymlink) Apply(
    method EntryState (line 498) | func (t *TargetStateSymlink) EntryState(umask fs.FileMode) (*EntryStat...
    method Evaluate (line 517) | func (t *TargetStateSymlink) Evaluate() error {
    method Linkname (line 522) | func (t *TargetStateSymlink) Linkname() (string, error) {
    method SkipApply (line 527) | func (t *TargetStateSymlink) SkipApply(persistentState PersistentState...
    method SourceAttr (line 532) | func (t *TargetStateSymlink) SourceAttr() SourceAttr {
  type ModifyDirWithCmdState (line 74) | type ModifyDirWithCmdState struct
  type ScriptState (line 80) | type ScriptState struct

FILE: internal/chezmoi/targetstateentry_test.go
  function TestTargetStateEntryApply (line 19) | func TestTargetStateEntryApply(t *testing.T) {
  function targetStateTest (line 115) | func targetStateTest(t *testing.T, ts TargetStateEntry) []vfst.PathTest {

FILE: internal/chezmoi/tarwritersystem.go
  type TarWriterSystem (line 11) | type TarWriterSystem struct
    method Close (line 28) | func (s *TarWriterSystem) Close() error {
    method Mkdir (line 33) | func (s *TarWriterSystem) Mkdir(name AbsPath, perm fs.FileMode) error {
    method RunCmd (line 42) | func (s *TarWriterSystem) RunCmd(cmd *exec.Cmd) error {
    method RunScript (line 47) | func (s *TarWriterSystem) RunScript(scriptName RelPath, dir AbsPath, d...
    method WriteFile (line 52) | func (s *TarWriterSystem) WriteFile(filename AbsPath, data []byte, per...
    method WriteSymlink (line 66) | func (s *TarWriterSystem) WriteSymlink(oldName string, newName AbsPath...
  function NewTarWriterSystem (line 20) | func NewTarWriterSystem(w io.Writer, headerTemplate tar.Header) *TarWrit...

FILE: internal/chezmoi/tarwritersystem_test.go
  function TestTarWriterSystem (line 19) | func TestTarWriterSystem(t *testing.T) {

FILE: internal/chezmoi/template.go
  type Template (line 21) | type Template struct
    method AddParseTree (line 93) | func (t *Template) AddParseTree(tmpl *Template) (*Template, error) {
    method Execute (line 100) | func (t *Template) Execute(data any) ([]byte, error) {
    method ExecuteString (line 123) | func (t *Template) ExecuteString(data any) (string, error) {
  type TemplateOptions (line 28) | type TemplateOptions struct
    method parseAndRemoveDirectives (line 134) | func (o *TemplateOptions) parseAndRemoveDirectives(data []byte) ([]byt...
  function ParseTemplate (line 40) | func ParseTemplate(name string, data []byte, options TemplateOptions) (*...
  function removeMatches (line 197) | func removeMatches(data []byte, matchesIndexes [][]int) []byte {
  function replaceLineEndings (line 209) | func replaceLineEndings(s, lineEnding string) string {

FILE: internal/chezmoi/template_test.go
  function TestTemplateParseAndExecute (line 11) | func TestTemplateParseAndExecute(t *testing.T) {

FILE: internal/chezmoi/templatefuncs.go
  function AbortEmptyTemplateFunc (line 7) | func AbortEmptyTemplateFunc() string {

FILE: internal/chezmoi/transparentencryption.go
  type TransparentEncryption (line 12) | type TransparentEncryption struct
    method Decrypt (line 15) | func (t TransparentEncryption) Decrypt(ciphertext []byte) ([]byte, err...
    method DecryptToFile (line 20) | func (t TransparentEncryption) DecryptToFile(plaintextAbsPath AbsPath,...
    method Encrypt (line 25) | func (t TransparentEncryption) Encrypt(plaintext []byte) ([]byte, erro...
    method EncryptFile (line 30) | func (t TransparentEncryption) EncryptFile(plaintextAbsPath AbsPath) (...
    method EncryptedSuffix (line 35) | func (t TransparentEncryption) EncryptedSuffix() string {

FILE: internal/chezmoi/zipwritersystem.go
  type ZIPWriterSystem (line 13) | type ZIPWriterSystem struct
    method Close (line 31) | func (s *ZIPWriterSystem) Close() error {
    method Mkdir (line 36) | func (s *ZIPWriterSystem) Mkdir(name AbsPath, perm fs.FileMode) error {
    method RunCmd (line 47) | func (s *ZIPWriterSystem) RunCmd(cmd *exec.Cmd) error {
    method RunScript (line 52) | func (s *ZIPWriterSystem) RunScript(scriptName RelPath, dir AbsPath, d...
    method WriteFile (line 57) | func (s *ZIPWriterSystem) WriteFile(filename AbsPath, data []byte, per...
    method WriteSymlink (line 74) | func (s *ZIPWriterSystem) WriteSymlink(oldName string, newName AbsPath...
  function NewZIPWriterSystem (line 23) | func NewZIPWriterSystem(w io.Writer, modified time.Time) *ZIPWriterSystem {

FILE: internal/chezmoi/zipwritersystem_test.go
  function TestZIPWriterSystem (line 20) | func TestZIPWriterSystem(t *testing.T) {

FILE: internal/chezmoiassert/chezmoiassert.go
  function PanicsWithError (line 12) | func PanicsWithError(tb testing.TB, expected error, fn func(), msgAndArg...
  function PanicsWithErrorString (line 25) | func PanicsWithErrorString(tb testing.TB, errString string, fn func(), m...
  function formatMsgAndArgs (line 38) | func formatMsgAndArgs(dflt string, msgAndArgs ...any) string {

FILE: internal/chezmoibubbles/boolinputmodel.go
  type BoolInputModel (line 12) | type BoolInputModel struct
    method Canceled (line 39) | func (m BoolInputModel) Canceled() bool {
    method Init (line 43) | func (m BoolInputModel) Init() tea.Cmd {
    method Update (line 47) | func (m BoolInputModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
    method Value (line 68) | func (m BoolInputModel) Value() bool {
    method View (line 77) | func (m BoolInputModel) View() string {
  function NewBoolInputModel (line 18) | func NewBoolInputModel(prompt string, defaultValue *bool) BoolInputModel {

FILE: internal/chezmoibubbles/boolinputmodel_test.go
  function TestBoolInputModel (line 9) | func TestBoolInputModel(t *testing.T) {

FILE: internal/chezmoibubbles/chezmoibubbles_test.go
  function makeKeyMsg (line 18) | func makeKeyMsg(r rune) tea.Msg {
  function makeKeyMsgs (line 31) | func makeKeyMsgs(s string) []tea.Msg {
  function testRunModelWithInput (line 39) | func testRunModelWithInput[M tea.Model](t *testing.T, model M, input str...
  function newValue (line 50) | func newValue[T any](value T) *T {

FILE: internal/chezmoibubbles/choiceinputmodel.go
  type ChoiceInputModel (line 14) | type ChoiceInputModel struct
    method Canceled (line 51) | func (m ChoiceInputModel) Canceled() bool {
    method Init (line 55) | func (m ChoiceInputModel) Init() tea.Cmd {
    method Update (line 59) | func (m ChoiceInputModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
    method Value (line 85) | func (m ChoiceInputModel) Value() string {
    method View (line 93) | func (m ChoiceInputModel) View() string {
  function NewChoiceInputModel (line 21) | func NewChoiceInputModel(prompt string, choices []string, defaultValue *...

FILE: internal/chezmoibubbles/choiceinputmodel_test.go
  function TestChoiceInputModel (line 9) | func TestChoiceInputModel(t *testing.T) {

FILE: internal/chezmoibubbles/intinputmodel.go
  type IntInputModel (line 10) | type IntInputModel struct
    method Canceled (line 40) | func (m IntInputModel) Canceled() bool {
    method Init (line 44) | func (m IntInputModel) Init() tea.Cmd {
    method Update (line 48) | func (m IntInputModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
    method Value (line 66) | func (m IntInputModel) Value() int64 {
    method View (line 75) | func (m IntInputModel) View() string {
  function NewIntInputModel (line 16) | func NewIntInputModel(prompt string, defaultValue *int64) IntInputModel {

FILE: internal/chezmoibubbles/intinputmodel_test.go
  function TestIntInputModel (line 9) | func TestIntInputModel(t *testing.T) {

FILE: internal/chezmoibubbles/multichoiceinputmodel.go
  type item (line 27) | type item struct
  type keymap (line 32) | type keymap struct
    method FullHelp (line 324) | func (k keymap) FullHelp() [][]key.Binding { return nil }
    method ShortHelp (line 327) | func (k keymap) ShortHelp() []key.Binding {
  type MultichoiceInputModel (line 46) | type MultichoiceInputModel struct
    method Init (line 152) | func (m MultichoiceInputModel) Init() tea.Cmd {
    method Update (line 156) | func (m MultichoiceInputModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
    method View (line 235) | func (m MultichoiceInputModel) View() string {
    method Value (line 278) | func (m MultichoiceInputModel) Value() []string {
    method deselectAll (line 294) | func (m MultichoiceInputModel) deselectAll() MultichoiceInputModel {
    method selectAll (line 302) | func (m MultichoiceInputModel) selectAll() MultichoiceInputModel {
  constant height (line 62) | height           = 10
  constant cursor (line 63) | cursor           = "> "
  constant selectedPrefix (line 64) | selectedPrefix   = "✓ "
  constant unselectedPrefix (line 65) | unselectedPrefix = "• "
  constant cursorPrefix (line 66) | cursorPrefix     = "• "
  function NewMultichoiceInputModel (line 76) | func NewMultichoiceInputModel(prompt string, choices []string, defaultVa...
  function clamp (line 313) | func clamp(x, low, high int) int {

FILE: internal/chezmoibubbles/passwordinputmodel.go
  type PasswordInputModel (line 8) | type PasswordInputModel struct
    method Canceled (line 24) | func (m PasswordInputModel) Canceled() bool {
    method Init (line 28) | func (m PasswordInputModel) Init() tea.Cmd {
    method Update (line 32) | func (m PasswordInputModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
    method Value (line 47) | func (m PasswordInputModel) Value() string {
    method View (line 51) | func (m PasswordInputModel) View() string {
  function NewPasswordInputModel (line 13) | func NewPasswordInputModel(prompt, placeholder string) PasswordInputModel {

FILE: internal/chezmoibubbles/passwordinputmodel_test.go
  function TestPasswordInputModel (line 9) | func TestPasswordInputModel(t *testing.T) {

FILE: internal/chezmoibubbles/stringinputmodel.go
  type StringInputModel (line 8) | type StringInputModel struct
    method Canceled (line 28) | func (m StringInputModel) Canceled() bool {
    method Init (line 32) | func (m StringInputModel) Init() tea.Cmd {
    method Update (line 36) | func (m StringInputModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
    method Value (line 51) | func (m StringInputModel) Value() string {
    method View (line 59) | func (m StringInputModel) View() string {
  function NewStringInputModel (line 14) | func NewStringInputModel(prompt string, defaultValue *string) StringInpu...

FILE: internal/chezmoibubbles/stringinputmodel_test.go
  function TestStringInputModel (line 9) | func TestStringInputModel(t *testing.T) {

FILE: internal/chezmoierrors/chezmoierrors.go
  function Combine (line 11) | func Combine(errs ...error) error {
  function CombineFunc (line 30) | func CombineFunc(errp *error, f func() error) { //nolint:gocritic

FILE: internal/chezmoigit/status.go
  type ParseError (line 10) | type ParseError
    method Error (line 127) | func (e ParseError) Error() string {
  type OrdinaryStatus (line 13) | type OrdinaryStatus struct
  type RenamedOrCopiedStatus (line 26) | type RenamedOrCopiedStatus struct
  type UnmergedStatus (line 42) | type UnmergedStatus struct
  type UntrackedStatus (line 57) | type UntrackedStatus struct
  type IgnoredStatus (line 62) | type IgnoredStatus struct
  type Status (line 67) | type Status struct
    method IsEmpty (line 272) | func (s *Status) IsEmpty() bool {
  function ParseStatusPorcelainV2 (line 136) | func ParseStatusPorcelainV2(output []byte) (*Status, error) {

FILE: internal/chezmoigit/status_test.go
  function TestParseStatusPorcelainV2 (line 11) | func TestParseStatusPorcelainV2(t *testing.T) {

FILE: internal/chezmoilog/chezmoilog.go
  constant few (line 16) | few = 64
  type OSExecCmdLogValuer (line 20) | type OSExecCmdLogValuer struct
    method LogValuer (line 37) | func (cmd OSExecCmdLogValuer) LogValuer() slog.Value {
  type OSExecExitLogValuerError (line 26) | type OSExecExitLogValuerError struct
    method LogValuer (line 55) | func (err OSExecExitLogValuerError) LogValuer() slog.Value {
  type OSProcessStateLogValuer (line 32) | type OSProcessStateLogValuer struct
    method LogValue (line 66) | func (p OSProcessStateLogValuer) LogValue() slog.Value {
  function AppendExitErrorAttrs (line 86) | func AppendExitErrorAttrs(attrs []slog.Attr, err error) []slog.Attr {
  function Bytes (line 110) | func Bytes(key string, data []byte) slog.Attr {
  function FirstFewBytes (line 116) | func FirstFewBytes(key string, data []byte) slog.Attr {
  function LogHTTPRequest (line 122) | func LogHTTPRequest(ctx context.Context, logger *slog.Logger, client *ht...
  function LogCmdCombinedOutput (line 143) | func LogCmdCombinedOutput(logger *slog.Logger, cmd *exec.Cmd) ([]byte, e...
  function LogCmdOutput (line 158) | func LogCmdOutput(logger *slog.Logger, cmd *exec.Cmd) ([]byte, error) {
  function LogCmdRun (line 173) | func LogCmdRun(logger *slog.Logger, cmd *exec.Cmd) error {
  function LogCmdStart (line 186) | func LogCmdStart(logger *slog.Logger, cmd *exec.Cmd) error {
  function LogCmdWait (line 199) | func LogCmdWait(logger *slog.Logger, cmd *exec.Cmd) error {
  function InfoOrError (line 211) | func InfoOrError(logger *slog.Logger, msg string, err error, attrs ...sl...
  function InfoOrErrorContext (line 215) | func InfoOrErrorContext(ctx context.Context, logger *slog.Logger, msg st...
  function Stringer (line 234) | func Stringer(key string, value fmt.Stringer) slog.Attr {
  function firstFewBytesHelper (line 239) | func firstFewBytesHelper(data []byte) []byte {

FILE: internal/chezmoilog/nullhandler.go
  type NullHandler (line 9) | type NullHandler struct
    method Enabled (line 11) | func (NullHandler) Enabled(context.Context, slog.Level) bool  { return...
    method Handle (line 12) | func (NullHandler) Handle(context.Context, slog.Record) error { return...
    method WithAttrs (line 13) | func (h NullHandler) WithAttrs([]slog.Attr) slog.Handler      { return...
    method WithGroup (line 14) | func (h NullHandler) WithGroup(string) slog.Handler           { return...

FILE: internal/chezmoiset/chezmoiset.go
  type Set (line 10) | type Set
  function New (line 13) | func New[T comparable](elements ...T) Set[T] {
  function NewWithCapacity (line 20) | func NewWithCapacity[T comparable](capacity int) Set[T] {
  method Add (line 25) | func (s Set[T]) Add(elements ...T) {
  method AddSet (line 32) | func (s Set[T]) AddSet(other Set[T]) {
  method AnyElement (line 40) | func (s Set[T]) AnyElement() T {
  method Contains (line 49) | func (s Set[T]) Contains(element T) bool {
  method Elements (line 55) | func (s Set[T]) Elements() iter.Seq[T] {
  method IsEmpty (line 60) | func (s Set[T]) IsEmpty() bool {
  method Remove (line 65) | func (s Set[T]) Remove(elements ...T) {

FILE: internal/chezmoitest/chezmoitest.go
  function AgeGenerateKey (line 25) | func AgeGenerateKey(command, identityFile string) (*age.X25519Recipient,...
  function GPGGenerateKey (line 38) | func GPGGenerateKey(command, homeDir string) (key, passphrase string, er...
  function HomeDir (line 57) | func HomeDir() string {
  function JoinLines (line 67) | func JoinLines(lines ...string) string {
  function SkipUnlessGOOS (line 75) | func SkipUnlessGOOS(t *testing.T, name string) {
  function WithTestFS (line 86) | func WithTestFS(t *testing.T, root any, f func(vfs.FS)) {
  function mustParseFileMode (line 95) | func mustParseFileMode(s string) fs.FileMode {

FILE: internal/chezmoitest/chezmoitest_test.go
  function TestJoinLines (line 10) | func TestJoinLines(t *testing.T) {

FILE: internal/chezmoitest/chezmoitest_unix.go
  function init (line 27) | func init() {

FILE: internal/cmd/addcmd.go
  constant severityIgnore (line 18) | severityIgnore  = "ignore"
  constant severityWarning (line 19) | severityWarning = "warning"
  constant severityError (line 20) | severityError   = "error"
  type addCmdConfig (line 29) | type addCmdConfig struct
  method newAddCmd (line 45) | func (c *Config) newAddCmd() *cobra.Command {
  method defaultOnIgnoreFunc (line 84) | func (c *Config) defaultOnIgnoreFunc(targetRelPath chezmoi.RelPath) {
  method defaultPreAddFunc (line 90) | func (c *Config) defaultPreAddFunc(targetRelPath chezmoi.RelPath, fileIn...
  method defaultReplaceFunc (line 137) | func (c *Config) defaultReplaceFunc(
  method runAddCmd (line 186) | func (c *Config) runAddCmd(cmd *cobra.Command, args []string, sourceStat...

FILE: internal/cmd/addcmd_test.go
  function TestAddCmd (line 16) | func TestAddCmd(t *testing.T) {
  function TestAddCmdChmod (line 303) | func TestAddCmdChmod(t *testing.T) {
  function TestAddCmdSecretsError (line 319) | func TestAddCmdSecretsError(t *testing.T) {
  function TestIssue4107 (line 329) | func TestIssue4107(t *testing.T) {

FILE: internal/cmd/agecmd.go
  type ageDecryptCmdConfig (line 13) | type ageDecryptCmdConfig struct
  type ageEncryptCmdConfig (line 17) | type ageEncryptCmdConfig struct
  type ageCmdConfig (line 21) | type ageCmdConfig struct
  method newAgeCmd (line 26) | func (c *Config) newAgeCmd() *cobra.Command {
  method runAgeDecryptCmd (line 64) | func (c *Config) runAgeDecryptCmd(cmd *cobra.Command, args []string) err...
  method runAgeEncryptCmd (line 91) | func (c *Config) runAgeEncryptCmd(cmd *cobra.Command, args []string) err...

FILE: internal/cmd/agekeygencmd.go
  type ageKeygenCmdConfig (line 18) | type ageKeygenCmdConfig struct
  method newAgeKeygenCmd (line 23) | func (c *Config) newAgeKeygenCmd() *cobra.Command {
  method runAgeKeygenCmd (line 44) | func (c *Config) runAgeKeygenCmd(cmd *cobra.Command, args []string) error {
  method runAgeKeygenConvertCmd (line 55) | func (c *Config) runAgeKeygenConvertCmd(args []string) error {
  method runAgeKeygenGenerateCmd (line 86) | func (c *Config) runAgeKeygenGenerateCmd(cmd *cobra.Command, args []stri...

FILE: internal/cmd/annotation.go
  constant persistentStateModeEmpty (line 25) | persistentStateModeEmpty         persistentStateModeValue = "empty"
  constant persistentStateModeNone (line 26) | persistentStateModeNone          persistentStateModeValue = "none"
  constant persistentStateModeReadOnly (line 27) | persistentStateModeReadOnly      persistentStateModeValue = "read-only"
  constant persistentStateModeReadMockWrite (line 28) | persistentStateModeReadMockWrite persistentStateModeValue = "read-mock-w...
  constant persistentStateModeReadWrite (line 29) | persistentStateModeReadWrite     persistentStateModeValue = "read-write"
  type annotation (line 32) | type annotation interface
  type annotationsSet (line 37) | type annotationsSet
    method hasTag (line 51) | func (a annotationsSet) hasTag(tag annotation) bool {
    method persistentStateMode (line 55) | func (a annotationsSet) persistentStateMode() persistentStateModeValue {
  function getAnnotations (line 39) | func getAnnotations(cmd *cobra.Command) annotationsSet {
  function newAnnotations (line 43) | func newAnnotations(annotations ...annotation) annotationsSet {
  type persistentStateModeValue (line 59) | type persistentStateModeValue
    method key (line 61) | func (m persistentStateModeValue) key() string {
    method value (line 65) | func (m persistentStateModeValue) value() string {
  type tagAnnotation (line 69) | type tagAnnotation
    method key (line 71) | func (a tagAnnotation) key() string {
    method value (line 75) | func (a tagAnnotation) value() string {

FILE: internal/cmd/applycmd.go
  type applyCmdConfig (line 9) | type applyCmdConfig struct
  method newApplyCmd (line 16) | func (c *Config) newApplyCmd() *cobra.Command {
  method runApplyCmd (line 41) | func (c *Config) runApplyCmd(cmd *cobra.Command, args []string) error {

FILE: internal/cmd/applycmd_test.go
  function TestApplyCmd (line 20) | func TestApplyCmd(t *testing.T) {
  function TestUserAgent (line 220) | func TestUserAgent(t *testing.T) {
  function TestIssue2132 (line 244) | func TestIssue2132(t *testing.T) {
  function TestIssue3206 (line 265) | func TestIssue3206(t *testing.T) {
  function TestIssue3216 (line 281) | func TestIssue3216(t *testing.T) {
  function TestIssue3703 (line 297) | func TestIssue3703(t *testing.T) {
  function TestIssue4927 (line 333) | func TestIssue4927(t *testing.T) {

FILE: internal/cmd/archivecmd.go
  type archiveCmdConfig (line 19) | type archiveCmdConfig struct
  method newArchiveCmd (line 28) | func (c *Config) newArchiveCmd() *cobra.Command {
  method runArchiveCmd (line 55) | func (c *Config) runArchiveCmd(cmd *cobra.Command, args []string) error {
  function tarHeaderTemplate (line 119) | func tarHeaderTemplate() tar.Header {

FILE: internal/cmd/autobool.go
  type autoBool (line 15) | type autoBool struct
    method MarshalJSON (line 29) | func (b autoBool) MarshalJSON() ([]byte, error) {
    method MarshalYAML (line 41) | func (b autoBool) MarshalYAML() (any, error) {
    method Set (line 49) | func (b *autoBool) Set(s string) error {
    method String (line 63) | func (b *autoBool) String() string {
    method Type (line 71) | func (b *autoBool) Type() string {
    method UnmarshalJSON (line 76) | func (b *autoBool) UnmarshalJSON(data []byte) error {
    method UnmarshalText (line 91) | func (b *autoBool) UnmarshalText(text []byte) error {
    method Value (line 106) | func (b *autoBool) Value(autoFunc func() bool) bool {
  function StringOrBoolToAutoBoolHookFunc (line 117) | func StringOrBoolToAutoBoolHookFunc() mapstructure.DecodeHookFunc {

FILE: internal/cmd/awssecretsmanagertemplatefuncs.go
  type awsSecretsManagerConfig (line 13) | type awsSecretsManagerConfig struct
  method awsSecretsManagerRawTemplateFunc (line 21) | func (c *Config) awsSecretsManagerRawTemplateFunc(arn string) string {
  method awsSecretsManagerTemplateFunc (line 73) | func (c *Config) awsSecretsManagerTemplateFunc(arn string) map[string]any {

FILE: internal/cmd/azurekeyvaulttemplatefuncs.go
  type azureKeyVault (line 12) | type azureKeyVault struct
    method URL (line 17) | func (v *azureKeyVault) URL(vaultName string) string {
  type azureKeyVaultConfig (line 21) | type azureKeyVaultConfig struct
    method GetSecret (line 27) | func (a *azureKeyVaultConfig) GetSecret(secretName, vaultName string) ...
  method azureKeyVaultTemplateFunc (line 59) | func (c *Config) azureKeyVaultTemplateFunc(args ...string) string {

FILE: internal/cmd/bitwardensecretstemplatefuncs.go
  type bitwardenSecretsConfig (line 13) | type bitwardenSecretsConfig struct
  method bitwardenSecretsTemplateFunc (line 18) | func (c *Config) bitwardenSecretsTemplateFunc(secretID string, additiona...
  method bitwardenSecretsOutput (line 34) | func (c *Config) bitwardenSecretsOutput(args []string) ([]byte, error) {

FILE: internal/cmd/bitwardentemplatefuncs.go
  type bitwardenConfig (line 14) | type bitwardenConfig struct
  method bitwardenAttachmentTemplateFunc (line 21) | func (c *Config) bitwardenAttachmentTemplateFunc(name, itemID string) st...
  method bitwardenAttachmentByRefTemplateFunc (line 26) | func (c *Config) bitwardenAttachmentByRefTemplateFunc(name string, args ...
  method bitwardenFieldsTemplateFunc (line 36) | func (c *Config) bitwardenFieldsTemplateFunc(args ...string) map[string]...
  method bitwardenTemplateFunc (line 52) | func (c *Config) bitwardenTemplateFunc(args ...string) map[string]any {
  method bitwardenLock (line 60) | func (c *Config) bitwardenLock() error {
  method bitwardenMaybeUnlock (line 71) | func (c *Config) bitwardenMaybeUnlock() error {
  method bitwardenOutput (line 87) | func (c *Config) bitwardenOutput(args []string) ([]byte, error) {
  method bitwardenUncachedOutput (line 105) | func (c *Config) bitwardenUncachedOutput(args []string) ([]byte, error) {

FILE: internal/cmd/catcmd.go
  method newCatCmd (line 12) | func (c *Config) newCatCmd() *cobra.Command {
  method runCatCmd (line 31) | func (c *Config) runCatCmd(cmd *cobra.Command, args []string, sourceStat...

FILE: internal/cmd/catcmd_test.go
  function TestCatCmd (line 14) | func TestCatCmd(t *testing.T) {

FILE: internal/cmd/catconfigcmd.go
  method newCatConfigCmd (line 5) | func (c *Config) newCatConfigCmd() *cobra.Command {
  method runCatConfigCmd (line 25) | func (c *Config) runCatConfigCmd(cmd *cobra.Command, args []string) error {

FILE: internal/cmd/cdcmd.go
  type cdCmdConfig (line 13) | type cdCmdConfig struct
  method newCDCmd (line 18) | func (c *Config) newCDCmd() *cobra.Command {
  method runCDCmd (line 39) | func (c *Config) runCDCmd(cmd *cobra.Command, args []string) error {
  method cdCommand (line 81) | func (c *Config) cdCommand() (string, []string, error) {

FILE: internal/cmd/chattrcmd.go
  type chattrCmdConfig (line 13) | type chattrCmdConfig struct
  type boolModifier (line 17) | type boolModifier
    method modify (line 229) | func (m boolModifier) modify(b bool) bool {
  constant boolModifierSet (line 20) | boolModifierSet            boolModifier = 1
  constant boolModifierLeaveUnchanged (line 21) | boolModifierLeaveUnchanged boolModifier = 0
  constant boolModifierClear (line 22) | boolModifierClear          boolModifier = -1
  type conditionModifier (line 25) | type conditionModifier
    method modify (line 243) | func (m conditionModifier) modify(condition chezmoi.ScriptCondition) c...
  constant conditionModifierLeaveUnchanged (line 28) | conditionModifierLeaveUnchanged conditionModifier = iota
  constant conditionModifierClearOnce (line 29) | conditionModifierClearOnce
  constant conditionModifierSetOnce (line 30) | conditionModifierSetOnce
  constant conditionModifierClearOnChange (line 31) | conditionModifierClearOnChange
  constant conditionModifierSetOnChange (line 32) | conditionModifierSetOnChange
  type orderModifier (line 35) | type orderModifier
    method modify (line 267) | func (m orderModifier) modify(order chezmoi.ScriptOrder) chezmoi.Scrip...
  constant orderModifierSetBefore (line 38) | orderModifierSetBefore      orderModifier = -2
  constant orderModifierClearBefore (line 39) | orderModifierClearBefore    orderModifier = -1
  constant orderModifierLeaveUnchanged (line 40) | orderModifierLeaveUnchanged orderModifier = 0
  constant orderModifierClearAfter (line 41) | orderModifierClearAfter     orderModifier = 1
  constant orderModifierSetAfter (line 42) | orderModifierSetAfter       orderModifier = 2
  type sourceFileTypeModifier (line 45) | type sourceFileTypeModifier
    method modify (line 291) | func (m sourceFileTypeModifier) modify(sourceFileType chezmoi.SourceFi...
  constant sourceFileTypeModifierLeaveUnchanged (line 48) | sourceFileTypeModifierLeaveUnchanged sourceFileTypeModifier = iota
  constant sourceFileTypeModifierSetCreate (line 49) | sourceFileTypeModifierSetCreate
  constant sourceFileTypeModifierClearCreate (line 50) | sourceFileTypeModifierClearCreate
  constant sourceFileTypeModifierSetModify (line 51) | sourceFileTypeModifierSetModify
  constant sourceFileTypeModifierClearModify (line 52) | sourceFileTypeModifierClearModify
  constant sourceFileTypeModifierSetRemove (line 53) | sourceFileTypeModifierSetRemove
  constant sourceFileTypeModifierClearRemove (line 54) | sourceFileTypeModifierClearRemove
  constant sourceFileTypeModifierSetScript (line 55) | sourceFileTypeModifierSetScript
  constant sourceFileTypeModifierClearScript (line 56) | sourceFileTypeModifierClearScript
  constant sourceFileTypeModifierSetSymlink (line 57) | sourceFileTypeModifierSetSymlink
  constant sourceFileTypeModifierClearSymlink (line 58) | sourceFileTypeModifierClearSymlink
  type modifier (line 61) | type modifier struct
    method modifyDirAttr (line 453) | func (m *modifier) modifyDirAttr(dirAttr chezmoi.DirAttr) chezmoi.DirA...
    method modifyFileAttr (line 465) | func (m *modifier) modifyFileAttr(fileAttr chezmoi.FileAttr) chezmoi.F...
  method newChattrCmd (line 76) | func (c *Config) newChattrCmd() *cobra.Command {
  method chattrCmdValidArgs (line 99) | func (c *Config) chattrCmdValidArgs(cmd *cobra.Command, args []string, t...
  method runChattrCmd (line 147) | func (c *Config) runChattrCmd(cmd *cobra.Command, args []string, sourceS...
  function parseModifier (line 336) | func parseModifier(s string) (*modifier, error) {

FILE: internal/cmd/chattrcmd_test.go
  function TestChattrCmdValidArgs (line 11) | func TestChattrCmdValidArgs(t *testing.T) {
  function TestParseAttrModifier (line 59) | func TestParseAttrModifier(t *testing.T) {

FILE: internal/cmd/choiceflag.go
  type choiceFlag (line 21) | type choiceFlag struct
    method FlagCompletionFunc (line 48) | func (f *choiceFlag) FlagCompletionFunc() func(*cobra.Command, []strin...
    method MarshalJSON (line 53) | func (f *choiceFlag) MarshalJSON() ([]byte, error) {
    method MarshalText (line 58) | func (f *choiceFlag) MarshalText() ([]byte, error) {
    method Set (line 63) | func (f *choiceFlag) Set(s string) error {
    method String (line 82) | func (f *choiceFlag) String() string {
    method Type (line 87) | func (f *choiceFlag) Type() string {
    method UnmarshalJSON (line 96) | func (f *choiceFlag) UnmarshalJSON(data []byte) error {
    method UnmarshalText (line 109) | func (f *choiceFlag) UnmarshalText(text []byte) error {
  function newChoiceFlag (line 35) | func newChoiceFlag(value string, allowedValues []string) *choiceFlag {
  function StringToChoiceFlagHookFunc (line 125) | func StringToChoiceFlagHookFunc() mapstructure.DecodeHookFunc {

FILE: internal/cmd/cmd.go
  constant readSourceStateHookName (line 24) | readSourceStateHookName = "read-source-state"
  type VersionInfo (line 35) | type VersionInfo struct
    method LogValue (line 42) | func (v VersionInfo) LogValue() slog.Value {
  function Main (line 52) | func Main(versionInfo VersionInfo, args []string) int {
  function deDuplicateError (line 70) | func deDuplicateError(err error) string {
  function example (line 85) | func example(command string) string {
  function markFlagsRequired (line 94) | func markFlagsRequired(cmd *cobra.Command, flags ...string) {
  function must (line 101) | func must(err error) {
  function mustValue (line 108) | func mustValue[T any](value T, err error) T {
  function mustValues (line 116) | func mustValues[T1, T2 any](value1 T1, value2 T2, err error) (T1, T2) {
  function mustLongHelp (line 125) | func mustLongHelp(command string) string {
  function ensureHasGroupID (line 135) | func ensureHasGroupID(cmd *cobra.Command) {
  function ensureAllFlagsDocumented (line 143) | func ensureAllFlagsDocumented(cmd *cobra.Command, persistentFlags *pflag...
  function runMain (line 180) | func runMain(versionInfo VersionInfo, args []string) (err error) {

FILE: internal/cmd/cmd_test.go
  function init (line 14) | func init() {
  function TestDeDuplicateError (line 20) | func TestDeDuplicateError(t *testing.T) {
  function TestMustGetLongHelpPanics (line 65) | func TestMustGetLongHelpPanics(t *testing.T) {

FILE: internal/cmd/completioncmd.go
  type completionCmdConfig (line 10) | type completionCmdConfig struct
  method newCompletionCmd (line 14) | func (c *Config) newCompletionCmd() *cobra.Command {
  method runCompletionCmd (line 33) | func (c *Config) runCompletionCmd(cmd *cobra.Command, args []string) err...
  function completion (line 41) | func completion(cmd *cobra.Command, shell string) (string, error) {

FILE: internal/cmd/config.go
  constant defaultSentinel (line 60) | defaultSentinel = "\x00"
  constant logComponentKey (line 63) | logComponentKey                  = "component"
  constant logComponentValueEncryption (line 64) | logComponentValueEncryption      = "encryption"
  constant logComponentValuePersistentState (line 65) | logComponentValuePersistentState = "persistentState"
  constant logComponentValueSourceState (line 66) | logComponentValueSourceState     = "sourceState"
  constant logComponentValueSystem (line 67) | logComponentValueSystem          = "system"
  constant groupIDAdvanced (line 71) | groupIDAdvanced      = "advanced"
  constant groupIDDaily (line 72) | groupIDDaily         = "daily"
  constant groupIDDocumentation (line 73) | groupIDDocumentation = "documentation"
  constant groupIDEncryption (line 74) | groupIDEncryption    = "encryption"
  constant groupIDInternal (line 75) | groupIDInternal      = "internal"
  constant groupIDMigration (line 76) | groupIDMigration     = "migration"
  constant groupIDRemote (line 77) | groupIDRemote        = "remote"
  constant groupIDTemplate (line 78) | groupIDTemplate      = "template"
  type doPurgeOptions (line 92) | type doPurgeOptions struct
  type commandConfig (line 101) | type commandConfig struct
  type hookConfig (line 107) | type hookConfig struct
  type templateConfig (line 112) | type templateConfig struct
  type warningsConfig (line 116) | type warningsConfig struct
  type ConfigFile (line 121) | type ConfigFile struct
    method toMap (line 3265) | func (f *ConfigFile) toMap() map[string]any {
  type Config (line 194) | type Config struct
    method Close (line 612) | func (c *Config) Close() error {
    method addTemplateFunc (line 627) | func (c *Config) addTemplateFunc(key string, value any) {
    method applyArgs (line 648) | func (c *Config) applyArgs(
    method builtinDiffFile (line 769) | func (c *Config) builtinDiffFile(
    method checkVersion (line 806) | func (c *Config) checkVersion() error {
    method cmdOutput (line 829) | func (c *Config) cmdOutput(dirAbsPath chezmoi.AbsPath, name string, ar...
    method colorAutoFunc (line 843) | func (c *Config) colorAutoFunc() bool {
    method createAndReloadConfigFile (line 855) | func (c *Config) createAndReloadConfigFile(cmd *cobra.Command) error {
    method createConfigFileContents (line 928) | func (c *Config) createConfigFileContents(filename chezmoi.RelPath, da...
    method defaultConfigFile (line 972) | func (c *Config) defaultConfigFile(fileSystem vfs.FS, bds *xdg.BaseDir...
    method decodeConfigContents (line 1026) | func (c *Config) decodeConfigContents(format chezmoi.Format, contents ...
    method decodeConfigFile (line 1036) | func (c *Config) decodeConfigFile(configFileAbsPath chezmoi.AbsPath, c...
    method decodeConfigMap (line 1075) | func (c *Config) decodeConfigMap(configMap map[string]any, configFile ...
    method defaultPreApplyFunc (line 1096) | func (c *Config) defaultPreApplyFunc(
    method defaultSourceDir (line 1211) | func (c *Config) defaultSourceDir(fileSystem vfs.Stater, bds *xdg.Base...
    method destAbsPathInfos (line 1249) | func (c *Config) destAbsPathInfos(
    method diffFile (line 1343) | func (c *Config) diffFile(
    method editor (line 1359) | func (c *Config) editor(args []string) (string, []string, error) {
    method errorf (line 1375) | func (c *Config) errorf(format string, args ...any) {
    method execute (line 1380) | func (c *Config) execute(args []string) error {
    method externalDiffFile (line 1392) | func (c *Config) externalDiffFile(
    method filterInput (line 1431) | func (c *Config) filterInput(args []string, f func([]byte) ([]byte, er...
    method findConfigTemplate (line 1475) | func (c *Config) findConfigTemplate() (*configTemplate, error) {
    method getConfigFileAbsPath (line 1529) | func (c *Config) getConfigFileAbsPath() (chezmoi.AbsPath, error) {
    method getDiffPager (line 1537) | func (c *Config) getDiffPager() (command string, args []string) {
    method getDiffPagerCmd (line 1550) | func (c *Config) getDiffPagerCmd() (*exec.Cmd, error) {
    method getGitleaksDetector (line 1584) | func (c *Config) getGitleaksDetector() (*detect.Detector, error) {
    method getHTTPClient (line 1618) | func (c *Config) getHTTPClient() (*http.Client, error) {
    method getSourceDirAbsPath (line 1649) | func (c *Config) getSourceDirAbsPath(options *getSourceDirAbsPathOptio...
    method getSourceState (line 1668) | func (c *Config) getSourceState(ctx context.Context, cmd *cobra.Comman...
    method getTemplateData (line 1677) | func (c *Config) getTemplateData(cmd *cobra.Command) *templateData {
    method getTemplateDataMap (line 1685) | func (c *Config) getTemplateDataMap(cmd *cobra.Command) map[string]any {
    method gitAutoAdd (line 1720) | func (c *Config) gitAutoAdd() (*chezmoigit.Status, error) {
    method gitAutoCommit (line 1733) | func (c *Config) gitAutoCommit(cmd *cobra.Command, status *chezmoigit....
    method gitAutoPush (line 1751) | func (c *Config) gitAutoPush(status *chezmoigit.Status) error {
    method gitCommitMessage (line 1765) | func (c *Config) gitCommitMessage(cmd *cobra.Command, status *chezmoig...
    method makeRunEWithSourceState (line 1816) | func (c *Config) makeRunEWithSourceState(
    method marshal (line 1829) | func (c *Config) marshal(dataFormat string, data any) error {
    method newBuiltinDiffSystem (line 1847) | func (c *Config) newBuiltinDiffSystem(s chezmoi.System, w io.Writer, d...
    method newRootCmd (line 1859) | func (c *Config) newRootCmd() (*cobra.Command, error) {
    method newDiffSystem (line 2004) | func (c *Config) newDiffSystem(s chezmoi.System, w io.Writer, dirAbsPa...
    method newExternalDiffSystem (line 2012) | func (c *Config) newExternalDiffSystem(s chezmoi.System) *chezmoi.Exte...
    method newSourceState (line 2027) | func (c *Config) newSourceState(
    method persistentPostRunRootE (line 2110) | func (c *Config) persistentPostRunRootE(cmd *cobra.Command, args []str...
    method finalize (line 2167) | func (c *Config) finalize() {
    method pageDiffOutput (line 2204) | func (c *Config) pageDiffOutput(output string) error {
    method persistentPreRunRootE (line 2217) | func (c *Config) persistentPreRunRootE(cmd *cobra.Command, args []stri...
    method persistentStateFile (line 2536) | func (c *Config) persistentStateFile() (chezmoi.AbsPath, error) {
    method progressAutoFunc (line 2548) | func (c *Config) progressAutoFunc() bool {
    method newTemplateData (line 2555) | func (c *Config) newTemplateData(cmd *cobra.Command) *templateData {
    method readConfig (line 2673) | func (c *Config) readConfig(configFileAbsPath chezmoi.AbsPath) error {
    method resetSourceState (line 2683) | func (c *Config) resetSourceState() {
    method run (line 2689) | func (c *Config) run(dir chezmoi.AbsPath, name string, args []string) ...
    method runEditor (line 2708) | func (c *Config) runEditor(args []string) error {
    method runHook (line 2727) | func (c *Config) runHook(command commandConfig) error {
    method runHookPost (line 2752) | func (c *Config) runHookPost(hook string) error {
    method runHookPre (line 2760) | func (c *Config) runHookPre(hook string) error {
    method runInstallInitShellSh (line 2774) | func (c *Config) runInstallInitShellSh(
    method setEncryption (line 2801) | func (c *Config) setEncryption() error {
    method setEnvironmentVariables (line 2860) | func (c *Config) setEnvironmentVariables() error {
    method sourceAbsPaths (line 2883) | func (c *Config) sourceAbsPaths(sourceState *chezmoi.SourceState, args...
    method targetRelPath (line 2898) | func (c *Config) targetRelPath(absPath chezmoi.AbsPath) (chezmoi.RelPa...
    method targetRelPaths (line 2914) | func (c *Config) targetRelPaths(
    method targetRelPathsBySourcePath (line 2978) | func (c *Config) targetRelPathsBySourcePath(sourceState *chezmoi.Sourc...
    method targetValidArgs (line 3007) | func (c *Config) targetValidArgs(cmd *cobra.Command, args []string, to...
    method tempDir (line 3050) | func (c *Config) tempDir(key string) (chezmoi.AbsPath, error) {
    method useBuiltinAgeAutoFunc (line 3070) | func (c *Config) useBuiltinAgeAutoFunc() bool {
    method useBuiltinGitAutoFunc (line 3078) | func (c *Config) useBuiltinGitAutoFunc() bool {
    method writeOutput (line 3086) | func (c *Config) writeOutput(data []byte, perm fs.FileMode) error {
    method writePaths (line 3099) | func (c *Config) writePaths(paths []string, options writePathsOptions)...
    method writeOutputString (line 3118) | func (c *Config) writeOutputString(data string, perm fs.FileMode) error {
  type templateData (line 293) | type templateData struct
  type configOption (line 322) | type configOption
  type configState (line 324) | type configState struct
  function newConfig (line 353) | func newConfig(options ...configOption) (*Config, error) {
  type applyArgsOptions (line 634) | type applyArgsOptions struct
  type onNotExist (line 1231) | type onNotExist
  constant onNotExistError (line 1234) | onNotExistError onNotExist = iota
  constant onNotExistIgnore (line 1235) | onNotExistIgnore
  constant onNotExistAdd (line 1236) | onNotExistAdd
  type destAbsPathInfosOptions (line 1239) | type destAbsPathInfosOptions struct
  type configTemplate (line 1465) | type configTemplate struct
  type modifyHTTPRequestFunc (line 1593) | type modifyHTTPRequestFunc
  type modifyHTTPRequestRoundTripper (line 1597) | type modifyHTTPRequestRoundTripper struct
    method RoundTrip (line 1610) | func (m modifyHTTPRequestRoundTripper) RoundTrip(req *http.Request) (*...
  function newModifyHTTPRequestRoundTripper (line 1602) | func newModifyHTTPRequestRoundTripper(f modifyHTTPRequestFunc, t http.Ro...
  type getSourceDirAbsPathOptions (line 1643) | type getSourceDirAbsPathOptions struct
  type runInstallInitShellOptions (line 2767) | type runInstallInitShellOptions struct
  type targetRelPathsOptions (line 2906) | type targetRelPathsOptions struct
  type writePathsOptions (line 3094) | type writePathsOptions struct
  function newConfigFile (line 3122) | func newConfigFile(bds *xdg.BaseDirectorySpecification) ConfigFile {
  function parseCommand (line 3286) | func parseCommand(command string, args []string) (string, []string, erro...
  function prependParentRelPaths (line 3319) | func prependParentRelPaths(relPaths []chezmoi.RelPath) []chezmoi.RelPath {
  function registerCommonFlagCompletionFuncs (line 3341) | func registerCommonFlagCompletionFuncs(cmd *cobra.Command) {
  function sha256Sum (line 3356) | func sha256Sum(data []byte) []byte {
  function withVersionInfo (line 3362) | func withVersionInfo(versionInfo VersionInfo) configOption {

FILE: internal/cmd/config_tags_test.go
  function TestExportedFieldsHaveMatchingMarshalTags (line 12) | func TestExportedFieldsHaveMatchingMarshalTags(t *testing.T) {
  function fieldTypesNeedsVerification (line 19) | func fieldTypesNeedsVerification(ft reflect.Type) []reflect.Type {
  function verifyTagsArePresentAndMatch (line 40) | func verifyTagsArePresentAndMatch(structType reflect.Type) (failed bool,...

FILE: internal/cmd/config_test.go
  function TestConfigFileFieldTagNamesMatch (line 24) | func TestConfigFileFieldTagNamesMatch(t *testing.T) {
  function TestAddTemplateFuncPanic (line 40) | func TestAddTemplateFuncPanic(t *testing.T) {
  function TestConfigFileFormatRoundTrip (line 52) | func TestConfigFileFormatRoundTrip(t *testing.T) {
  function TestParseCommand (line 133) | func TestParseCommand(t *testing.T) {
  function TestParseConfig (line 175) | func TestParseConfig(t *testing.T) {
  function TestPrependParentRelPaths (line 247) | func TestPrependParentRelPaths(t *testing.T) {
  function TestInitConfigWithIncludedTemplate (line 296) | func TestInitConfigWithIncludedTemplate(t *testing.T) {
  function TestUpperSnakeCaseToCamelCase (line 320) | func TestUpperSnakeCaseToCamelCase(t *testing.T) {
  function TestIssue3980 (line 333) | func TestIssue3980(t *testing.T) {
  function newTestConfig (line 505) | func newTestConfig(t *testing.T, fileSystem vfs.FS, options ...configOpt...
  function withBaseSystem (line 525) | func withBaseSystem(baseSystem chezmoi.System) configOption {
  function withDestSystem (line 532) | func withDestSystem(destSystem chezmoi.System) configOption {
  function withNoTTY (line 539) | func withNoTTY(noTTY bool) configOption { //nolint:unparam
  function withSourceSystem (line 546) | func withSourceSystem(sourceSystem chezmoi.System) configOption {
  function withStdin (line 553) | func withStdin(stdin io.Reader) configOption {
  function withStdout (line 560) | func withStdout(stdout io.Writer) configOption {
  function withTestFS (line 567) | func withTestFS(fileSystem vfs.FS) configOption {
  function withTestUser (line 574) | func withTestUser(t *testing.T, username string) configOption {
  function withUmask (line 613) | func withUmask(umask fs.FileMode) configOption {

FILE: internal/cmd/dashlanetemplatefuncs.go
  type dashlaneConfig (line 12) | type dashlaneConfig struct
  method dashlaneNoteTemplateFunc (line 19) | func (c *Config) dashlaneNoteTemplateFunc(filter string) any {
  method dashlanePasswordTemplateFunc (line 36) | func (c *Config) dashlanePasswordTemplateFunc(filter string) any {
  method dashlaneOutput (line 55) | func (c *Config) dashlaneOutput(args ...string) ([]byte, error) {

FILE: internal/cmd/datacmd.go
  type dataCmdConfig (line 11) | type dataCmdConfig struct
  method newDataCmd (line 15) | func (c *Config) newDataCmd() *cobra.Command {
  method runDataCmd (line 36) | func (c *Config) runDataCmd(cmd *cobra.Command, args []string) error {

FILE: internal/cmd/datacmd_test.go
  function TestDataCmd (line 16) | func TestDataCmd(t *testing.T) {

FILE: internal/cmd/dataformat.go
  constant formatUnknown (line 4) | formatUnknown = ""
  constant formatJSON (line 5) | formatJSON    = "json"
  constant formatTOML (line 6) | formatTOML    = "toml"
  constant formatYAML (line 7) | formatYAML    = "yaml"

FILE: internal/cmd/decryptcmd.go
  method newDecryptCommand (line 7) | func (c *Config) newDecryptCommand() *cobra.Command {
  method runDecryptCmd (line 23) | func (c *Config) runDecryptCmd(cmd *cobra.Command, args []string) error {

FILE: internal/cmd/destroycmd.go
  type destroyCmdConfig (line 13) | type destroyCmdConfig struct
  method newDestroyCmd (line 17) | func (c *Config) newDestroyCmd() *cobra.Command {
  method runDestroyCmd (line 39) | func (c *Config) runDestroyCmd(cmd *cobra.Command, args []string, source...

FILE: internal/cmd/diffcmd.go
  type diffCmdConfig (line 9) | type diffCmdConfig struct
  method newDiffCmd (line 23) | func (c *Config) newDiffCmd() *cobra.Command {
  method runDiffCmd (line 53) | func (c *Config) runDiffCmd(cmd *cobra.Command, args []string) (err erro...

FILE: internal/cmd/diffcmd_test.go
  function TestDiffCmd (line 15) | func TestDiffCmd(t *testing.T) {

FILE: internal/cmd/dockercmd.go
  type dockerCmdConfig (line 9) | type dockerCmdConfig struct
  type dockerExecCmdConfig (line 15) | type dockerExecCmdConfig struct
  type dockerRunCmdConfig (line 21) | type dockerRunCmdConfig struct
  method newDockerCmd (line 25) | func (c *Config) newDockerCmd() *cobra.Command {
  method runDockerExecCmd (line 68) | func (c *Config) runDockerExecCmd(cmd *cobra.Command, args []string, sou...
  method runDockerRunCmd (line 88) | func (c *Config) runDockerRunCmd(cmd *cobra.Command, args []string, sour...

FILE: internal/cmd/doctorcmd.go
  type checkResult (line 33) | type checkResult
  constant checkResultOmitted (line 36) | checkResultOmitted checkResult = -3
  constant checkResultFailed (line 37) | checkResultFailed  checkResult = -2
  constant checkResultSkipped (line 38) | checkResultSkipped checkResult = -1
  constant checkResultOK (line 39) | checkResultOK      checkResult = 0
  constant checkResultInfo (line 40) | checkResultInfo    checkResult = 1
  constant checkResultWarning (line 41) | checkResultWarning checkResult = 2
  constant checkResultError (line 42) | checkResultError   checkResult = 3
  type gitStatus (line 46) | type gitStatus
  constant gitStatusNotAWorkingCopy (line 49) | gitStatusNotAWorkingCopy gitStatus = ""
  constant gitStatusClean (line 50) | gitStatusClean           gitStatus = "clean"
  constant gitStatusDirty (line 51) | gitStatusDirty           gitStatus = "dirty"
  constant gitStatusError (line 52) | gitStatusError           gitStatus = "error"
  type check (line 56) | type check interface
  type argsCheck (line 72) | type argsCheck struct
    method Name (line 464) | func (c *argsCheck) Name() string {
    method Run (line 468) | func (c *argsCheck) Run(config *Config) (checkResult, string) {
  type binaryCheck (line 80) | type binaryCheck struct
    method Name (line 472) | func (c *binaryCheck) Name() string {
    method Run (line 476) | func (c *binaryCheck) Run(config *Config) (checkResult, string) {
  type configFileCheck (line 92) | type configFileCheck struct
    method Name (line 525) | func (c *configFileCheck) Name() string {
    method Run (line 529) | func (c *configFileCheck) Run(config *Config) (checkResult, string) {
  type dirCheck (line 98) | type dirCheck struct
    method Name (line 561) | func (c *dirCheck) Name() string {
    method Run (line 565) | func (c *dirCheck) Run(config *Config) (checkResult, string) {
  type executableCheck (line 104) | type executableCheck struct
    method Name (line 607) | func (executableCheck) Name() string {
    method Run (line 611) | func (executableCheck) Run(config *Config) (checkResult, string) {
  type fileCheck (line 107) | type fileCheck struct
    method Name (line 623) | func (c *fileCheck) Name() string {
    method Run (line 627) | func (c *fileCheck) Run(config *Config) (checkResult, string) {
  type goVersionCheck (line 115) | type goVersionCheck struct
    method Name (line 642) | func (goVersionCheck) Name() string {
    method Run (line 646) | func (goVersionCheck) Run(config *Config) (checkResult, string) {
  type latestVersionCheck (line 118) | type latestVersionCheck struct
    method Name (line 650) | func (c *latestVersionCheck) Name() string {
    method Run (line 654) | func (c *latestVersionCheck) Run(config *Config) (checkResult, string) {
  type osArchCheck (line 126) | type osArchCheck struct
    method Name (line 691) | func (osArchCheck) Name() string {
    method Run (line 695) | func (osArchCheck) Run(config *Config) (checkResult, string) {
  type omittedCheck (line 129) | type omittedCheck struct
    method Name (line 709) | func (omittedCheck) Name() string {
    method Run (line 713) | func (omittedCheck) Run(config *Config) (checkResult, string) {
  type suspiciousEntriesCheck (line 133) | type suspiciousEntriesCheck struct
    method Name (line 717) | func (c *suspiciousEntriesCheck) Name() string {
    method Run (line 721) | func (c *suspiciousEntriesCheck) Run(config *Config) (checkResult, str...
  type symlinkCheck (line 139) | type symlinkCheck struct
    method Name (line 745) | func (symlinkCheck) Name() string {
    method Run (line 749) | func (symlinkCheck) Run(config *Config) (checkResult, string) {
  type upgradeMethodCheck (line 142) | type upgradeMethodCheck struct
    method Name (line 770) | func (upgradeMethodCheck) Name() string {
    method Run (line 774) | func (upgradeMethodCheck) Run(config *Config) (checkResult, string) {
  type versionCheck (line 145) | type versionCheck struct
    method Name (line 789) | func (c *versionCheck) Name() string {
    method Run (line 793) | func (c *versionCheck) Run(config *Config) (checkResult, string) {
  type doctorCmdConfig (line 150) | type doctorCmdConfig struct
  method newDoctorCmd (line 154) | func (c *Config) newDoctorCmd() *cobra.Command {
  method runDoctorCmd (line 176) | func (c *Config) runDoctorCmd(cmd *cobra.Command, args []string) error {

FILE: internal/cmd/doctorcmd_unix.go
  type hardlinkCheck (line 20) | type hardlinkCheck struct
    method Name (line 26) | func (hardlinkCheck) Name() string {
    method Run (line 30) | func (hardlinkCheck) Run(config *Config) (checkResult, string) {
  type systeminfoCheck (line 21) | type systeminfoCheck struct
  type umaskCheck (line 22) | type umaskCheck struct
    method Name (line 70) | func (umaskCheck) Name() string {
    method Run (line 74) | func (umaskCheck) Run(config *Config) (checkResult, string) {
  type unameCheck (line 23) | type unameCheck struct
    method Name (line 84) | func (unameCheck) Name() string {
    method Run (line 88) | func (unameCheck) Run(config *Config) (checkResult, string) {

FILE: internal/cmd/doctorcmd_windows.go
  type hardlinkCheck (line 13) | type hardlinkCheck struct
  type systeminfoCheck (line 14) | type systeminfoCheck struct
    method Name (line 19) | func (systeminfoCheck) Name() string {
    method Run (line 23) | func (systeminfoCheck) Run(config *Config) (checkResult, string) {
  type umaskCheck (line 15) | type umaskCheck struct
  type unameCheck (line 16) | type unameCheck struct

FILE: internal/cmd/dopplertemplatefuncs.go
  type dopplerConfig (line 14) | type dopplerConfig struct
  method dopplerTemplateFunc (line 22) | func (c *Config) dopplerTemplateFunc(key string, additionalArgs ...strin...
  method dopplerProjectJSONTemplateFunc (line 43) | func (c *Config) dopplerProjectJSONTemplateFunc(additionalArgs ...string...
  method appendDopplerAdditionalArgs (line 55) | func (c *Config) appendDopplerAdditionalArgs(args, additionalArgs []stri...
  method dopplerOutput (line 70) | func (c *Config) dopplerOutput(args []string) ([]byte, error) {

FILE: internal/cmd/dumpcmd.go
  type dumpCmdConfig (line 11) | type dumpCmdConfig struct
  method newDumpCmd (line 19) | func (c *Config) newDumpCmd() *cobra.Command {
  method runDumpCmd (line 45) | func (c *Config) runDumpCmd(cmd *cobra.Command, args []string) error {

FILE: internal/cmd/dumpconfigcmd.go
  type dumpConfigCmdConfig (line 9) | type dumpConfigCmdConfig struct
  method newDumpConfigCmd (line 13) | func (c *Config) newDumpConfigCmd() *cobra.Command {
  method runDumpConfigCmd (line 35) | func (c *Config) runDumpConfigCmd(cmd *cobra.Command, args []string) err...

FILE: internal/cmd/editcmd.go
  type editCmdConfig (line 17) | type editCmdConfig struct
  method newEditCmd (line 28) | func (c *Config) newEditCmd() *cobra.Command {
  method runEditCmd (line 56) | func (c *Config) runEditCmd(cmd *cobra.Command, args []string) error {

FILE: internal/cmd/editconfigcmd.go
  method newEditConfigCmd (line 7) | func (c *Config) newEditConfigCmd() *cobra.Command {
  method runEditConfigCmd (line 29) | func (c *Config) runEditConfigCmd(cmd *cobra.Command, args []string) err...

FILE: internal/cmd/editconfigtemplatecmd.go
  method newEditConfigTemplateCmd (line 12) | func (c *Config) newEditConfigTemplateCmd() *cobra.Command {
  method runEditConfigTemplateCmd (line 33) | func (c *Config) runEditConfigTemplateCmd(cmd *cobra.Command, args []str...

FILE: internal/cmd/editencryptedcmd.go
  method newEditEncryptedCmd (line 11) | func (c *Config) newEditEncryptedCmd() *cobra.Command {
  method runEditEncryptedCmd (line 29) | func (c *Config) runEditEncryptedCmd(cmd *cobra.Command, args []string) ...

FILE: internal/cmd/ejsontemplatefuncs.go
  type ejsonConfig (line 9) | type ejsonConfig struct
  method ejsonDecryptWithKeyTemplateFunc (line 15) | func (c *Config) ejsonDecryptWithKeyTemplateFunc(filePath, key string) a...
  method ejsonDecryptTemplateFunc (line 34) | func (c *Config) ejsonDecryptTemplateFunc(filePath string) any {

FILE: internal/cmd/encryptcmd.go
  method newEncryptCmd (line 7) | func (c *Config) newEncryptCmd() *cobra.Command {
  method runEncryptCmd (line 23) | func (c *Config) runEncryptCmd(cmd *cobra.Command, args []string) error {

FILE: internal/cmd/encryptiontemplatefuncs.go
  method decryptTemplateFunc (line 3) | func (c *Config) decryptTemplateFunc(ciphertext string) string {
  method encryptTemplateFunc (line 7) | func (c *Config) encryptTemplateFunc(plaintext string) string {

FILE: internal/cmd/errors.go
  type cmdOutputError (line 8) | type cmdOutputError struct
    method Error (line 24) | func (e *cmdOutputError) Error() string {
    method Unwrap (line 31) | func (e *cmdOutputError) Unwrap() error {
  function newCmdOutputError (line 15) | func newCmdOutputError(cmd *exec.Cmd, output []byte, err error) *cmdOutp...

FILE: internal/cmd/executetemplatecmd.go
  type executeTemplateCmdConfig (line 16) | type executeTemplateCmdConfig struct
  method newExecuteTemplateCmd (line 29) | func (c *Config) newExecuteTemplateCmd() *cobra.Command {
  method runExecuteTemplateCmd (line 67) | func (c *Config) runExecuteTemplateCmd(cmd *cobra.Command, args []string...

FILE: internal/cmd/forgetcmd.go
  method newForgetCmd (line 11) | func (c *Config) newForgetCmd() *cobra.Command {
  method runForgetCmd (line 31) | func (c *Config) runForgetCmd(cmd *cobra.Command, args []string, sourceS...

FILE: internal/cmd/generatecmd.go
  type generateCmdConfig (line 13) | type generateCmdConfig struct
  type generateInstallInitShellShCmdConfig (line 17) | type generateInstallInitShellShCmdConfig struct
  method newGenerateCmd (line 23) | func (c *Config) newGenerateCmd() *cobra.Command {
  method runGenerateGitCommitMessageCmd (line 78) | func (c *Config) runGenerateGitCommitMessageCmd(cmd *cobra.Command, args...
  method runGenerateInstallShCmd (line 99) | func (c *Config) runGenerateInstallShCmd(cmd *cobra.Command, args []stri...
  method runGenerateInstallInitShellShCmd (line 103) | func (c *Config) runGenerateInstallInitShellShCmd(cmd *cobra.Command, ar...

FILE: internal/cmd/gitcmd.go
  type gitCmdConfig (line 7) | type gitCmdConfig struct
  method newGitCmd (line 17) | func (c *Config) newGitCmd() *cobra.Command {
  method runGitCmd (line 36) | func (c *Config) runGitCmd(cmd *cobra.Command, args []string) error {

FILE: internal/cmd/githubtemplatefuncs.go
  type gitHubConfig (line 15) | type gitHubConfig struct
  type gitHubKeysState (line 19) | type gitHubKeysState struct
  type gitHubLatestReleaseState (line 24) | type gitHubLatestReleaseState struct
  type gitHubReleasesState (line 29) | type gitHubReleasesState struct
  type gitHubTagsState (line 34) | type gitHubTagsState struct
  type gitHubData (line 47) | type gitHubData struct
  method gitHubKeysTemplateFunc (line 57) | func (c *Config) gitHubKeysTemplateFunc(user string) []*github.Key {
  method githubMatchingReleaseAssetURL (line 103) | func (c *Config) githubMatchingReleaseAssetURL(release *github.Repositor...
  method gitHubLatestReleaseAssetURLTemplateFunc (line 115) | func (c *Config) gitHubLatestReleaseAssetURLTemplateFunc(ownerRepo, patt...
  method gitHubReleaseAssetURLTemplateFunc (line 120) | func (c *Config) gitHubReleaseAssetURLTemplateFunc(ownerRepo, version, p...
  method gitHubRelease (line 125) | func (c *Config) gitHubRelease(ownerRepo, version string) (*github.Repos...
  method gitHubLatestRelease (line 187) | func (c *Config) gitHubLatestRelease(ownerRepo string) (*github.Reposito...
  method gitHubLatestReleaseTemplateFunc (line 245) | func (c *Config) gitHubLatestReleaseTemplateFunc(ownerRepo string) *gith...
  method gitHubReleaseTemplateFunc (line 249) | func (c *Config) gitHubReleaseTemplateFunc(ownerRepo, version string) *g...
  method gitHubLatestTagTemplateFunc (line 253) | func (c *Config) gitHubLatestTagTemplateFunc(ownerRepo string) *github.R...
  method gitHubReleasesTemplateFunc (line 263) | func (c *Config) gitHubReleasesTemplateFunc(ownerRepo string) []*github....
  method gitHubTagsTemplateFunc (line 309) | func (c *Config) gitHubTagsTemplateFunc(ownerRepo string) []*github.Repo...
  method getGitHubTags (line 313) | func (c *Config) getGitHubTags(ownerRepo string) ([]*github.RepositoryTa...
  method getGitHubClient (line 366) | func (c *Config) getGitHubClient(ctx context.Context) (*github.Client, e...
  function gitHubSplitOwnerRepo (line 381) | func gitHubSplitOwnerRepo(ownerRepo string) (owner, repo string, err err...

FILE: internal/cmd/gopasstemplatefuncs.go
  type gopassMode (line 19) | type gopassMode
  constant gopassModeBuiltin (line 22) | gopassModeBuiltin gopassMode = "builtin"
  constant gopassModeDefault (line 23) | gopassModeDefault gopassMode = ""
  type gopassConfig (line 33) | type gopassConfig struct
  method gopassTemplateFunc (line 44) | func (c *Config) gopassTemplateFunc(id string) string {
  method gopassRawTemplateFunc (line 69) | func (c *Config) gopassRawTemplateFunc(id string) string {
  method builtinGopassClient (line 92) | func (c *Config) builtinGopassClient() (*api.Gopass, error) {
  method builtinGopassSecret (line 115) | func (c *Config) builtinGopassSecret(name, revision string) (gopass.Secr...
  method gopassOutput (line 127) | func (c *Config) gopassOutput(args ...string) ([]byte, error) {

FILE: internal/cmd/helpcmd.go
  method newHelpCmd (line 10) | func (c *Config) newHelpCmd() *cobra.Command {
  method runHelpCmd (line 28) | func (c *Config) runHelpCmd(cmd *cobra.Command, args []string) error {

FILE: internal/cmd/helps.gen.go
  type help (line 9) | type help struct

FILE: internal/cmd/ignoredcmd.go
  type ignoredCmdConfig (line 9) | type ignoredCmdConfig struct
  method newIgnoredCmd (line 14) | func (c *Config) newIgnoredCmd() *cobra.Command {
  method runIgnoredCmd (line 36) | func (c *Config) runIgnoredCmd(cmd *cobra.Command, args []string, source...

FILE: internal/cmd/importcmd.go
  type importCmdConfig (line 11) | type importCmdConfig struct
  method newImportCmd (line 19) | func (c *Config) newImportCmd() *cobra.Command {
  method runImportCmd (line 47) | func (c *Config) runImportCmd(cmd *cobra.Command, args []string, sourceS...

FILE: internal/cmd/importcmd_test.go
  function TestImportCmd (line 17) | func TestImportCmd(t *testing.T) {

FILE: internal/cmd/initcmd.go
  type initCmdConfig (line 21) | type initCmdConfig struct
  type gitCloneOptionsLogValuer (line 85) | type gitCloneOptionsLogValuer
    method LogValue (line 305) | func (o gitCloneOptionsLogValuer) LogValue() slog.Value {
  method newInitCmd (line 87) | func (c *Config) newInitCmd() *cobra.Command {
  method runInitCmd (line 125) | func (c *Config) runInitCmd(cmd *cobra.Command, args []string) error {
  method builtinGitClone (line 246) | func (c *Config) builtinGitClone(repoURLStr string, workingTreeRawPath c...
  method builtinGitInit (line 294) | func (c *Config) builtinGitInit(workingTreeRawPath chezmoi.AbsPath) error {
  function guessRepoURL (line 344) | func guessRepoURL(arg string, ssh bool) string {

FILE: internal/cmd/initcmd_test.go
  function TestGuessRepoURL (line 15) | func TestGuessRepoURL(t *testing.T) {
  function TestIssue2137 (line 109) | func TestIssue2137(t *testing.T) {
  function TestIssue2283 (line 124) | func TestIssue2283(t *testing.T) {

FILE: internal/cmd/inittemplatefuncs.go
  method exitInitTemplateFunc (line 11) | func (c *Config) exitInitTemplateFunc(code int) string {
  method stdinIsATTYInitTemplateFunc (line 15) | func (c *Config) stdinIsATTYInitTemplateFunc() bool {
  method writeToStdout (line 26) | func (c *Config) writeToStdout(args ...string) string {

FILE: internal/cmd/inittemplatefuncs_test.go
  function TestPromptBoolInteractiveTemplateFunc (line 10) | func TestPromptBoolInteractiveTemplateFunc(t *testing.T) {
  function TestPromptChoiceInteractiveTemplateFunc (line 83) | func TestPromptChoiceInteractiveTemplateFunc(t *testing.T) {
  function TestPromptIntInteractiveTemplateFunc (line 173) | func TestPromptIntInteractiveTemplateFunc(t *testing.T) {
  function TestPromptMultichoiceInteractiveTemplateFunc (line 246) | func TestPromptMultichoiceInteractiveTemplateFunc(t *testing.T) {
  function TestPromptStringInteractiveTemplateFunc (line 350) | func TestPromptStringInteractiveTemplateFunc(t *testing.T) {

FILE: internal/cmd/interactivetemplatefuncs.go
  type interactiveTemplateFuncsConfig (line 12) | type interactiveTemplateFuncsConfig struct
  method addInteractiveTemplateFuncFlags (line 22) | func (c *Config) addInteractiveTemplateFuncFlags(flags *pflag.FlagSet) {
  method promptBoolInteractiveTemplateFunc (line 67) | func (c *Config) promptBoolInteractiveTemplateFunc(prompt string, args ....
  method promptBoolOnceInteractiveTemplateFunc (line 79) | func (c *Config) promptBoolOnceInteractiveTemplateFunc(m map[string]any,...
  method promptChoiceInteractiveTemplateFunc (line 101) | func (c *Config) promptChoiceInteractiveTemplateFunc(prompt string, choi...
  method promptChoiceOnceInteractiveTemplateFunc (line 114) | func (c *Config) promptChoiceOnceInteractiveTemplateFunc(
  method promptMultichoiceInteractiveTemplateFunc (line 137) | func (c *Config) promptMultichoiceInteractiveTemplateFunc(prompt string,...
  method promptMultichoiceOnceInteractiveTemplateFunc (line 158) | func (c *Config) promptMultichoiceOnceInteractiveTemplateFunc(
  method promptIntInteractiveTemplateFunc (line 179) | func (c *Config) promptIntInteractiveTemplateFunc(prompt string, args .....
  method promptIntOnceInteractiveTemplateFunc (line 191) | func (c *Config) promptIntOnceInteractiveTemplateFunc(m map[string]any, ...
  method promptStringInteractiveTemplateFunc (line 208) | func (c *Config) promptStringInteractiveTemplateFunc(prompt string, args...
  method promptStringOnceInteractiveTemplateFunc (line 220) | func (c *Config) promptStringOnceInteractiveTemplateFunc(m map[string]an...

FILE: internal/cmd/internaltestcmd.go
  method newInternalTestCmd (line 12) | func (c *Config) newInternalTestCmd() *cobra.Command {
  method runInternalTestPromptBoolCmd (line 102) | func (c *Config) runInternalTestPromptBoolCmd(cmd *cobra.Command, args [...
  method runInternalTestPromptChoiceCmd (line 118) | func (c *Config) runInternalTestPromptChoiceCmd(cmd *cobra.Command, args...
  method runInternalTestPromptMultichoiceCmd (line 126) | func (c *Config) runInternalTestPromptMultichoiceCmd(cmd *cobra.Command,...
  method runInternalTestPromptIntCmd (line 147) | func (c *Config) runInternalTestPromptIntCmd(cmd *cobra.Command, args []...
  method runInternalTestPromptStringCmd (line 163) | func (c *Config) runInternalTestPromptStringCmd(cmd *cobra.Command, args...
  method runInternalTestReadPasswordCmd (line 171) | func (c *Config) runInternalTestReadPasswordCmd(cmd *cobra.Command, args...

FILE: internal/cmd/interpreters.go
  function NewDefaultInterpreters (line 7) | func NewDefaultInterpreters(findExecutable func([]string, []string) (str...

FILE: internal/cmd/interpreters_test.go
  function TestNewDefaultInterpreters_OtherInterpreters (line 11) | func TestNewDefaultInterpreters_OtherInterpreters(t *testing.T) {

FILE: internal/cmd/interpreters_unix_test.go
  function TestNewDefaultInterpreters_PS1 (line 13) | func TestNewDefaultInterpreters_PS1(t *testing.T) {

FILE: internal/cmd/interpreters_windows_test.go
  function TestNewDefaultInterpreters_PS1 (line 13) | func TestNewDefaultInterpreters_PS1(t *testing.T) {

FILE: internal/cmd/keepassxctemplatefuncs.go
  type keepassxcMode (line 23) | type keepassxcMode
  constant keepassxcModeBuiltin (line 26) | keepassxcModeBuiltin       keepassxcMode = "builtin"
  constant keepassxcModeCachePassword (line 27) | keepassxcModeCachePassword keepassxcMode = "cache-password"
  constant keepassxcModeOpen (line 28) | keepassxcModeOpen          keepassxcMode = "open"
  type keepassxcAttributeCacheKey (line 31) | type keepassxcAttributeCacheKey struct
  type keepassxcConfig (line 36) | type keepassxcConfig struct
  method keepassxcAttachmentTemplateFunc (line 63) | func (c *Config) keepassxcAttachmentTemplateFunc(entry, name string) str...
  method keepassxcTemplateFunc (line 93) | func (c *Config) keepassxcTemplateFunc(entry string) map[string]string {
  method keepassxcAttributeTemplateFunc (line 117) | func (c *Config) keepassxcAttributeTemplateFunc(entry, attribute string)...
  method keepassxcOutput (line 152) | func (c *Config) keepassxcOutput(command string, args ...string) ([]byte...
  method keepassxcOutputCachePassword (line 169) | func (c *Config) keepassxcOutputCachePassword(command string, args ...st...
  method keepassxcOutputOpen (line 198) | func (c *Config) keepassxcOutputOpen(command string, args ...string) ([]...
  function keepassxcParseOutput (line 323) | func keepassxcParseOutput(output []byte) map[string]string {
  method keepassxcClose (line 339) | func (c *Config) keepassxcClose() error {
  method keepassxcBuiltinExtractValues (line 357) | func (c *Config) keepassxcBuiltinExtractValues(
  function keepassxcBuiltinBuildCache (line 390) | func keepassxcBuiltinBuildCache(
  function keepassxcBuiltinMapValueCache (line 430) | func keepassxcBuiltinMapValueCache(_ *gokeepasslib.Database, entry gokee...
  function keepassxcBuiltinMapAttachmentCache (line 439) | func keepassxcBuiltinMapAttachmentCache(db *gokeepasslib.Database, entry...

FILE: internal/cmd/keepassxctemplatefuncs_test.go
  function TestKeepassxcParseOutput (line 19) | func TestKeepassxcParseOutput(t *testing.T) {
  type keepassEntry (line 56) | type keepassEntry struct
  function TestKeepassxcTemplateFuncs (line 67) | func TestKeepassxcTemplateFuncs(t *testing.T) {
  function createKeepassEntry (line 194) | func createKeepassEntry(t *testing.T, command, tempDir string, kpe keepa...

FILE: internal/cmd/keepertemplatefuncs.go
  type keeperConfig (line 13) | type keeperConfig struct
  method keeperTemplateFunc (line 19) | func (c *Config) keeperTemplateFunc(record string) map[string]any {
  method keeperDataFieldsTemplateFunc (line 26) | func (c *Config) keeperDataFieldsTemplateFunc(record string) map[string]...
  method keeperFindPasswordTemplateFunc (line 44) | func (c *Config) keeperFindPasswordTemplateFunc(record string) string {
  method keeperOutput (line 49) | func (c *Config) keeperOutput(args []string) ([]byte, error) {

FILE: internal/cmd/keyringtemplatefuncs.go
  type keyringKey (line 11) | type keyringKey struct
  type keyringData (line 16) | type keyringData struct
  method keyringTemplateFunc (line 20) | func (c *Config) keyringTemplateFunc(service, user string) string {

FILE: internal/cmd/keyringtemplatefuncs_freebsdnocgo.go
  type keyringData (line 5) | type keyringData struct
  method keyringTemplateFunc (line 7) | func (c *Config) keyringTemplateFunc(service, user string) string {

FILE: internal/cmd/lastpasstemplatefuncs.go
  type lastpassConfig (line 25) | type lastpassConfig struct
  method lastpassTemplateFunc (line 30) | func (c *Config) lastpassTemplateFunc(id string) []map[string]any {
  method lastpassRawTemplateFunc (line 40) | func (c *Config) lastpassRawTemplateFunc(id string) []map[string]any {
  method lastpassData (line 44) | func (c *Config) lastpassData(id string) ([]map[string]any, error) {
  method lastpassOutput (line 66) | func (c *Config) lastpassOutput(args ...string) ([]byte, error) {
  function lastpassParseNote (line 78) | func lastpassParseNote(note string) map[string]string {

FILE: internal/cmd/lastpasstemplatefuncs_test.go
  function TestLastpassParseNote (line 12) | func TestLastpassParseNote(t *testing.T) {

FILE: internal/cmd/lazyscryptidentity.go
  type LazyScryptIdentity (line 15) | type LazyScryptIdentity struct
    method Unwrap (line 21) | func (i *LazyScryptIdentity) Unwrap(stanzas []*age.Stanza) (fileKey []...

FILE: internal/cmd/lazywriter.go
  type lazyWriter (line 9) | type lazyWriter struct
    method Close (line 22) | func (w *lazyWriter) Close() error {
    method Write (line 31) | func (w *lazyWriter) Write(p []byte) (int, error) {
  function newLazyWriter (line 16) | func newLazyWriter(openFunc func() (io.WriteCloser, error)) *lazyWriter {

FILE: internal/cmd/licensecmd.go
  method newLicenseCmd (line 7) | func (c *Config) newLicenseCmd() *cobra.Command {
  method runLicenseCmd (line 26) | func (c *Config) runLicenseCmd(cmd *cobra.Command, args []string) error {

FILE: internal/cmd/mackupcmd_darwin.go
  type mackupApplicationApplicationConfig (line 22) | type mackupApplicationApplicationConfig struct
  type mackupApplicationConfig (line 26) | type mackupApplicationConfig struct
  method newMackupCmd (line 32) | func (c *Config) newMackupCmd() *cobra.Command {
  method runMackupAddCmd (line 61) | func (c *Config) runMackupAddCmd(cmd *cobra.Command, args []string, sour...
  method mackupApplicationsDir (line 115) | func (c *Config) mackupApplicationsDir() (chezmoi.AbsPath, error) {
  function parseMackupApplication (line 145) | func parseMackupApplication(data []byte) mackupApplicationConfig {

FILE: internal/cmd/mackupcmd_darwin_test.go
  function TestParseMackupApplication (line 12) | func TestParseMackupApplication(t *testing.T) {

FILE: internal/cmd/mackupcmd_nodarwin.go
  method newMackupCmd (line 9) | func (c *Config) newMackupCmd() *cobra.Command {

FILE: internal/cmd/main_test.go
  function TestMain (line 50) | func TestMain(m *testing.M) {
  function TestScript (line 64) | func TestScript(t *testing.T) {
  function cmdAppendLine (line 177) | func cmdAppendLine(ts *testscript.TestScript, neg bool, args []string) {
  function cmdChHome (line 194) | func cmdChHome(ts *testscript.TestScript, neg bool, args []string) {
  function cmdCmpMod (line 218) | func cmdCmpMod(ts *testscript.TestScript, neg bool, args []string) {
  function cmdEdit (line 244) | func cmdEdit(ts *testscript.TestScript, neg bool, args []string) {
  function cmdExpandEnv (line 262) | func cmdExpandEnv(ts *testscript.TestScript, neg bool, args []string) {
  function cmdHTTPD (line 289) | func cmdHTTPD(ts *testscript.TestScript, neg bool, args []string) {
  function cmdHexDecode (line 303) | func cmdHexDecode(ts *testscript.TestScript, neg bool, args []string) {
  function cmdIsDir (line 330) | func cmdIsDir(ts *testscript.TestScript, neg bool, args []string) {
  function cmdIsSymlink (line 347) | func cmdIsSymlink(ts *testscript.TestScript, neg bool, args []string) {
  function cmdLExists (line 365) | func cmdLExists(ts *testscript.TestScript, neg bool, args []string) {
  function cmdMkFile (line 382) | func cmdMkFile(ts *testscript.TestScript, neg bool, args []string) {
  function cmdMkAgeConfig (line 411) | func cmdMkAgeConfig(ts *testscript.TestScript, neg bool, args []string) {
  function cmdMkGitConfig (line 440) | func cmdMkGitConfig(ts *testscript.TestScript, neg bool, args []string) {
  function cmdMkGPGConfig (line 464) | func cmdMkGPGConfig(ts *testscript.TestScript, neg bool, args []string) {
  function cmdMkHomeDir (line 515) | func cmdMkHomeDir(ts *testscript.TestScript, neg bool, args []string) {
  function cmdMkSourceDir (line 561) | func cmdMkSourceDir(ts *testscript.TestScript, neg bool, args []string) {
  function cmdMockCommand (line 602) | func cmdMockCommand(ts *testscript.TestScript, neg bool, args []string) {
  function cmdModifyFile (line 728) | func cmdModifyFile(ts *testscript.TestScript, neg bool, args []string) {
  function cmdPrependLine (line 747) | func cmdPrependLine(ts *testscript.TestScript, neg bool, args []string) {
  function cmdReadLink (line 762) | func cmdReadLink(ts *testscript.TestScript, neg bool, args []string) {
  function cmdRemoveLine (line 778) | func cmdRemoveLine(ts *testscript.TestScript, neg bool, args []string) {
  function cmdRmDir (line 806) | func cmdRmDir(ts *testscript.TestScript, neg bool, args []string) {
  function cmdRmFinalNewline (line 819) | func cmdRmFinalNewline(ts *testscript.TestScript, neg bool, args []strin...
  function cmdSleep (line 842) | func cmdSleep(ts *testscript.TestScript, neg bool, args []string) {
  function cmdUNIX2DOS (line 855) | func cmdUNIX2DOS(ts *testscript.TestScript, neg bool, args []string) {
  function goosCondition (line 876) | func goosCondition(cond string) (result, valid bool) {
  function prependDirToPath (line 922) | func prependDirToPath(dir, pathStr string) string {
  function setup (line 926) | func setup(env *testscript.Env) error {
  function unix2DOS (line 1009) | func unix2DOS(data []byte) ([]byte, error) {
  function writeNewFile (line 1022) | func writeNewFile(filename string, data []byte, perm fs.FileMode) error {

FILE: internal/cmd/managedcmd.go
  type managedCmdConfig (line 12) | type managedCmdConfig struct
  method newManagedCmd (line 20) | func (c *Config) newManagedCmd() *cobra.Command {
  method runManagedCmd (line 47) | func (c *Config) runManagedCmd(cmd *cobra.Command, args []string, source...

FILE: internal/cmd/managedcmd_test.go
  function TestManagedCmd (line 13) | func TestManagedCmd(t *testing.T) {

FILE: internal/cmd/mergeallcmd.go
  type mergeAllCmdConfig (line 11) | type mergeAllCmdConfig struct
  method newMergeAllCmd (line 16) | func (c *Config) newMergeAllCmd() *cobra.Command {
  method runMergeAllCmd (line 38) | func (c *Config) runMergeAllCmd(cmd *cobra.Command, args []string) error {

FILE: internal/cmd/mergecmd.go
  type mergeCmdConfig (line 14) | type mergeCmdConfig struct
  method newMergeCmd (line 19) | func (c *Config) newMergeCmd() *cobra.Command {
  method runMergeCmd (line 39) | func (c *Config) runMergeCmd(cmd *cobra.Command, args []string, sourceSt...
  method doMerge (line 61) | func (c *Config) doMerge(targetRelPath chezmoi.RelPath, sourceStateEntry...

FILE: internal/cmd/noupgradecmd.go
  type upgradeCmdConfig (line 12) | type upgradeCmdConfig struct
  method newUpgradeCmd (line 18) | func (c *Config) newUpgradeCmd() *cobra.Command {
  function getUpgradeMethod (line 22) | func getUpgradeMethod(vfs.FS, chezmoi.AbsPath) (string, error) {

FILE: internal/cmd/onepasswordtemplatefuncs.go
  type onepasswordMode (line 17) | type onepasswordMode
  constant onepasswordModeAccount (line 20) | onepasswordModeAccount onepasswordMode = "account"
  constant onepasswordModeConnect (line 21) | onepasswordModeConnect onepasswordMode = "connect"
  constant onepasswordModeService (line 22) | onepasswordModeService onepasswordMode = "service"
  type withSessionTokenType (line 25) | type withSessionTokenType
  constant withSessionToken (line 28) | withSessionToken    withSessionTokenType = true
  constant withoutSessionToken (line 29) | withoutSessionToken withSessionTokenType = false
  type onepasswordAccount (line 37) | type onepasswordAccount struct
  type onepasswordConfig (line 45) | type onepasswordConfig struct
  type onepasswordArgs (line 56) | type onepasswordArgs struct
  type onepasswordItem (line 63) | type onepasswordItem struct
  method onepasswordTemplateFunc (line 67) | func (c *Config) onepasswordTemplateFunc(userArgs ...string) map[string]...
  method onepasswordDetailsFieldsTemplateFunc (line 76) | func (c *Config) onepasswordDetailsFieldsTemplateFunc(userArgs ...string...
  method onepasswordDocumentTemplateFunc (line 95) | func (c *Config) onepasswordDocumentTemplateFunc(userArgs ...string) str...
  method onepasswordItemFieldsTemplateFunc (line 104) | func (c *Config) onepasswordItemFieldsTemplateFunc(userArgs ...string) m...
  method onepasswordGetOrRefreshSessionToken (line 121) | func (c *Config) onepasswordGetOrRefreshSessionToken(args *onepasswordAr...
  method onepasswordItem (line 170) | func (c *Config) onepasswordItem(userArgs []string) (*onepasswordItem, e...
  method onepasswordOutput (line 188) | func (c *Config) onepasswordOutput(args *onepasswordArgs, withSessionTok...
  method onepasswordReadTemplateFunc (line 221) | func (c *Config) onepasswordReadTemplateFunc(url string, args ...string)...
  method onepasswordAccount (line 243) | func (c *Config) onepasswordAccount(key string) string {
  method onepasswordAccounts (line 256) | func (c *Config) onepasswordAccounts() (map[string]string, error) {
  method newOnepasswordArgs (line 286) | func (c *Config) newOnepasswordArgs(baseArgs, userArgs []string) (*onepa...
  function onepasswordAccountMap (line 322) | func onepasswordAccountMap(accounts []onepasswordAccount) map[string]str...
  function onepasswordUniqueSessionToken (line 366) | func onepasswordUniqueSessionToken(environ []string) string {
  method onepasswordCheckMode (line 382) | func (c *Config) onepasswordCheckMode() error {
  function onepasswordCheckInvalidAccountParameters (line 428) | func onepasswordCheckInvalidAccountParameters(mode onepasswordMode) error {

FILE: internal/cmd/onepasswordtemplatefuncs_test.go
  function TestOnepasswordAccountMap (line 9) | func TestOnepasswordAccountMap(t *testing.T) {

FILE: internal/cmd/passholetemplatefuncs.go
  type passholeCacheKey (line 15) | type passholeCacheKey struct
  type passholeConfig (line 20) | type passholeConfig struct
  method passholeTemplateFunc (line 30) | func (c *Config) passholeTemplateFunc(path, field string) string {
  method passholeOutput (line 59) | func (c *Config) passholeOutput(name string, args []string, stdin io.Rea...

FILE: internal/cmd/passtemplatefuncs.go
  type passConfig (line 11) | type passConfig struct
  method passTemplateFunc (line 16) | func (c *Config) passTemplateFunc(id string) string {
  method passFieldsTemplateFunc (line 22) | func (c *Config) passFieldsTemplateFunc(id string) map[string]string {
  method passRawTemplateFunc (line 34) | func (c *Config) passRawTemplateFunc(id string) string {
  method passOutput (line 38) | func (c *Config) passOutput(id string) ([]byte, error) {

FILE: internal/cmd/pathlist.go
  type pathListTreeNode (line 9) | type pathListTreeNode struct
    method write (line 37) | func (n *pathListTreeNode) write(sb *strings.Builder, prefix, indent s...
    method writeChildren (line 44) | func (n *pathListTreeNode) writeChildren(sb *strings.Builder, prefix, ...
  function newPathListTreeNode (line 14) | func newPathListTreeNode(component string) *pathListTreeNode {
  function newPathListTreeFromPathsSlice (line 21) | func newPathListTreeFromPathsSlice(paths []string) *pathListTreeNode {

FILE: internal/cmd/pathlist_test.go
  function TestNewNodeFromPathsSlice (line 12) | func TestNewNodeFromPathsSlice(t *testing.T) {

FILE: internal/cmd/pathstyle.go
  constant pathStyleAbsolute (line 4) | pathStyleAbsolute       = "absolute"
  constant pathStyleRelative (line 5) | pathStyleRelative       = "relative"
  constant pathStyleSourceAbsolute (line 6) | pathStyleSourceAbsolute = "source-absolute"
  constant pathStyleSourceRelative (line 7) | pathStyleSourceRelative = "source-relative"
  constant pathStyleAll (line 8) | pathStyleAll            = "all"

FILE: internal/cmd/pinentry.go
  type pinEntryConfig (line 9) | type pinEntryConfig struct
  method readPINEntry (line 19) | func (c *Config) readPINEntry(prompt string) (string, error) {

FILE: internal/cmd/prompt.go
  method readBool (line 18) | func (c *Config) readBool(prompt string, defaultValue *bool) (bool, erro...
  method readChoice (line 53) | func (c *Config) readChoice(prompt string, choices []string, defaultValu...
  method readInt (line 89) | func (c *Config) readInt(prompt string, defaultValue *int64) (int64, err...
  method readLineRaw (line 124) | func (c *Config) readLineRaw(prompt string) (string, error) {
  method readMultichoice (line 140) | func (c *Config) readMultichoice(prompt string, choices []string, defaul...
  method readPassword (line 211) | func (c *Config) readPassword(prompt, placeholder string) (string, error) {
  method readString (line 228) | func (c *Config) readString(prompt string, defaultValue *string) (string...
  method promptBool (line 258) | func (c *Config) promptBool(prompt string, args ...bool) (bool, error) {
  method promptChoice (line 276) | func (c *Config) promptChoice(prompt string, choices []string, args ...s...
  method promptInt (line 296) | func (c *Config) promptInt(prompt string, args ...int64) (int64, error) {
  method promptMultichoice (line 313) | func (c *Config) promptMultichoice(prompt string, choices []string, defa...
  method promptString (line 329) | func (c *Config) promptString(prompt string, args ...string) (string, er...
  type cancelableModel (line 346) | type cancelableModel interface
  function runCancelableModel (line 351) | func runCancelableModel[M cancelableModel](initModel M) (M, error) {
  function runModel (line 362) | func runModel[M tea.Model](initModel M) (M, error) {

FILE: internal/cmd/protonpasstemplatefuncs.go
  type protonPassConfig (line 12) | type protonPassConfig struct
  method protonPassTemplateFunc (line 17) | func (c *Config) protonPassTemplateFunc(item string) string {
  method protonPassJSONTemplateFunc (line 22) | func (c *Config) protonPassJSONTemplateFunc(item string) any {
  method protonPassOutput (line 30) | func (c *Config) protonPassOutput(args []string) ([]byte, error) {

FILE: internal/cmd/purgecmd.go
  type purgeCmdConfig (line 16) | type purgeCmdConfig struct
  method newPurgeCmd (line 20) | func (c *Config) newPurgeCmd() *cobra.Command {
  method runPurgeCmd (line 42) | func (c *Config) runPurgeCmd(cmd *cobra.Command, args []string) error {
  method doPurge (line 55) | func (c *Config) doPurge(options *doPurgeOptions) error {

FILE: internal/cmd/rbwtemplatefuncs.go
  type rbwConfig (line 14) | type rbwConfig struct
  method rbwFieldsTemplateFunc (line 21) | func (c *Config) rbwFieldsTemplateFunc(name string, extraArgs ...string)...
  method rbwTemplateFunc (line 37) | func (c *Config) rbwTemplateFunc(name string, extraArgs ...string) map[s...
  method rbwOutput (line 45) | func (c *Config) rbwOutput(args []string) ([]byte, error) {

FILE: internal/cmd/readdcmd.go
  type reAddCmdConfig (line 18) | type reAddCmdConfig struct
  type fileInfo (line 26) | type fileInfo struct
    method Name (line 34) | func (fi *fileInfo) Name() string       { return fi.name }
    method Size (line 35) | func (fi *fileInfo) Size() int64        { return fi.size }
    method Mode (line 36) | func (fi *fileInfo) Mode() fs.FileMode  { return fi.mode }
    method ModTime (line 37) | func (fi *fileInfo) ModTime() time.Time { return fi.modTime }
    method IsDir (line 38) | func (fi *fileInfo) IsDir() bool        { return fi.isDir }
    method Sys (line 39) | func (fi *fileInfo) Sys() any           { return nil }
  method newReAddCmd (line 41) | func (c *Config) newReAddCmd() *cobra.Command {
  method runReAddCmd (line 66) | func (c *Config) runReAddCmd(cmd *cobra.Command, args []string, sourceSt...
  method processExactDirs (line 223) | func (c *Config) processExactDirs(

FILE: internal/cmd/readdcmd_test.go
  function TestIssue3891 (line 17) | func TestIssue3891(t *testing.T) {

FILE: internal/cmd/readhttpresponse.go
  constant httpProgressWidth (line 16) | httpProgressWidth = 38
  type httpProgressModel (line 18) | type httpProgressModel struct
    method Canceled (line 37) | func (m httpProgressModel) Canceled() bool {
    method Init (line 41) | func (m httpProgressModel) Init() tea.Cmd {
    method Update (line 45) | func (m httpProgressModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
    method View (line 69) | func (m httpProgressModel) View() string {
  type httpSpinnerModel (line 25) | type httpSpinnerModel struct
    method Canceled (line 73) | func (m httpSpinnerModel) Canceled() bool {
    method Init (line 77) | func (m httpSpinnerModel) Init() tea.Cmd {
    method Update (line 81) | func (m httpSpinnerModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
    method View (line 106) | func (m httpSpinnerModel) View() string {
  type bytesReadMsg (line 31) | type bytesReadMsg
  type doneMsg (line 33) | type doneMsg struct
  method readHTTPResponse (line 110) | func (c *Config) readHTTPResponse(url string, resp *http.Response) ([]by...
  type hookWriter (line 150) | type hookWriter struct
    method Write (line 154) | func (w *hookWriter) Write(p []byte) (int, error) {
  function runReadHTTPResponse (line 158) | func runReadHTTPResponse(model cancelableModel, resp *http.Response) ([]...
  function makeNightriderFrames (line 188) | func makeNightriderFrames(shape string, padding rune, width int) []string {

FILE: internal/cmd/readhttpresponse_test.go
  function TestMakeNightriderFrames (line 10) | func TestMakeNightriderFrames(t *testing.T) {

FILE: internal/cmd/removecmd.go
  method newRemoveCmd (line 9) | func (c *Config) newRemoveCmd() *cobra.Command {
  method runRemoveCmd (line 26) | func (c *Config) runRemoveCmd(cmd *cobra.Command, args []string) error {

FILE: internal/cmd/secretcmd.go
  type secretCmdConfig (line 5) | type secretCmdConfig struct
  method newSecretCmd (line 9) | func (c *Config) newSecretCmd() *cobra.Command {

FILE: internal/cmd/secretkeyringcmd.go
  type secretKeyringCmdConfig (line 10) | type secretKeyringCmdConfig struct
  type secretKeyringDeleteCmdConfig (line 16) | type secretKeyringDeleteCmdConfig struct
  type secretKeyringGetCmdConfig (line 21) | type secretKeyringGetCmdConfig struct
  type secretKeyringSetCmdConfig (line 26) | type secretKeyringSetCmdConfig struct
  method newSecretKeyringCmd (line 32) | func (c *Config) newSecretKeyringCmd() *cobra.Command {
  method runSecretKeyringDeleteCmdE (line 91) | func (c *Config) runSecretKeyringDeleteCmdE(cmd *cobra.Command, args []s...
  method runSecretKeyringGetCmdE (line 95) | func (c *Config) runSecretKeyringGetCmdE(cmd *cobra.Command, args []stri...
  method runSecretKeyringSetCmdE (line 103) | func (c *Config) runSecretKeyringSetCmdE(cmd *cobra.Command, args []stri...

FILE: internal/cmd/secretkeyringcmd_freebsdnocgo.go
  type secretKeyringCmdConfig (line 7) | type secretKeyringCmdConfig struct
  method newSecretKeyringCmd (line 9) | func (c *Config) newSecretKeyringCmd() *cobra.Command {

FILE: internal/cmd/secrettemplatefuncs.go
  type secretConfig (line 14) | type secretConfig struct
  method secretTemplateFunc (line 20) | func (c *Config) secretTemplateFunc(args ...string) string {
  method secretJSONTemplateFunc (line 24) | func (c *Config) secretJSONTemplateFunc(args ...string) any {
  method secretOutput (line 31) | func (c *Config) secretOutput(args []string) ([]byte, error) {

FILE: internal/cmd/shellquote.go
  function shellQuote (line 13) | func shellQuote(s string) string {
  function shellQuoteCommand (line 57) | func shellQuoteCommand(command string, args []string) string {

FILE: internal/cmd/shellquote_test.go
  function TestShellQuote (line 9) | func TestShellQuote(t *testing.T) {
  function TestShellQuoteCommand (line 28) | func TestShellQuoteCommand(t *testing.T) {

FILE: internal/cmd/sourcepathcmd.go
  method newSourcePathCmd (line 10) | func (c *Config) newSourcePathCmd() *cobra.Command {
  method runSourcePathCmd (line 27) | func (c *Config) runSourcePathCmd(cmd *cobra.Command, args []string) err...

FILE: internal/cmd/sshcmd.go
  type sshCmdConfig (line 9) | type sshCmdConfig struct
  method newSSHCmd (line 14) | func (c *Config) newSSHCmd() *cobra.Command {
  method runSSHCmd (line 33) | func (c *Config) runSSHCmd(cmd *cobra.Command, args []string, sourceStat...

FILE: internal/cmd/statecmd.go
  type stateCmdConfig (line 14) | type stateCmdConfig struct
  type stateDataCmdConfig (line 24) | type stateDataCmdConfig struct
  type stateDeleteCmdConfig (line 28) | type stateDeleteCmdConfig struct
  type stateDeleteBucketCmdConfig (line 33) | type stateDeleteBucketCmdConfig struct
  type stateDumpCmdConfig (line 37) | type stateDumpCmdConfig struct
  type stateGetCmdConfig (line 41) | type stateGetCmdConfig struct
  type stateGetBucketCmdConfig (line 46) | type stateGetBucketCmdConfig struct
  type stateSetCmdConfig (line 51) | type stateSetCmdConfig struct
  method newStateCmd (line 57) | func (c *Config) newStateCmd() *cobra.Command {
  method runStateDataCmd (line 176) | func (c *Config) runStateDataCmd(cmd *cobra.Command, args []string) error {
  method runStateDeleteCmd (line 184) | func (c *Config) runStateDeleteCmd(cmd *cobra.Command, args []string) er...
  method runStateDeleteBucketCmd (line 188) | func (c *Config) runStateDeleteBucketCmd(cmd *cobra.Command, args []stri...
  method runStateDumpCmd (line 192) | func (c *Config) runStateDumpCmd(cmd *cobra.Command, args []string) error {
  method runStateGetCmd (line 210) | func (c *Config) runStateGetCmd(cmd *cobra.Command, args []string) error {
  method runStateGetBucketCmd (line 218) | func (c *Config) runStateGetBucketCmd(cmd *cobra.Command, args []string)...
  method runStateResetCmd (line 226) | func (c *Config) runStateResetCmd(cmd *cobra.Command, args []string) err...
  method runStateSetCmd (line 251) | func (c *Config) runStateSetCmd(cmd *cobra.Command, args []string) error {

FILE: internal/cmd/statuscmd.go
  type statusCmdConfig (line 15) | type statusCmdConfig struct
  method newStatusCmd (line 24) | func (c *Config) newStatusCmd() *cobra.Command {
  method runStatusCmd (line 52) | func (c *Config) runStatusCmd(cmd *cobra.Command, args []string) error {
  function statusRune (line 103) | func statusRune(fromState, toState *chezmoi.EntryState) rune {

FILE: internal/cmd/statuscmd_test.go
  function TestStatusCmd (line 14) | func TestStatusCmd(t *testing.T) {

FILE: internal/cmd/symlinks_test.go
  function TestSymlinks (line 14) | func TestSymlinks(t *testing.T) {

FILE: internal/cmd/targetpathcmd.go
  method newTargetPathCmd (line 11) | func (c *Config) newTargetPathCmd() *cobra.Command {
  method runTargetPathCmd (line 27) | func (c *Config) runTargetPathCmd(cmd *cobra.Command, args []string) err...

FILE: internal/cmd/templatefuncs.go
  type ioregData (line 31) | type ioregData struct
  type emptyPathElementError (line 36) | type emptyPathElementError struct
    method Error (line 40) | func (e emptyPathElementError) Error() string {
  type invalidPathElementTypeError (line 46) | type invalidPathElementTypeError struct
    method Error (line 50) | func (e invalidPathElementTypeError) Error() string {
  type invalidPathTypeError (line 55) | type invalidPathTypeError struct
    method Error (line 59) | func (e invalidPathTypeError) Error() string {
  method commentTemplateFunc (line 70) | func (c *Config) commentTemplateFunc(prefix, s string) string {
  method deleteValueAtPathTemplateFunc (line 79) | func (c *Config) deleteValueAtPathTemplateFunc(path string, dict map[str...
  method eqFoldTemplateFunc (line 98) | func (c *Config) eqFoldTemplateFunc(first, second string, more ...string...
  method ensureLinePrefixTemplateFunc (line 110) | func (c *Config) ensureLinePrefixTemplateFunc(args ...string) string {
  method execTemplateFunc (line 130) | func (c *Config) execTemplateFunc(name string, args ...string) bool {
  method findExecutableTemplateFunc (line 143) | func (c *Config) findExecutableTemplateFunc(file string, pathList any) s...
  method findOneExecutableTemplateFunc (line 157) | func (c *Config) findOneExecutableTemplateFunc(fileList, pathList any) s...
  method fromIniTemplateFunc (line 175) | func (c *Config) fromIniTemplateFunc(s string) map[string]any {
  method fromJsonTemplateFunc (line 185) | func (c *Config) fromJsonTemplateFunc(s string) any {
  method fromJsoncTemplateFunc (line 193) | func (c *Config) fromJsoncTemplateFunc(s string) any {
  method fromTomlTemplateFunc (line 199) | func (c *Config) fromTomlTemplateFunc(s string) any {
  method fromYamlTemplateFunc (line 205) | func (c *Config) fromYamlTemplateFunc(s string) any {
  method getRedirectedURLTemplateFunc (line 211) | func (c *Config) getRedirectedURLTemplateFunc(requestURL string) string {
  method globTemplateFunc (line 219) | func (c *Config) globTemplateFunc(pattern string) []string {
  method hexDecodeTemplateFunc (line 236) | func (c *Config) hexDecodeTemplateFunc(s string) string {
  method hexEncodeTemplateFunc (line 240) | func (c *Config) hexEncodeTemplateFunc(s string) string {
  method includeTemplateFunc (line 244) | func (c *Config) includeTemplateFunc(filename string) string {
  method includeTemplateTemplateFunc (line 249) | func (c *Config) includeTemplateTemplateFunc(filename string, args ...an...
  method ioregTemplateFunc (line 274) | func (c *Config) ioregTemplateFunc() map[string]any {
  method joinPathTemplateFunc (line 298) | func (c *Config) joinPathTemplateFunc(elems ...any) string {
  method jqTemplateFunc (line 306) | func (c *Config) jqTemplateFunc(source string, input any) any {
  method lookPathTemplateFunc (line 324) | func (c *Config) lookPathTemplateFunc(file string) string {
  method isExecutableTemplateFunc (line 337) | func (c *Config) isExecutableTemplateFunc(file string) bool {
  method lstatTemplateFunc (line 348) | func (c *Config) lstatTemplateFunc(name string) any {
  method mozillaInstallHashTemplateFunc (line 359) | func (c *Config) mozillaInstallHashTemplateFunc(path string) string {
  method outputTemplateFunc (line 363) | func (c *Config) outputTemplateFunc(name string, args ...string) string {
  method outputListTemplateFunc (line 373) | func (c *Config) outputListTemplateFunc(name string, args []any) string {
  method pruneEmptyDictsTemplateFunc (line 382) | func (c *Config) pruneEmptyDictsTemplateFunc(dict map[string]any) map[st...
  method quoteTemplateFunc (line 387) | func (c *Config) quoteTemplateFunc(list ...any) string {
  method squoteTemplateFunc (line 397) | func (c *Config) squoteTemplateFunc(list ...any) string {
  method quoteListTemplateFunc (line 407) | func (c *Config) quoteListTemplateFunc(list any) []string {
  method readFile (line 419) | func (c *Config) readFile(filename string, searchDirAbsPaths []chezmoi.A...
  method replaceAllRegexTemplateFunc (line 439) | func (c *Config) replaceAllRegexTemplateFunc(expr, repl, s string) string {
  method setValueAtPathTemplateFunc (line 443) | func (c *Config) setValueAtPathTemplateFunc(path, value, dict any) any {
  method splitListTemplateFunc (line 472) | func (c *Config) splitListTemplateFunc(sep, s string) []any {
  method statTemplateFunc (line 481) | func (c *Config) statTemplateFunc(name string) any {
  method toIniTemplateFunc (line 492) | func (c *Config) toIniTemplateFunc(data map[string]any) string {
  method toPrettyJsonTemplateFunc (line 498) | func (c *Config) toPrettyJsonTemplateFunc(args ...any) string { //nolint...
  method toStringTemplateFunc (line 525) | func (c *Config) toStringTemplateFunc(value any) string {
  method toStringsTemplateFunc (line 529) | func (c *Config) toStringsTemplateFunc(values ...any) []string {
  method toTomlTemplateFunc (line 537) | func (c *Config) toTomlTemplateFunc(data any) string {
  method toYamlTemplateFunc (line 541) | func (c *Config) toYamlTemplateFunc(data any) string {
  method warnfTemplateFunc (line 545) | func (c *Config) warnfTemplateFunc(format string, args ...any) string {
  function anyToString (line 550) | func anyToString(value any) string {
  function anyToStringSlice (line 591) | func anyToStringSlice(value any) ([]string, error) {
  function fileInfoToMap (line 628) | func fileInfoToMap(fileInfo fs.FileInfo) map[string]any {
  function iniFileToMap (line 640) | func iniFileToMap(file *ini.File) map[string]any {
  function iniSectionToMap (line 654) | func iniSectionToMap(section *ini.Section) map[string]any {
  function keysFromPath (line 665) | func keysFromPath(path any) ([]string, string, error) {
  function nestedMapAtPath (line 721) | func nestedMapAtPath(m map[string]any, path any) (map[string]any, string...
  function writeIniMap (line 736) | func writeIniMap(w io.Writer, data map[string]any, sectionPrefix string)...
  function maybeQuote (line 777) | func maybeQuote(s string) string {
  function needsQuote (line 784) | func needsQuote(s string) bool {
  function pruneEmptyMaps (line 802) | func pruneEmptyMaps(m map[string]any) bool {

FILE: internal/cmd/templatefuncs_test.go
  function TestCommentTemplateFunc (line 17) | func TestCommentTemplateFunc(t *testing.T) {
  function TestDeleteValueAtPathTemplateFunc (line 59) | func TestDeleteValueAtPathTemplateFunc(t *testing.T) {
  function TestFromJson (line 165) | func TestFromJson(t *testing.T) {
  function TestPruneEmptyDicts (line 203) | func TestPruneEmptyDicts(t *testing.T) {
  function TestQuoteTemplateFunc (line 236) | func TestQuoteTemplateFunc(t *testing.T) {
  function TestSquoteTemplateFunc (line 289) | func TestSquoteTemplateFunc(t *testing.T) {
  function TestSetValueAtPathTemplateFunc (line 342) | func TestSetValueAtPathTemplateFunc(t *testing.T) {
  function TestFromIniTemplateFunc (line 509) | func TestFromIniTemplateFunc(t *testing.T) {
  function TestKeysFromPath (line 554) | func TestKeysFromPath(t *testing.T) {
  function TestNestedMapAtPath (line 678) | func TestNestedMapAtPath(t *testing.T) {
  function TestToIniTemplateFunc (line 745) | func TestToIniTemplateFunc(t *testing.T) {
  function TestNeedsQuote (line 881) | func TestNeedsQuote(t *testing.T) {
  function TestQuoteListTemplateFunc (line 917) | func TestQuoteListTemplateFunc(t *testing.T) {
  function TestGetRedirectedURLTemplateFunc (line 936) | func TestGetRedirectedURLTemplateFunc(t *testing.T) {

FILE: internal/cmd/textconv.go
  type textConvElement (line 14) | type textConvElement struct
  type textConv (line 20) | type textConv
    method convert (line 22) | func (t textConv) convert(path string, data []byte) ([]byte, bool, err...

FILE: internal/cmd/unmanagedcmd.go
  type unmanagedCmdConfig (line 14) | type unmanagedCmdConfig struct
  method newUnmanagedCmd (line 21) | func (c *Config) newUnmanagedCmd() *cobra.Command {
  method runUnmanagedCmd (line 46) | func (c *Config) runUnmanagedCmd(cmd *cobra.Command, args []string, sour...

FILE: internal/cmd/unmanagedcmd_test.go
  function TestUnmanagedCmd (line 13) | func TestUnmanagedCmd(t *testing.T) {

FILE: internal/cmd/updatecmd.go
  type updateCmdConfig (line 12) | type updateCmdConfig struct
  method newUpdateCmd (line 23) | func (c *Config) newUpdateCmd() *cobra.Command {
  method runUpdateCmd (line 54) | func (c *Config) runUpdateCmd(cmd *cobra.Command, args []string) error {

FILE: internal/cmd/upgradecmd.go
  constant upgradeMethodBrewUpgrade (line 31) | upgradeMethodBrewUpgrade       = "brew-upgrade"
  constant upgradeMethodReplaceExecutable (line 32) | upgradeMethodReplaceExecutable = "replace-executable"
  constant upgradeMethodSnapRefresh (line 33) | upgradeMethodSnapRefresh       = "snap-refresh"
  constant upgradeMethodUpgradePackage (line 34) | upgradeMethodUpgradePackage    = "upgrade-package"
  constant upgradeMethodSudoPrefix (line 35) | upgradeMethodSudoPrefix        = "sudo-"
  constant upgradeMethodWinGetUpgrade (line 36) | upgradeMethodWinGetUpgrade     = "winget-upgrade"
  type upgradeCmdConfig (line 44) | type upgradeCmdConfig struct
  method newUpgradeCmd (line 49) | func (c *Config) newUpgradeCmd() *cobra.Command {
  method runUpgradeCmd (line 71) | func (c *Config) runUpgradeCmd(cmd *cobra.Command, args []string) error {
  method getChecksums (line 174) | func (c *Config) getChecksums(ctx context.Context, rr *github.Repository...
  method downloadURL (line 197) | func (c *Config) downloadURL(ctx context.Context, url string) ([]byte, e...
  method replaceExecutable (line 224) | func (c *Config) replaceExecutable(
  method verifyChecksum (line 301) | func (c *Config) verifyChecksum(ctx context.Context, rr *github.Reposito...
  function getReleaseAssetByName (line 319) | func getReleaseAssetByName(rr *github.RepositoryRelease, name string) *g...

FILE: internal/cmd/upgradecmd_test.go
  function TestConfigGetPackageFilename (line 13) | func TestConfigGetPackageFilename(t *testing.T) {

FILE: internal/cmd/upgradecmd_unix.go
  constant packageTypeNone (line 22) | packageTypeNone = ""
  constant packageTypeAPK (line 23) | packageTypeAPK  = "apk"
  constant packageTypeAUR (line 24) | packageTypeAUR  = "aur"
  constant packageTypeDEB (line 25) | packageTypeDEB  = "deb"
  constant packageTypeRPM (line 26) | packageTypeRPM  = "rpm"
  method brewUpgrade (line 57) | func (c *Config) brewUpgrade() error {
  method getPackageFilename (line 61) | func (c *Config) getPackageFilename(packageType string, version *semver....
  method snapRefresh (line 77) | func (c *Config) snapRefresh() error {
  method upgradeUNIXPackage (line 81) | func (c *Config) upgradeUNIXPackage(
  method winGetUpgrade (line 154) | func (c *Config) winGetUpgrade() error {
  function getPackageType (line 159) | func getPackageType(system chezmoi.System) (string, error) {
  function getUpgradeMethod (line 186) | func getUpgradeMethod(fileSystem vfs.Stater, executableAbsPath chezmoi.A...

FILE: internal/cmd/upgradecmd_windows.go
  type InstallBehavior (line 19) | type InstallBehavior struct
    method Values (line 24) | func (ib *InstallBehavior) Values() []string {
  type WinGetSettings (line 31) | type WinGetSettings struct
  method brewUpgrade (line 35) | func (c *Config) brewUpgrade() error {
  function isWinGetInstall (line 41) | func isWinGetInstall(fileSystem vfs.Stater, executableAbsPath string) (b...
  method snapRefresh (line 85) | func (c *Config) snapRefresh() error {
  method upgradeUNIXPackage (line 89) | func (c *Config) upgradeUNIXPackage(_ context.Context, _ *semver.Version...
  method winGetUpgrade (line 93) | func (c *Config) winGetUpgrade() error { //nolint:staticcheck
  function getUpgradeMethod (line 101) | func getUpgradeMethod(fileSystem vfs.Stater, executableAbsPath chezmoi.A...

FILE: internal/cmd/util.go
  function camelCaseToUpperSnakeCase (line 39) | func camelCaseToUpperSnakeCase(s string) string {
  function englishList (line 68) | func englishList(ss []string) string {
  function englishListWithNoun (line 83) | func englishListWithNoun(ss []string, singular, plural string) string {
  function pluralize (line 99) | func pluralize(singular string) string {
  function stringersToStrings (line 107) | func stringersToStrings[T fmt.Stringer](ss []T) []string {
  function titleFirst (line 116) | func titleFirst(s string) string {
  function upperSnakeCaseToCamelCase (line 126) | func upperSnakeCaseToCamelCase(s string) string {
  function upperSnakeCaseToCamelCaseMap (line 140) | func upperSnakeCaseToCamelCaseMap[V any](m map[string]V) map[string]V {

FILE: internal/cmd/util_test.go
  function TestCamelCaseToUpperSnakeCase (line 9) | func TestCamelCaseToUpperSnakeCase(t *testing.T) {
  function TestEnglishList (line 38) | func TestEnglishList(t *testing.T) {
  function TestEnglishListWithNoun (line 68) | func TestEnglishListWithNoun(t *testing.T) {
  function TestUpperSnakeCaseToCamelCaseMap (line 141) | func TestUpperSnakeCaseToCamelCaseMap(t *testing.T) {

FILE: internal/cmd/util_unix.go
  constant defaultEditor (line 14) | defaultEditor = "vi"
  function fileInfoUID (line 16) | func fileInfoUID(info fs.FileInfo) int {
  function getPS1Interpreter (line 25) | func getPS1Interpreter(findExecutable func([]string, []string) (string, ...
  function windowsVersion (line 37) | func windowsVersion() (map[string]any, error) {

FILE: internal/cmd/util_windows.go
  constant defaultEditor (line 13) | defaultEditor = "notepad.exe"
  function getPS1Interpreter (line 20) | func getPS1Interpreter(findExecutable func([]string, []string) (string, ...
  function windowsVersion (line 39) | func windowsVersion() (map[string]any, error) {

FILE: internal/cmd/vaulttemplatefuncs.go
  type vaultConfig (line 11) | type vaultConfig struct
  method vaultTemplateFunc (line 16) | func (c *Config) vaultTemplateFunc(key string) any {

FILE: internal/cmd/verifycmd.go
  type verifyCmdConfig (line 9) | type verifyCmdConfig struct
  method newVerifyCmd (line 17) | func (c *Config) newVerifyCmd() *cobra.Command {
  method runVerifyCmd (line 41) | func (c *Config) runVerifyCmd(cmd *cobra.Command, args []string) error {

FILE: internal/cmd/verifycmd_test.go
  function TestVerifyCmd (line 14) | func TestVerifyCmd(t *testing.T) {

FILE: internal/cmds/execute-template/main.go
  type gitHubClient (line 42) | type gitHubClient struct
    method gitHubListReleases (line 54) | func (c *gitHubClient) gitHubListReleases(ownerRepo string) []*github....
    method gitHubLatestRelease (line 78) | func (c *gitHubClient) gitHubLatestRelease(ownerRepo string) *github.R...
  function newGitHubClient (line 47) | func newGitHubClient(ctx context.Context) *gitHubClient {
  function slugify (line 92) | func slugify(s string) string {
  function run (line 99) | func run() error {
  function main (line 182) | func main() {

FILE: internal/cmds/execute-template/main_test.go
  function TestSlugify (line 9) | func TestSlugify(t *testing.T) {

FILE: internal/cmds/generate-commit/main.go
  function main (line 14) | func main() {

FILE: internal/cmds/generate-helps/main.go
  type help (line 27) | type help struct
  function run (line 43) | func run() error {
  function main (line 147) | func main() {
  function extractHelp (line 155) | func extractHelp(command string, data []byte, longHelpTermRenderer, exam...
  function renderLines (line 246) | func renderLines(lines []string, termRenderer *glamour.TermRenderer) (st...

FILE: internal/cmds/generate-install.sh/main.go
  type platform (line 29) | type platform struct
    method String (line 41) | func (p platform) String() string {
  function newPlatform (line 34) | func newPlatform(goos, goarch string) platform {
  type platformValue (line 45) | type platformValue struct
  type platformSet (line 51) | type platformSet
  function goToolDistList (line 53) | func goToolDistList() (platformSet, error) {
  function run (line 73) | func run() error {
  function main (line 146) | func main() {

FILE: internal/cmds/generate-install.sh/main_test.go
  function TestGoToolDistList (line 9) | func TestGoToolDistList(t *testing.T) {

FILE: internal/cmds/generate-license/main.g
Condensed preview — 962 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,580K chars).
[
  {
    "path": ".config/capslock-summary.json",
    "chars": 4072,
    "preview": "{\n  \"chezmoi.io/chezmoi\": [\n    \"CAPABILITY_ARBITRARY_EXECUTION\",\n    \"CAPABILITY_CGO\",\n    \"CAPABILITY_EXEC\",\n    \"CAPA"
  },
  {
    "path": ".config/editorconfig-checker.json",
    "chars": 51,
    "preview": "{\n    \"Exclude\": [\n        \"^completions/\"\n    ]\n}\n"
  },
  {
    "path": ".config/golangci.yml",
    "chars": 4418,
    "preview": "version: '2'\nrun:\n  go: '1.25'\nlinters:\n  enable:\n  - asciicheck\n  - bidichk\n  - bodyclose\n  - canonicalheader\n  - conta"
  },
  {
    "path": ".config/goreleaser.yaml",
    "chars": 9675,
    "preview": "# yaml-language-server: $schema=https://goreleaser.com/static/schema.json\n\nversion: 2\n\nproject_name: chezmoi\n\nbefore:\n  "
  },
  {
    "path": ".config/markdownlint-cli2.yaml",
    "chars": 356,
    "preview": "globs:\n- '**/*.md'\nignores:\n- .github/ISSUE_TEMPLATE/*.md\n- .venv/\n- assets/chezmoi.io/docs/reference/release-history.md"
  },
  {
    "path": ".editorconfig",
    "chars": 357,
    "preview": "root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n[*.ps1]\nc"
  },
  {
    "path": ".gitattributes",
    "chars": 257,
    "preview": "* -text\n\n# Make GitHub language breakdown more accurate, see https://github.com/github/linguist\n*.gen.go linguist-genera"
  },
  {
    "path": ".github/CODE_OF_CONDUCT.md",
    "chars": 368,
    "preview": "# Code of Conduct\n\nchezmoi follows the [Contributor Covenant Code Of\nConduct](https://www.contributor-covenant.org/versi"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "chars": 480,
    "preview": "# Contributing\n\n> [!WARNING]\n>\n> If you use an LLM (Large Language Model, like ChatGPT, Claude, Gemini, GitHub\n> Copilot"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/01_support_request.md",
    "chars": 1087,
    "preview": "---\nname: Support request\nabout: Get help with using chezmoi\ntitle: ''\nlabels: support\nassignees: ''\n---\n\n<!--\n\nchezmoi "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/02_feature_request.md",
    "chars": 861,
    "preview": "---\nname: Feature request\nabout: Request a new feature\ntitle: ''\nlabels: enhancement\nassignees: ''\n---\n\n<!--\n\nchezmoi ha"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/03_bug_report.md",
    "chars": 792,
    "preview": "---\nname: Bug report\nabout: Report a bug\ntitle: ''\nassignees: ''\n---\n\n<!--\n\nchezmoi has a strict zero-tolerance policy o"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 408,
    "preview": "<!--\n\nThanks for contributing!\n\nchezmoi has a strict zero-tolerance policy on LLM contributions. If you use an\nLLM (Larg"
  },
  {
    "path": ".github/SECURITY.md",
    "chars": 84,
    "preview": "# Security\n\nSee the [security guide](https://chezmoi.io/developer-guide/security/).\n"
  },
  {
    "path": ".github/actions/free-disk-space/action.yml",
    "chars": 275,
    "preview": "name: free-disk-space\ndescription: Frees disk space by deleting unused files\nruns:\n  using: composite\n  steps:\n  - name:"
  },
  {
    "path": ".github/actions/setup-go/action.yml",
    "chars": 2099,
    "preview": "name: setup-go\ndescription: Set up Go environment and enable caching\ninputs:\n  cache-prefix:\n    description: Cache pref"
  },
  {
    "path": ".github/workflows/clear-pr-caches.yml",
    "chars": 576,
    "preview": "name: clear-pr-caches\n\non:\n  pull_request_target:\n    types:\n    - closed\n\npermissions:\n  actions: write\n\njobs:\n  clear-"
  },
  {
    "path": ".github/workflows/govulncheck.yml",
    "chars": 1014,
    "preview": "name: govulncheck\non:\n  pull_request:\n    branches:\n    - master\n  push:\n    branches:\n    - master\n    tags:\n    - v*\n "
  },
  {
    "path": ".github/workflows/installer.yml",
    "chars": 3923,
    "preview": "name: installer\non:\n  pull_request:\n    branches:\n    - master\n  push:\n    branches:\n    - master\nconcurrency:\n  group: "
  },
  {
    "path": ".github/workflows/lock-threads.yml",
    "chars": 601,
    "preview": "name: lock-threads\n\non:\n  schedule:\n  - cron: 17 2 * * *\n  workflow_dispatch: {}\n\npermissions:\n  issues: write\n  pull-re"
  },
  {
    "path": ".github/workflows/main.yml",
    "chars": 18965,
    "preview": "name: main\non:\n  pull_request:\n    branches:\n    - master\n  push:\n    branches:\n    - master\n    tags:\n    - v*\n  schedu"
  },
  {
    "path": ".gitignore",
    "chars": 103,
    "preview": "/.vagrant\n/COMMIT\n/chezmoi\n/chezmoi.exe\n/coverage.out\n/dist\n/resource_windows_*.syso\n/versioninfo.json\n"
  },
  {
    "path": "LICENSE",
    "chars": 1076,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2018 Tom Payne\n\nPermission is hereby granted, free of charge, to any person obtaini"
  },
  {
    "path": "Makefile",
    "chars": 5743,
    "preview": "GO?=go\nGOOS=$(shell ${GO} env GOOS)\nGOARCH=$(shell ${GO} env GOARCH)\nGOLANGCI_LINT_VERSION=$(shell awk '/GOLANGCI_LINT_V"
  },
  {
    "path": "README.md",
    "chars": 547,
    "preview": "# ![chezmoi logo](assets/images/logo-144px.svg) chezmoi\n\n[![GitHub Release](https://img.shields.io/github/release/twpayn"
  },
  {
    "path": "assets/chezmoi.io/.gitignore",
    "chars": 191,
    "preview": "/docs/index.md\n/docs/install.md\n/docs/links/articles.md\n/docs/links/podcasts.md\n/docs/links/videos.md\n/docs/reference/co"
  },
  {
    "path": "assets/chezmoi.io/CNAME",
    "chars": 15,
    "preview": "www.chezmoi.io\n"
  },
  {
    "path": "assets/chezmoi.io/docs/chezmoi/index.html",
    "chars": 246,
    "preview": "<!DOCTYPE html>\n<html>\n    <head>\n        <meta name=\"go-import\" content=\"chezmoi.io/chezmoi git https://github.com/twpa"
  },
  {
    "path": "assets/chezmoi.io/docs/comparison-table.md",
    "chars": 5723,
    "preview": "# Comparison table\n\n|                                        | [chezmoi][chezmoi] | [dotbot][dotbot]  | [rcm][rcm]      "
  },
  {
    "path": "assets/chezmoi.io/docs/developer-guide/architecture.md",
    "chars": 9193,
    "preview": "# Architecture\n\nThis document gives a high-level overview of chezmoi's source code for anyone\ninterested in contributing"
  },
  {
    "path": "assets/chezmoi.io/docs/developer-guide/building-on-top-of-chezmoi.md",
    "chars": 402,
    "preview": "# Building on top of chezmoi\n\nchezmoi is designed with UNIX-style composability in mind, and the command line\ntool is se"
  },
  {
    "path": "assets/chezmoi.io/docs/developer-guide/contributing-changes.md",
    "chars": 3531,
    "preview": "# Contributing changes\n\n!!! warning\n\n    chezmoi has a strict zero-tolerance policy on LLM contributions. If you use\n   "
  },
  {
    "path": "assets/chezmoi.io/docs/developer-guide/index.md",
    "chars": 1899,
    "preview": "# Developer guide\n\n!!! warning\n\n    If you use an LLM (Large Language Model, like ChatGPT, Claude, Gemini,\n    GitHub Co"
  },
  {
    "path": "assets/chezmoi.io/docs/developer-guide/install-script.md",
    "chars": 589,
    "preview": "# Install script\n\nchezmoi generates the [install script][install] from a single source of truth.\nYou must run\n\n```sh\nmak"
  },
  {
    "path": "assets/chezmoi.io/docs/developer-guide/packaging.md",
    "chars": 2507,
    "preview": "# Packaging\n\nIf you're packaging chezmoi for an operating system or distribution:\n\nchezmoi has no build dependencies oth"
  },
  {
    "path": "assets/chezmoi.io/docs/developer-guide/releases.md",
    "chars": 3504,
    "preview": "# Releases\n\nReleases are managed with [`goreleaser`][goreleaser].\n\n## Testing\n\nTo build a test release, without publishi"
  },
  {
    "path": "assets/chezmoi.io/docs/developer-guide/security.md",
    "chars": 771,
    "preview": "# Security\n\n## Supported versions\n\nOnly the most recent version of chezmoi is supported with security updates.\n\n## Virus"
  },
  {
    "path": "assets/chezmoi.io/docs/developer-guide/testing.md",
    "chars": 1252,
    "preview": "# Testing\n\nchezmoi uses multiple levels of testing:\n\n1. Unit testing, using [`testing`][testing],  and\n   [`github.com/a"
  },
  {
    "path": "assets/chezmoi.io/docs/developer-guide/using-make.md",
    "chars": 1142,
    "preview": "# Building and installing with `make`\n\nchezmoi can be built with GNU make, assuming you have the Go toolchain\ninstalled."
  },
  {
    "path": "assets/chezmoi.io/docs/developer-guide/website.md",
    "chars": 1231,
    "preview": "# Website\n\nThe [website][website] is generated with [Material for MkDocs][material] from\nthe contents of the `assets/che"
  },
  {
    "path": "assets/chezmoi.io/docs/docs.go",
    "chars": 153,
    "preview": "// Package docs contains chezmoi's documentation.\npackage docs\n\nimport _ \"embed\"\n\n// License is the license.\n//\n//go:emb"
  },
  {
    "path": "assets/chezmoi.io/docs/extra/refresh_on_toggle_dark_light.js",
    "chars": 683,
    "preview": "// The light palette is always the first palette. In some cases, it is numbered\n// as __palette_0 and in others it is nu"
  },
  {
    "path": "assets/chezmoi.io/docs/hooks.py",
    "chars": 2343,
    "preview": "from __future__ import annotations\n\nimport subprocess\nfrom pathlib import Path, PurePosixPath\n\nfrom mkdocs import utils\n"
  },
  {
    "path": "assets/chezmoi.io/docs/index.md.tmpl",
    "chars": 3916,
    "preview": "{{- $latestRelease := gitHubLatestRelease \"twpayne/chezmoi\" -}}\n{{- $version := $latestRelease.Name | trimPrefix \"v\" -}}"
  },
  {
    "path": "assets/chezmoi.io/docs/install.md.tmpl",
    "chars": 8963,
    "preview": "{{- $latestRelease := gitHubLatestRelease \"twpayne/chezmoi\" -}}\n{{- $version := $latestRelease.Name | trimPrefix \"v\" -}}"
  },
  {
    "path": "assets/chezmoi.io/docs/license.md",
    "chars": 1087,
    "preview": "# License\n\nThe MIT License (MIT)\n\nCopyright (c) 2018 Tom Payne\n\nPermission is hereby granted, free of charge, to any per"
  },
  {
    "path": "assets/chezmoi.io/docs/links/articles.md.tmpl",
    "chars": 387,
    "preview": "# Articles\n\n!!! tip\n\n    Recommended article: [Fedora Magazine: Take back your dotfiles with Chezmoi](https://fedoramaga"
  },
  {
    "path": "assets/chezmoi.io/docs/links/articles.md.yaml",
    "chars": 24663,
    "preview": "articles:\n- date: '2019-01-10'\n  version: 0.0.11\n  title: 'Linux Fu: The kitchen sync'\n  url: https://hackaday.com/2019/"
  },
  {
    "path": "assets/chezmoi.io/docs/links/dotfile-repos.md",
    "chars": 227,
    "preview": "# Dotfile repos\n\n* [GitHub](https://github.com/topics/chezmoi?o=desc&s=updated)\n\n* [GitLab](https://gitlab.com/explore/p"
  },
  {
    "path": "assets/chezmoi.io/docs/links/podcasts.md.tmpl",
    "chars": 357,
    "preview": "# Podcasts\n\n!!! tip\n\n    Recommended podcast: [Managing Dot Files and an Introduction to Chezmoi](https://www.podfeet.co"
  },
  {
    "path": "assets/chezmoi.io/docs/links/podcasts.md.yaml",
    "chars": 2259,
    "preview": "podcasts:\n- date: '2026-02-24'\n  version: 2.69.4\n  lang: DE\n  title: Hyper, Meh und Linux Laptops\n  url: https://www.you"
  },
  {
    "path": "assets/chezmoi.io/docs/links/related-software.md",
    "chars": 3963,
    "preview": "# Related software\n\n\n## Editor integration\n\n### [`github.com/andre-kotake/nvim-chezmoi`](https://github.com/andre-kotake"
  },
  {
    "path": "assets/chezmoi.io/docs/links/social-media.md",
    "chars": 1348,
    "preview": "# Social media\n\n| Platform           | Search term                                                                      "
  },
  {
    "path": "assets/chezmoi.io/docs/links/videos.md.tmpl",
    "chars": 375,
    "preview": "# Videos\n\n!!! tip\n\n    Recommended video: [chezmoi: manage your dotfiles across multiple, diverse machines, securely](ht"
  },
  {
    "path": "assets/chezmoi.io/docs/links/videos.md.yaml",
    "chars": 3421,
    "preview": "videos:\n- date: '2019-11-20'\n  version: 1.7.2\n  title: 'FLOSS weekly episode 556: chezmoi'\n  url: https://twit.tv/shows/"
  },
  {
    "path": "assets/chezmoi.io/docs/migrating-from-another-dotfile-manager.md",
    "chars": 660,
    "preview": "# Migrating from another dotfile manager\n\n## Migrate from a dotfile manager that uses symlinks\n\nMany dotfile managers re"
  },
  {
    "path": "assets/chezmoi.io/docs/quick-start.md",
    "chars": 5995,
    "preview": "# Quick start\n\n## Concepts\n\nRoughly speaking, chezmoi stores the desired state of your dotfiles in the\ndirectory `~/.loc"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/application-order.md",
    "chars": 1554,
    "preview": "# Application order\n\nchezmoi is deterministic in its order of application. The order is:\n\n1. Read the source state.\n2. R"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/command-line-flags/common.md",
    "chars": 2045,
    "preview": "# Common command line flags\n\nThe following flags apply to multiple commands where they are relevant.\n\n## Flags\n\n### `--a"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/command-line-flags/developer.md",
    "chars": 218,
    "preview": "# Developer command line flags\n\nThe following flags are global but only relevant for developers and debugging.\n\n## Flags"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/command-line-flags/global.md",
    "chars": 4768,
    "preview": "# Global command line flags\n\nThe following flags are available for all chezmoi commands. Note that some flags\nmay not ha"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/command-line-flags/index.md",
    "chars": 92,
    "preview": "# Command line flags\n\nCommand line flags override any values set in the configuration file.\n"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/add.md",
    "chars": 4242,
    "preview": "# `add` *target*...\n\nAdd *target*s to the source state. If any target is already in the source\nstate, then its source st"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/age-keygen.md",
    "chars": 424,
    "preview": "# `age-keygen` [*identity-file*]\n\nGenerate an age identity or convert an age identity to an age recipient.\n\n## Flags\n\n##"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/age.md",
    "chars": 527,
    "preview": "# `age`\n\n<!-- markdownlint-disable no-duplicate-heading -->\n\nInteract with age's passphrase-based encryption.\n\n## Subcom"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/apply.md",
    "chars": 851,
    "preview": "# `apply` [*target*...]\n\nEnsure that *target*... are in the target state, updating them if necessary. If\nno targets are "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/archive.md",
    "chars": 1074,
    "preview": "# `archive` [*target*....]\n\nGenerate an archive of the target state, or only the targets specified. This\ncan be piped in"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/cat-config.md",
    "chars": 89,
    "preview": "# `cat-config`\n\nPrint the configuration file.\n\n## Examples\n\n```sh\nchezmoi cat-config\n```\n"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/cat.md",
    "chars": 298,
    "preview": "# `cat` *target*...\n\nWrite the target contents of *target*s to stdout. *target*s must be files,\nscripts, or symlinks. Fo"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/cd.md",
    "chars": 763,
    "preview": "# `cd` [*path*]\n\nLaunch a shell in the working tree (typically the source directory). chezmoi\nwill launch the command se"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/chattr.md",
    "chars": 1934,
    "preview": "# `chattr` *modifier* *target*...\n\nChange the attributes and/or type of *target*s. *modifier* specifies what to\nmodify.\n"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/commands.go",
    "chars": 161,
    "preview": "// Package commands contains chezmoi's documentation for commands.\npackage commands\n\nimport \"embed\"\n\n// FS contains all "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/commands_test.go",
    "chars": 164,
    "preview": "package commands\n\nimport (\n\t\"testing\"\n\n\t\"github.com/alecthomas/assert/v2\"\n)\n\nfunc TestFS(t *testing.T) {\n\t_, err := FS.R"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/completion.md",
    "chars": 242,
    "preview": "# `completion` *shell*\n\nGenerate shell completion code for the specified shell (`bash`, `fish`,\n`powershell`, or `zsh`)."
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/data.md",
    "chars": 204,
    "preview": "# `data`\n\nWrite the computed template data to stdout.\n\n## Common flags\n\n### `-f`, `--format` `json`|`yaml`\n\n--8<-- \"comm"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/decrypt.md",
    "chars": 227,
    "preview": "# `decrypt` [*file*...]\n\nDecrypt *file*s using chezmoi's configured encryption. If no files are given,\ndecrypt the stand"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/destroy.md",
    "chars": 754,
    "preview": "# `destroy` *target*...\n\nRemove *target* from the source state, the destination directory, and the state.\n\n!!! danger\n\n "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/diff.md",
    "chars": 1519,
    "preview": "# `diff` [*target*...]\n\nPrint the difference between the target state and the destination state for\n*target*s. If no tar"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/docker.md",
    "chars": 2043,
    "preview": "# `docker`\n\n<!-- markdownlint-disable no-duplicate-heading -->\n\n!!! Warning\n\n    `docker` is an experimental command.\n\n!"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/doctor.md",
    "chars": 148,
    "preview": "# `doctor`\n\nCheck for potential problems.\n\n## Flags\n\n### `--no-network`\n\nDo not use any network connections.\n\n## Example"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/dump-config.md",
    "chars": 171,
    "preview": "# `dump-config`\n\nDump the configuration.\n\n## Common flags\n\n### `-f`, `--format` `json`|`yaml`\n\n--8<-- \"common-flags/form"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/dump.md",
    "chars": 593,
    "preview": "# `dump` [*target*...]\n\nDump the target state of *target*s. If no targets are specified, then the\nentire target state.\n\n"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/edit-config-template.md",
    "chars": 231,
    "preview": "# `edit-config-template`\n\nEdit the configuration file template. If no configuration file template exists,\nthen a new one"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/edit-config.md",
    "chars": 90,
    "preview": "# `edit-config`\n\nEdit the configuration file.\n\n## Examples\n\n```sh\nchezmoi edit-config\n```\n"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/edit-encrypted.md",
    "chars": 309,
    "preview": "# `edit-encrypted` *filename*...\n\nEdit the encrypted files *filename*s.\n\nEach *filename* is decrypted to a temporary dir"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/edit.md",
    "chars": 2705,
    "preview": "# `edit` [*target*...]\n\nEdit the source state of *target*s, which must be files or symlinks. If no\ntargets are given the"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/encrypt.md",
    "chars": 227,
    "preview": "# `encrypt` [*file*...]\n\nEncrypt *file*s using chezmoi's configured encryption. If no files are given,\nencrypt the stand"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/execute-template.md",
    "chars": 2713,
    "preview": "# `execute-template` [*template*...]\n\nExecute *template*s. This is useful for [testing templates][testing] or for\ncallin"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/forget.md",
    "chars": 213,
    "preview": "# `forget` *target*...\n\nRemove *target*s from the source state, i.e. stop managing them. *target*s must\nhave entries in "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/generate.md",
    "chars": 831,
    "preview": "# `generate` *output*\n\nGenerates *output* for use with chezmoi. The currently supported *output*s are:\n\n| Output        "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/git.md",
    "chars": 305,
    "preview": "# `git` [*arg*...]\n\nRun `git` *args* in the working tree (typically the source directory).\n\n!!! note\n\n    Flags in *args"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/help.md",
    "chars": 107,
    "preview": "# `help` [*command*...]\n\nPrint the help associated with *command*, or general help if no command is\ngiven.\n"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/ignored.md",
    "chars": 246,
    "preview": "# `ignored`\n\nPrint the list of entries ignored by chezmoi.\n\n## Common flags\n\n### `-0`, `--nul-path-separator`\n\n--8<-- \"c"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/import.md",
    "chars": 1230,
    "preview": "# `import` *filename*\n\nImport the source state from an archive file in to a directory in the source\nstate. This is prima"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/index.md",
    "chars": 343,
    "preview": "# Commands\n\nThis section provides documentation for chezmoi commands and their arguments.\n\nAll commands accept [global f"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/init.md",
    "chars": 5654,
    "preview": "# `init` [*repo*]\n\nSetup the source directory, generate the config file, and optionally update the\ndestination directory"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/license.md",
    "chars": 78,
    "preview": "# `license`\n\nPrint chezmoi's license.\n\n## Examples\n\n```sh\nchezmoi license\n```\n"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/list.md",
    "chars": 98,
    "preview": "# `list`\n\n`list` is an alias for [`managed`][managed].\n\n[managed]: /reference/commands/managed.md\n"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/manage.md",
    "chars": 183,
    "preview": "# `manage` *target*...\n\n`manage` is an alias for [`add`][add] for symmetry with [`unmanage`][unmanage].\n\n[add]: /referen"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/managed.md",
    "chars": 915,
    "preview": "# `managed` [*path*...]\n\nList all managed entries in the destination directory under all *path*s in\nalphabetical order. "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/merge-all.md",
    "chars": 325,
    "preview": "# `merge-all`\n\nPerform a three-way merge for file whose actual state does not match its target\nstate. The merge is perfo"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/merge.md",
    "chars": 1116,
    "preview": "# `merge` *target*...\n\nPerform a three-way merge between the destination state, the target state, and\nthe source state f"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/podman.md",
    "chars": 98,
    "preview": "# `podman`\n\n`podman` is an alias for [`docker`][docker].\n\n[docker]: /reference/commands/docker.md\n"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/purge.md",
    "chars": 281,
    "preview": "# `purge`\n\nRemove chezmoi's configuration, state, and source directory, but leave the\ntarget state intact.\n\n## Flags\n\n##"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/re-add.md",
    "chars": 873,
    "preview": "# `re-add` [*target*...]\n\nRe-add modified files in the target state, preserving any `encrypted_`\nattributes. chezmoi wil"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/remove.md",
    "chars": 214,
    "preview": "# `remove`\n\nThe `remove` command has been removed. Use the [`forget` command][forget] or\nthe [`destroy` command][destroy"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/rm.md",
    "chars": 206,
    "preview": "# `rm`\n\nThe `rm` command has been removed. Use the [`forget` command][forget] or the\n[`destroy` command][destroy] instea"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/secret.md",
    "chars": 1357,
    "preview": "# `secret`\n\n<!-- markdownlint-disable no-duplicate-heading -->\n\nRun a secret manager's CLI, passing any extra arguments "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/source-path.md",
    "chars": 212,
    "preview": "# `source-path` [*target*...]\n\nPrint the path to each target's source state. If no targets are specified then\nprint the "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/ssh.md",
    "chars": 850,
    "preview": "# `ssh` *host* *init-args*...\n\nSSH to *host*, install chezmoi, run `chezmoi init --apply *init-args*`, and\nexecutes your"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/state.md",
    "chars": 923,
    "preview": "# `state`\n\nManipulate the persistent state.\n\n!!! hint\n\n    To get a full list of subcommands run:\n\n    ```console\n    $ "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/status.md",
    "chars": 1430,
    "preview": "# `status`\n\nPrint the status of the files and scripts managed by chezmoi in a format\nsimilar to [`git status`][git-statu"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/target-path.md",
    "chars": 242,
    "preview": "# `target-path` [*source-path*...]\n\nPrint the target path of each source path. If no source paths are specified then\npri"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/unmanage.md",
    "chars": 191,
    "preview": "# `unmanage` *target*...\n\n`unmanage` is an alias for [`forget`][forget] for symmetry with\n[`manage`][manage].\n\n[forget]:"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/unmanaged.md",
    "chars": 670,
    "preview": "# `unmanaged` [*path*...]\n\nList all unmanaged files in *path*s. When no *path*s are supplied, list all\nunmanaged files i"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/update.md",
    "chars": 990,
    "preview": "# `update`\n\nPull changes from the source repo and apply any changes.\n\nIf `update.command` is set then chezmoi will run `"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/upgrade.md",
    "chars": 1919,
    "preview": "# `upgrade`\n\nUpgrade chezmoi by downloading and installing the latest released version. This\nwill call the GitHub API to"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/commands/verify.md",
    "chars": 634,
    "preview": "# `verify` [*target*...]\n\nVerify that all *target*s match their target state. chezmoi exits with code 0\n(success) if all"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/concepts.md",
    "chars": 1243,
    "preview": "# Concepts\n\nchezmoi computes the target state for the current machine and then updates the\ndestination directory, where:"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/configuration-file/editor.md",
    "chars": 584,
    "preview": "# Editor\n\nThe editor used is the first non-empty string of the `edit.command`\nconfiguration variable, the `$VISUAL` envi"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/configuration-file/hooks.md",
    "chars": 1776,
    "preview": "# Hooks\n\nHook commands are executed before and after events. Unlike scripts, hooks are\nalways run, even if `--dry-run` i"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/configuration-file/index.md",
    "chars": 1636,
    "preview": "# Configuration file\n\nchezmoi searches for its configuration file according to the [XDG Base Directory\nSpecification][xd"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/configuration-file/interpreters.md",
    "chars": 3251,
    "preview": "# Interpreters\n\n<!-- FIXME: some of the following needs to be moved to the how-to -->\n\nThe execution of scripts and hook"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/configuration-file/pinentry.md",
    "chars": 923,
    "preview": "# pinentry\n\nBy default, chezmoi will request passwords from the terminal.\n\nIf the `--no-tty` option is passed, then chez"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/configuration-file/textconv.md",
    "chars": 894,
    "preview": "# textconv\n\nA section called `textconv` in the configuration file controls how file contents\nare modified before being p"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/configuration-file/umask.md",
    "chars": 476,
    "preview": "# umask\n\nBy default, chezmoi uses your current umask as set by your operating system and\nshell. chezmoi only stores crud"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/configuration-file/variables.md.tmpl",
    "chars": 1397,
    "preview": "# Variables\n\n{{ $lastSectionValue := \"\" -}}\n{{ range $sectionName, $variables := .sections -}}\n{{   $sectionValue := \"\" "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/configuration-file/variables.md.yaml",
    "chars": 12198,
    "preview": "sections:\n  '':\n    cacheDir:\n      default: '`$XDG_CACHE_HOME/chezmoi` / `$HOME/.cache/chezmoi` / `%USERPROFILE%/.cache"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/configuration-file/warnings.md",
    "chars": 604,
    "preview": "# Warnings\n\nBy default, chezmoi will warn you when it encounters potential problems. Some of\nthese warnings can be suppr"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/index.md",
    "chars": 924,
    "preview": "# Reference\n\nWelcome to the reference section of the chezmoi documentation.\n\nThis reference covers the following topics:"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/plugins.md",
    "chars": 323,
    "preview": "# Plugins\n\nchezmoi supports plugins, similar to git.\n\nIf you run `chezmoi command` where *command* is not a builtin chez"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/release-history.md.tmpl",
    "chars": 1619,
    "preview": "# Release history\n\n{{- $releases := gitHubListReleases \"twpayne/chezmoi\" }}\n{{- $latestRelease := index $releases 0 }}\n\n"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/source-state-attributes.md",
    "chars": 5303,
    "preview": "# Source state attributes\n\nchezmoi stores the source state of files, symbolic links, and directories in\nregular files an"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/special-directories/chezmoidata.md",
    "chars": 2291,
    "preview": "# `.chezmoidata/`\n\nIf any `.chezmoidata/` directories exist in the source state, all files within\nthem are interpreted a"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/special-directories/chezmoiexternals.md",
    "chars": 529,
    "preview": "# `.chezmoiexternals/`\n\nIf any `.chezmoiexternals/` directories exist in the source state, then all\nfiles in this direct"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/special-directories/chezmoiscripts.md",
    "chars": 265,
    "preview": "# `.chezmoiscripts/`\n\nIf a directory called `.chezmoiscripts/` exists in the root of the source\ndirectory, then any scri"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/special-directories/chezmoitemplates.md",
    "chars": 1032,
    "preview": "# `.chezmoitemplates/`\n\nIf any directory called `.chezmoitemplates/` exists in the source state, then\nall files in this "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/special-directories/index.md",
    "chars": 1264,
    "preview": "# Special directories\n\nAll directories in the source state whose name begins with `.` are ignored by\ndefault, unless the"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/special-files/chezmoi-format-tmpl.md",
    "chars": 1684,
    "preview": "# `.chezmoi.$FORMAT.tmpl`\n\nIf a file called `.chezmoi.$FORMAT.tmpl` exists in the root of the source state\nthen [`chezmo"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/special-files/chezmoidata-format.md",
    "chars": 2484,
    "preview": "# `.chezmoidata.$FORMAT`\n\nIf `.chezmoidata.$FORMAT` files exist in the source state, they are interpreted\nas structured "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/special-files/chezmoiexternal-format.md",
    "chars": 12807,
    "preview": "# `.chezmoiexternal.$FORMAT{,.tmpl}`\n\nIf a file called `.chezmoiexternal.$FORMAT` (with an optional `.tmpl` extension)\ne"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/special-files/chezmoiignore.md",
    "chars": 1964,
    "preview": "# `.chezmoiignore{,.tmpl}`\n\nIf a file called `.chezmoiignore` (with an optional `.tmpl` extension) exists in\nthe source "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/special-files/chezmoiremove.md",
    "chars": 271,
    "preview": "# `.chezmoiremove{,.tmpl}`\n\nIf a file called `.chezmoiremove` (with an optional `.tmpl` extension) exists in\nthe source "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/special-files/chezmoiroot.md",
    "chars": 510,
    "preview": "# `.chezmoiroot`\n\nIf a file called `.chezmoiroot` exists in the root of the source directory then\nthe source state is re"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/special-files/chezmoiversion.md",
    "chars": 490,
    "preview": "# `.chezmoiversion`\n\nIf a file called `.chezmoiversion` exists anywhere in the source directory (not\njust the source sta"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/special-files/index.md",
    "chars": 2306,
    "preview": "# Special files\n\nAll files in the source directory whose name begins with `.` are ignored by\ndefault, unless they are on"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/target-types.md",
    "chars": 5157,
    "preview": "# Target types\n\nchezmoi will create, update, and delete files, directories, and symbolic links\nin the destination direct"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/1password-functions/index.md",
    "chars": 1834,
    "preview": "# 1Password functions\n\nThe `onepassword*` template functions return structured data from\n[1Password][1p] using the [1Pas"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/1password-functions/onepassword.md",
    "chars": 1807,
    "preview": "# `onepassword` *uuid* [*vault* [*account*]]\n\n`onepassword` returns structured data from [1Password][1p] using the\n[1Pas"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/1password-functions/onepasswordDetailsFields.md",
    "chars": 2590,
    "preview": "# `onepasswordDetailsFields` *uuid* [*vault* [*account*]]\n\n`onepasswordDetailsFields` returns structured data from [1Pas"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/1password-functions/onepasswordDocument.md",
    "chars": 1502,
    "preview": "# `onepasswordDocument` *uuid* [*vault* [*account*]]\n\n`onepasswordDocument` returns a document from [1Password][1p] usin"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/1password-functions/onepasswordItemFields.md",
    "chars": 2164,
    "preview": "# `onepasswordItemFields` *uuid* [*vault* [*account*]]\n\n`onepasswordItemFields` returns structured data from [1Password]"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/1password-functions/onepasswordRead.md",
    "chars": 852,
    "preview": "# `onepasswordRead` *url* [*account*]\n\n`onepasswordRead` returns data from [1Password][1p] using the [1Password\nCLI][op]"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/aws-secrets-manager-functions/awsSecretsManager.md",
    "chars": 510,
    "preview": "# `awsSecretsManager` *arn*\n\n`awsSecretsManager` returns structured data retrieved from [AWS Secrets\nManager][awssm]. *a"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/aws-secrets-manager-functions/awsSecretsManagerRaw.md",
    "chars": 518,
    "preview": "# `awsSecretsManagerRaw` *arn*\n\n`awsSecretsManager` returns the raw string value retrieved from [AWS Secrets\nManager][aw"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/aws-secrets-manager-functions/index.md",
    "chars": 526,
    "preview": "# AWS Secrets Manager functions\n\nThe `awsSecretsManager*` functions return data from [AWS Secrets Manager][awssm]\nusing "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/azure-key-vault-functions/azureKeyVault.md",
    "chars": 566,
    "preview": "# `azureKeyVault` *secret name* [*vault-name*]\n\n`azureKeyVault` returns a secret value retrieved from an [Azure Key\nVaul"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/bitwarden-functions/bitwarden.md",
    "chars": 587,
    "preview": "# `bitwarden` [*arg*...]\n\n`bitwarden` returns structured data retrieved from [Bitwarden][bitwarden] using\nthe [Bitwarden"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/bitwarden-functions/bitwardenAttachment.md",
    "chars": 580,
    "preview": "# `bitwardenAttachment` *filename* *itemid*\n\n`bitwardenAttachment` returns a document from [Bitwarden][bitwarden] using "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/bitwarden-functions/bitwardenAttachmentByRef.md",
    "chars": 853,
    "preview": "# `bitwardenAttachmentByRef` *filename* *args*\n\n`bitwardenAttachmentByRef` returns a document from [Bitwarden][bitwarden"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/bitwarden-functions/bitwardenFields.md",
    "chars": 1816,
    "preview": "# `bitwardenFields` [*arg*...]\n\n`bitwardenFields` returns structured data retrieved from [Bitwarden][bitwarden]\nusing th"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/bitwarden-functions/bitwardenSecrets.md",
    "chars": 768,
    "preview": "# `bitwardenSecrets` *secret-id* [*access-token*]\n\n`bitwardenSecrets` returns structured data from [Bitwarden][bitwarden"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/bitwarden-functions/index.md",
    "chars": 1358,
    "preview": "# Bitwarden functions\n\nThe `bitwarden*` and `rbw*` functions return data from [Bitwarden][bitwarden]\nusing the [Bitwarde"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/bitwarden-functions/rbw.md",
    "chars": 574,
    "preview": "# `rbw` *name* [*arg*...]\n\n`rbw` returns structured data retrieved from [Bitwarden][bitwarden] using\n[`rbw`][rbw]. *name"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/bitwarden-functions/rbwFields.md",
    "chars": 644,
    "preview": "# `rbwFields` *name* [*arg*...]\n\n`rbw` returns structured data retrieved from [Bitwarden][bitwarden] using\n[`rbw`][rbw]."
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/dashlane-functions/dashlaneNote.md",
    "chars": 531,
    "preview": "# `dashlaneNote` *filter*\n\n`dashlaneNote` returns the content of a secure note from [Dashlane][dashlane]\nusing the [Dash"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/dashlane-functions/dashlanePassword.md",
    "chars": 564,
    "preview": "# `dashlanePassword` *filter*\n\n`dashlanePassword` returns structured data from [Dashlane][dashlane] using the\n[Dashlane "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/dashlane-functions/index.md",
    "chars": 199,
    "preview": "# Dashlane functions\n\nThe `dashlane*` functions return data from [Dashlane][dashlane]\nusing the [Dashlane CLI][cli].\n\n[d"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/directives.md",
    "chars": 4377,
    "preview": "# Directives\n\nFile-specific template options can be set using template directives in the\ntemplate of the form:\n\n    chez"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/doppler-functions/doppler.md",
    "chars": 510,
    "preview": "# `doppler` *key* [*project* [*config*]]\n\n`doppler` returns the secret for the specified project and configuration from\n"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/doppler-functions/dopplerProjectJson.md",
    "chars": 563,
    "preview": "# `dopplerProjectJson` [*project* [*config*]]\n\n`dopplerProjectJson` returns the secret for the specified project and\ncon"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/doppler-functions/index.md",
    "chars": 201,
    "preview": "# Doppler\n\nchezmoi includes support for [Doppler][doppler] using the `doppler` CLI to\nexpose data through the `doppler` "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/ejson-functions/ejsonDecrypt.md",
    "chars": 491,
    "preview": "# `ejsonDecrypt` *filePath*\n\n`ejsonDecrypt` returns the decrypted content of an [ejson][ejson]-encrypted\nfile.\n\n*filePat"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/ejson-functions/ejsonDecryptWithKey.md",
    "chars": 574,
    "preview": "# `ejsonDecryptWithKey` *filePath* *key*\n\n`ejsonDecryptWithKey` returns the decrypted content of an\n[ejson][ejson]-encry"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/ejson-functions/index.md",
    "chars": 134,
    "preview": "# ejson functions\n\nThe `ejson*` functions return data from [ejson][ejson]-encrypted files.\n\n[ejson]: https://github.com/"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/abortEmpty.md",
    "chars": 320,
    "preview": "# `abortEmpty`\n\n`abortEmpty` causes template execution to immediately stop and return the empty\nstring. If `abortEmpty` "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/comment.md",
    "chars": 400,
    "preview": "# `comment` *prefix* *text*\n\n`comment` returns *text* with each line prefixed with *prefix*.\n\n`comment` is typically use"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/completion.md",
    "chars": 204,
    "preview": "# `completion` *shell*\n\n`completion` returns chezmoi's shell completion for *shell*. *shell* can be one\nof `bash`, `fish"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/decrypt.md",
    "chars": 222,
    "preview": "# `decrypt` *ciphertext*\n\n`decrypt` decrypts *ciphertext* using chezmoi's configured encryption method.\n\n!!! example\n\n  "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/deleteValueAtPath.md",
    "chars": 594,
    "preview": "# `deleteValueAtPath` *path* *dict*\n\n`deleteValueAtPath` modifies *dict* to delete the value at *path* and returns\n*dict"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/encrypt.md",
    "chars": 102,
    "preview": "# `encrypt` *plaintext*\n\n`encrypt` encrypts *plaintext* using chezmoi's configured encryption method.\n"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/ensureLinePrefix.md",
    "chars": 644,
    "preview": "# `ensureLinePrefix` *prefix* [*prefix-to-add*] *text*\n\n`ensureLinePrefix` ensures that each line of *text* starts with "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/eqFold.md",
    "chars": 465,
    "preview": "# `eqFold` *string1* *string2* [*extraString*...]\n\n`eqFold` returns the boolean truth of comparing *string1* with *strin"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/exec.md",
    "chars": 380,
    "preview": "# `exec` *name* [*arg*...]\n\n`exec` executes the command *name* with *arg*s and returns `true` if the command\nsucceeded, "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/findExecutable.md",
    "chars": 1265,
    "preview": "# `findExecutable` *file* *path-list*\n\n`findExecutable` searches for an executable named *file* in directories\nidentifie"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/findOneExecutable.md",
    "chars": 1442,
    "preview": "# `findOneExecutable` *file-list* *path-list*\n\n`findOneExecutable` searches for an executable from *file-list* in direct"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/fromIni.md",
    "chars": 159,
    "preview": "# `fromIni` *initext*\n\n`fromIni` returns the parsed value of *initext*.\n\n!!! example\n\n    ```\n    {{ (fromIni \"[section]"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/fromJson.md",
    "chars": 435,
    "preview": "# `fromJson` *jsontext*\n\n`fromJson` parses *jsontext* as JSON and returns the parsed value.\n\nJSON numbers that can be re"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/fromJsonc.md",
    "chars": 190,
    "preview": "# `fromJsonc` *jsonctext*\n\n`fromJsonc` parses *jsonctext* as JSONC using\n[`github.com/tailscale/hujson`][hujson] and ret"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/fromToml.md",
    "chars": 168,
    "preview": "# `fromToml` *tomltext*\n\n`fromToml` returns the parsed value of *tomltext*.\n\n!!! example\n\n    ```\n    {{ (fromToml \"[sec"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/fromYaml.md",
    "chars": 159,
    "preview": "# `fromYaml` *yamltext*\n\n`fromYaml` returns the parsed value of *yamltext*.\n\n!!! example\n\n    ```\n    {{ (fromYaml \"key1"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/getRedirectedURL.md",
    "chars": 943,
    "preview": "# `getRedirectedURL` *url*\n\n`getRedirectedURL` returns the final URL after following any HTTP redirects\nfrom the given *"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/glob.md",
    "chars": 248,
    "preview": "# `glob` *pattern*\n\n`glob` returns the list of files matching *pattern* according to\n[`doublestar.Glob`][glob]. Relative"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/hexDecode.md",
    "chars": 154,
    "preview": "# `hexDecode` *hextext*\n\n`hexDecode` returns *hextext* decoded from a hex-encoding string.\n\n!!! example\n\n    ```\n    {{ "
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/hexEncode.md",
    "chars": 138,
    "preview": "# `hexEncode` *string*\n\n`hexEncode` returns *string* encoded as a hex string.\n\n!!! example\n\n    ```\n    {{ hexEncode \"ex"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/include.md",
    "chars": 160,
    "preview": "# `include` *filename*\n\n`include` returns the literal contents of the file named `*filename*`. Relative\npaths are interp"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/includeTemplate.md",
    "chars": 274,
    "preview": "# `includeTemplate` *filename* [*data*]\n\n`includeTemplate` returns the result of executing the contents of *filename*\nwi"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/index.md",
    "chars": 259,
    "preview": "# Functions\n\nAll standard [`text/template`][go-template] and [text template functions from\n`sprig`][sprig] are included."
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/ioreg.md",
    "chars": 645,
    "preview": "# `ioreg`\n\nOn macOS, `ioreg` returns the structured output of the `ioreg -a -l` command,\nwhich includes detailed informa"
  },
  {
    "path": "assets/chezmoi.io/docs/reference/templates/functions/isExecutable.md",
    "chars": 185,
    "preview": "# `isExecutable` *file*\n\n`isExecutable` returns true if a file is executable.\n\n!!! example\n\n    ```\n    {{ if isExecutab"
  }
]

// ... and 762 more files (download for full content)

About this extraction

This page contains the full source code of the twpayne/chezmoi GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 962 files (4.1 MB), approximately 1.1M tokens, and a symbol index with 2141 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!