62 lines
2.2 KiB
Bash
Executable file
62 lines
2.2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# kei-configure — re-pick hook packs + stack profile after install, without a
|
|
# full reinstall. Updates ~/.claude/config/onboarding.toml and re-applies the
|
|
# hook selection to settings.json (adds newly selected hooks, removes deselected
|
|
# kit hooks, leaves your own hooks untouched). Agent-set changes apply on the
|
|
# next `./install.sh`.
|
|
#
|
|
# Invoked via `kei configure`. Interactive (needs a terminal).
|
|
set -u
|
|
set -o pipefail 2>/dev/null || true
|
|
|
|
HOME_DIR="${HOME:?HOME not set}"
|
|
KIT_DIR="$(cat "$HOME_DIR/.claude/.kei-kit-dir" 2>/dev/null || true)"
|
|
if [ -z "$KIT_DIR" ] || [ ! -d "$KIT_DIR/install" ]; then
|
|
echo "kei configure: KeiSeiKit checkout not found." >&2
|
|
echo " (expected its path in ~/.claude/.kei-kit-dir; re-run ./install.sh from your checkout)" >&2
|
|
exit 1
|
|
fi
|
|
if [ ! -t 0 ]; then
|
|
echo "kei configure: interactive only — run it from a terminal." >&2
|
|
exit 1
|
|
fi
|
|
|
|
LIB_DIR="$KIT_DIR/install"
|
|
MANIFEST="$KIT_DIR/_primitives/MANIFEST.toml"
|
|
PACKS_TOML="$KIT_DIR/_primitives/hook-packs.toml"
|
|
ONBOARDING_CONFIG="$HOME_DIR/.claude/config/onboarding.toml"
|
|
export HOME_DIR KIT_DIR LIB_DIR MANIFEST PACKS_TOML ONBOARDING_CONFIG
|
|
|
|
# shellcheck source=/dev/null
|
|
source "$LIB_DIR/lib-log.sh"
|
|
# shellcheck source=/dev/null
|
|
source "$LIB_DIR/lib-backup.sh"
|
|
# shellcheck source=/dev/null
|
|
source "$LIB_DIR/lib-profile.sh"
|
|
# shellcheck source=/dev/null
|
|
source "$LIB_DIR/lib-packs.sh"
|
|
# shellcheck source=/dev/null
|
|
source "$LIB_DIR/lib-hooks.sh"
|
|
# shellcheck source=/dev/null
|
|
source "$LIB_DIR/lib-onboarding-ui.sh"
|
|
|
|
ONBOARDING_STACK=""
|
|
ONBOARDING_PACKS=""
|
|
onboarding_pick_stack
|
|
|
|
# Update only stack_profile/enabled_packs in onboarding.toml; preserve the rest.
|
|
mkdir -p "$(dirname "$ONBOARDING_CONFIG")"
|
|
touch "$ONBOARDING_CONFIG"
|
|
_tmp="$(mktemp)"
|
|
grep -vE '^(stack_profile|enabled_packs)[[:space:]]*=' "$ONBOARDING_CONFIG" > "$_tmp" 2>/dev/null || true
|
|
{
|
|
printf 'stack_profile = "%s"\n' "$ONBOARDING_STACK"
|
|
printf 'enabled_packs = "%s"\n' "$ONBOARDING_PACKS"
|
|
} >> "$_tmp"
|
|
mv "$_tmp" "$ONBOARDING_CONFIG"
|
|
|
|
# Re-apply hooks: prune kit-owned entries, merge the newly selected set.
|
|
activate_hooks
|
|
|
|
say "reconfigured: stack=$ONBOARDING_STACK packs=${ONBOARDING_PACKS:-none}"
|
|
say " settings.json hooks updated. Agent-set changes apply on the next ./install.sh."
|