#!/bin/bash # omarchy:summary=Install a hook into ~/.config/omarchy/hooks/.d/ # omarchy:group=hook # omarchy:name=install # omarchy:args= # omarchy:examples=omarchy hook install post-update ~/my-hook set -e if (( $# != 2 )); then echo "Usage: omarchy-hook-install " exit 1 fi HOOK_TYPE=$1 HOOK_FILE=$2 # Hook types are the same labels omarchy-hook runs (post-update, theme-set). # The type becomes a directory under the hooks directory. A slash would turn # it into directory levels. A bare `.` or `..` is a name the runner already # refuses, so installing under it would write a hook nothing can run. Refuse # those rather than mkdir/cp into them. Dots inside a name (a..b) are fine. if [[ -z $HOOK_TYPE || $HOOK_TYPE == */* || $HOOK_TYPE == "." || $HOOK_TYPE == ".." ]]; then echo "Invalid hook name: $HOOK_TYPE" >&2 exit 2 fi HOOK_DIR="$HOME/.config/omarchy/hooks/$HOOK_TYPE.d" HOOK_NAME=$(basename -- "$HOOK_FILE") HOOK_PATH="$HOOK_DIR/$HOOK_NAME" if [[ ! -f $HOOK_FILE ]]; then echo "Hook file not found: $HOOK_FILE" exit 1 fi mkdir -p "$HOOK_DIR" cp -- "$HOOK_FILE" "$HOOK_PATH" chmod 755 "$HOOK_PATH" echo "Installed $HOOK_TYPE hook: $HOOK_PATH"