diff options
Diffstat (limited to 'link/lib.sh')
| -rw-r--r-- | link/lib.sh | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/link/lib.sh b/link/lib.sh index 1899f00..67b358e 100644 --- a/link/lib.sh +++ b/link/lib.sh @@ -120,3 +120,29 @@ xdg_config_dir="${XDG_CONFIG_HOME:-$HOME/.config}" # iCloud Drive, on a Mac signed into it; absent everywhere else. icloud_dir="$HOME/Library/Mobile Documents/com~apple~CloudDocs" + +# Machine-local opt-out: the name of a part, one per line, in +# ~/.config/dot/skip. For a machine where a part would do the wrong thing -- +# one whose ~/.claude/settings.json is its owner's rather than this account's, +# say -- without editing this repo, which every machine shares. Hand-written +# and in no repo, like ~/.localenv. +skip_file="$xdg_config_dir/dot/skip" + +part_skipped() { + # Whole-line match, so a blank or commented line cannot name a part. + [[ -r "$skip_file" ]] && grep -qxF "$1" "$skip_file" +} + +# A part skips itself here rather than in link.sh's loop, so that running one +# on its own (`link/claude.sh yes`) obeys the file too. Parts only: link.sh and +# other repos' link.sh source this as well, and sit outside link/, so their own +# names can never be read as a part's. +if [[ "$(basename "$(dirname "$(realpath "$0")")")" == "link" ]] +then + part_name="$(basename "$0" .sh)" + if part_skipped "$part_name" + then + yellow "link/$part_name.sh skipped by $skip_file" + exit 0 + fi +fi |
