twpayne / chezmoi

Manage your dotfiles across multiple diverse machines, securely.
https://www.chezmoi.io/
MIT License
13.04k stars 486 forks source link

.chezmoiignore thinks closing braces are a pattern #3778

Closed blindelectron closed 4 months ago

blindelectron commented 4 months ago

Describe the bug

When trying to ignore files while the current operating system is windows. Chezmoi throws an invalid pattern error at the end of the if statement.

To reproduce

Add .chezmoiignore to the source state with the following contents:

{{ if ne .chezmoi.os "windows" }}
AppData/
AppData/**
portable/keyop/
portable/keyop/**)
.config/scoop/
.config/scoop/**
Documents/
Documents/**
{{ end }}}}

Expected behavior

Chezmoi will ignore the listed files and folders if the os is not windows.

Output of command with the --verbose flag

$ chezmoi --verbose re-add
chezmoi: C:/Users/ethan/.local/share/chezmoi/.chezmoiignore.tmpl:1: }}: invalid pattern                                                                                                     

Output of chezmoi doctor

```console $ chezmoi doctor RESULT CHECK MESSAGE ok version v2.48.1, commit 4ad03d7a6ff4d4aafeb65efbfa47c1529238c302, built at 2024-05-12T19:30:56Z, built by goreleaser ok latest-version v2.48.1 ok os-arch windows/amd64 ok systeminfo Microsoft Windows 11 Pro (10.0.22621 N/A Build 22621) ok go-version go1.22.3 (gc) ok executable ~/scoop/apps/chezmoi/current/chezmoi.exe ok upgrade-method replace-executable ok config-file ~/.config/chezmoi/chezmoi.toml, last modified 2024-05-24T22:04:55-05:00 warning source-dir ~/.local/share/chezmoi is a git working tree (dirty) ok suspicious-entries no suspicious entries warning working-tree ~/.local/share/chezmoi is a git working tree (dirty) ok dest-dir ~ is a directory ok cd-command found C:/windows/system32/cmd.exe ok cd-args 'C:\\windows\\system32\\cmd.exe' info diff-command not set ok edit-command found C:/windows/system32/notepad.exe ok edit-args 'C:\\windows\\system32\\notepad.exe' ok git-command found ~/scoop/shims/git.exe, version 2.43.0 ok merge-command found ~/scoop/shims/vimdiff.exe ok shell-command found C:/windows/system32/cmd.exe ok shell-args 'C:\\windows\\system32\\cmd.exe' ok age-command found ~/scoop/shims/age.exe, version 1.1.1 info gpg-command gpg not found in $PATH info pinentry-command not set info 1password-command op not found in $PATH ok bitwarden-command found C:/ProgramData/chocolatey/bin/bw.exe, version 2024.4.1 info bitwarden-secrets-command bws not found in $PATH info dashlane-command dcli not found in $PATH info doppler-command doppler not found in $PATH info gopass-command gopass not found in $PATH info keepassxc-command keepassxc-cli not found in $PATH info keepassxc-db not set info keeper-command keeper not found in $PATH info lastpass-command lpass not found in $PATH info pass-command pass not found in $PATH info passhole-command ph not found in $PATH info rbw-command rbw not found in $PATH info vault-command vault not found in $PATH info vlt-command vlt not found in $PATH info secret-command not set ```
twpayne commented 4 months ago

chezmoi is correct here. Lines in .chezmoiignore files are filepath globs as understood by bmatcuk/doublestar and }} is not a valid pattern.

Note the extra }} at the end of the {{ end }} template statement on the last line.

blindelectron commented 4 months ago

my god, I am such an idiot, didn't even notice those, oops I guess thats what I get for not putting my screen reader into the coding profile.

twpayne commented 4 months ago

No worries, glad that the problem is solved :)