🏑

おれの chezmoi 小ネタ集

に公開

chezmoi 小ネタです。

chezmoi diff でファイル名だけ確認する

chezmoi diff すると差分が出る。

 $ chezmoi diff
diff --git a/.config/zsh-abbr/user-abbreviations b/.config/zsh-abbr/user-abbreviations
index 44858ff65ed4d489d13ae84f34177869917eec0d..dddae84d604c07f9385ceb0c4a2add18e5d83c26 100600
--- a/.config/zsh-abbr/user-abbreviations
+++ b/.config/zsh-abbr/user-abbreviations
@@ -18,3 +18,4 @@ abbr ga='git add'
 abbr gm='git merge'
 abbr grh='git reset HEAD'
 abbr grhh='git reset HEAD --hard'
+foo

差分がファイル名だけ確認したい。

 $ chezmoi diff | grep -E '^diff '
diff --git a/.config/zsh-abbr/user-abbreviations b/.config/zsh-abbr/user-abbreviations

just タスクにする。

diff:
    @chezmoi diff | grep -E '^diff ' || echo "No differences"

chezmoi re-add するときに chezmoi diff で表示されるファイル名を使う

しかし、表示されるファイルパスが Chezmoi のホームディレクトリからの絶対パスのような表記なので適当にコピーすると先頭の a/orb/~/ に変換する必要があり面倒

  • a/.config/zsh-abbr/user-abbreviations
  • b/.config/zsh-abbr/user-abbreviations

just タスクにする。

re-add file:
    @echo {{file}} | sed 's/^./~/' | xargs chezmoi re-add

chezmoi apply したら shell を読み込み直したい

設定変更を反映したいので。

just タスクにする。

apply:
    chezmoi apply && exec $SHELL -l

まとめ

justfile 例

set shell := ["bash", "-eu", "-o", "pipefail", "-c"]

[private]
@default:
    echo "Usage: just <recipe>" && just --list

diff:
    @chezmoi diff | grep -E '^diff ' || echo -e "No differences"

re-add file:
    @echo {{file}} | sed 's/^./~/' | xargs chezmoi re-add

apply:
    chezmoi apply && exec $SHELL -l

使用例

 $ just diff                                        
diff --git a/.config/zsh-abbr/user-abbreviations b/.config/zsh-abbr/user-abbreviations

# ↑のパスをコピーして持ってきてる
 $ just re-add a/.config/zsh-abbr/user-abbreviations

課題

もっとうまい解決法がある気がする。そもそもオプションとか見落としてるかも。

本当は zsh-abbrchezmoi d とか chezmoi rachezmoi a とかで登録したかったのだけど、うまくいかなかった。

Discussion