fix(shell): use single ~/.config/zsh/local.zsh for machine local
Replace the local/ directory of split env/login/interactive files with one always-on local.zsh sourced from .zshenv. Deploy migrates old fragments and never overwrites local.zsh.
This commit is contained in:
+18
-7
@@ -104,8 +104,8 @@ grep -Fq 'deploy.sh' "$ROOT/install.sh" || fail "install.sh does not invoke depl
|
||||
grep -Fq 'brew shellenv' "$ROOT/config/env/00-path.zsh" || fail "Homebrew is not initialized in env path module"
|
||||
grep -Fq '/usr/local/bin/brew' "$ROOT/config/env/00-path.zsh" || fail "Intel Homebrew path is missing from env path module"
|
||||
grep -Fq '${HOME}/.local/bin' "$ROOT/config/env/00-path.zsh" || fail "~/.local/bin is not added in env path module"
|
||||
grep -Fq 'env.local.zsh' "$ROOT/.zshenv" || fail "machine-local env.local.zsh hook is missing"
|
||||
grep -Fq 'login.local.zsh' "$ROOT/.zprofile" || fail "machine-local login.local.zsh hook is missing"
|
||||
grep -Fq 'local.zsh' "$ROOT/.zshenv" || fail "machine-local local.zsh hook is missing"
|
||||
grep -Fq 'local.zsh' "$ROOT/.zshenv" || fail "local.zsh is not sourced from .zshenv"
|
||||
if grep -Fq 'brew shellenv' "$ROOT/.zshrc" "$ROOT/config/interactive"/*.zsh; then
|
||||
fail "Homebrew still initializes from interactive-only files"
|
||||
fi
|
||||
@@ -114,20 +114,31 @@ if grep -Eq '^[[:space:]]*export MLX_USER_TOKEN=' "$ROOT"/zshrc/*.zsh; then
|
||||
fail "a static MLX user token remains"
|
||||
fi
|
||||
|
||||
# deploy.sh installs managed layout and preserves local/
|
||||
# deploy.sh installs managed layout and preserves local.zsh
|
||||
deploy_home="$TEMP_DIR/deploy-home"
|
||||
mkdir -p "$deploy_home/.config/zsh/local" "$deploy_home/.local/bin" "$deploy_home/.grok/bin"
|
||||
printf '%s\n' 'machine-only' >"$deploy_home/.config/zsh/local/env.local.zsh"
|
||||
mkdir -p "$deploy_home/.config/zsh" "$deploy_home/.local/bin" "$deploy_home/.grok/bin"
|
||||
printf '%s\n' 'machine-only' >"$deploy_home/.config/zsh/local.zsh"
|
||||
printf '%s\n' '#!/bin/sh' 'echo grok-ok' >"$deploy_home/.grok/bin/grok"
|
||||
chmod +x "$deploy_home/.grok/bin/grok"
|
||||
HOME="$deploy_home" bash "$ROOT/deploy.sh" --home "$deploy_home"
|
||||
[[ -f "$deploy_home/.zshenv" ]] || fail "deploy.sh did not install .zshenv"
|
||||
[[ -f "$deploy_home/.config/zsh/env/00-path.zsh" ]] || fail "deploy.sh did not install env modules"
|
||||
[[ -f "$deploy_home/.config/zsh/interactive/10-bootstrap.zsh" ]] || fail "deploy.sh did not install interactive modules"
|
||||
grep -Fxq 'machine-only' "$deploy_home/.config/zsh/local/env.local.zsh" ||
|
||||
fail "deploy.sh overwrote local/env.local.zsh"
|
||||
grep -Fxq 'machine-only' "$deploy_home/.config/zsh/local.zsh" ||
|
||||
fail "deploy.sh overwrote local.zsh"
|
||||
[[ -L "$deploy_home/.local/bin/grok" ]] || fail "deploy.sh did not create grok shim"
|
||||
|
||||
# deploy migrates split local/* into local.zsh
|
||||
split_home="$TEMP_DIR/split-home"
|
||||
mkdir -p "$split_home/.config/zsh/local"
|
||||
printf '%s\n' 'from-env-local' >"$split_home/.config/zsh/local/env.local.zsh"
|
||||
printf '%s\n' 'from-login-local' >"$split_home/.config/zsh/local/login.local.zsh"
|
||||
HOME="$split_home" bash "$ROOT/deploy.sh" --home "$split_home" >/dev/null
|
||||
grep -Fq 'from-env-local' "$split_home/.config/zsh/local.zsh" ||
|
||||
fail "deploy.sh did not migrate env.local.zsh into local.zsh"
|
||||
grep -Fq 'from-login-local' "$split_home/.config/zsh/local.zsh" ||
|
||||
fail "deploy.sh did not migrate login.local.zsh into local.zsh"
|
||||
|
||||
# Non-interactive zsh must resolve ~/.local/bin without sourcing .zshrc.
|
||||
local_bin_home="$TEMP_DIR/local-bin-home"
|
||||
mkdir -p "$local_bin_home/.local/bin"
|
||||
|
||||
Reference in New Issue
Block a user