Add overlay installer for existing Omarchy systems
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QKxGW1raAWaqeU8WdHsMsp
This commit is contained in:
Executable
+66
@@ -0,0 +1,66 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# omarchy:summary=Install or remove the OmarchyCN layer on an existing Omarchy
|
||||||
|
# omarchy:args=[--uninstall]
|
||||||
|
# omarchy:examples=omarchy-cn-install-overlay | omarchy-cn-install-overlay --uninstall
|
||||||
|
# Bootstraps onto a foreign OMARCHY_PATH, so it resolves its own checkout root.
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SRC=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
|
||||||
|
DEST="${OMARCHY_PATH:?OMARCHY_PATH must point at the target Omarchy install}"
|
||||||
|
MANIFEST="$HOME/.local/state/omarchycn/overlay-manifest"
|
||||||
|
|
||||||
|
run_dest() {
|
||||||
|
if [[ -w $DEST ]]; then
|
||||||
|
"$@"
|
||||||
|
else
|
||||||
|
sudo "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
uninstall() {
|
||||||
|
if [[ ! -f $MANIFEST ]]; then
|
||||||
|
echo "No overlay manifest at $MANIFEST" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
while IFS= read -r rel; do
|
||||||
|
[[ $rel == source=* ]] && continue
|
||||||
|
run_dest rm -f "$DEST/$rel"
|
||||||
|
done < "$MANIFEST"
|
||||||
|
run_dest rm -rf "$DEST/cn"
|
||||||
|
rm -f "$MANIFEST"
|
||||||
|
echo "OmarchyCN overlay removed from $DEST"
|
||||||
|
}
|
||||||
|
|
||||||
|
install() {
|
||||||
|
if [[ ! -f $DEST/version || ! -x $DEST/bin/omarchy ]]; then
|
||||||
|
echo "No Omarchy install found at $DEST" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ $SRC == "$DEST" ]]; then
|
||||||
|
echo "Source checkout and target are the same tree; nothing to overlay" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "${MANIFEST%/*}"
|
||||||
|
echo "source=$SRC" > "$MANIFEST"
|
||||||
|
|
||||||
|
run_dest mkdir -p "$DEST/cn"
|
||||||
|
run_dest cp -r "$SRC/cn/." "$DEST/cn/"
|
||||||
|
|
||||||
|
local f rel
|
||||||
|
for f in "$SRC/bin/omarchycn" "$SRC"/bin/omarchy-cn-*; do
|
||||||
|
rel="bin/${f##*/}"
|
||||||
|
run_dest cp "$f" "$DEST/$rel"
|
||||||
|
echo "$rel" >> "$MANIFEST"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "OmarchyCN overlay installed into $DEST ($(grep -c '^bin/' "$MANIFEST") commands)"
|
||||||
|
echo "Verify: omarchy cn version"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ ${1:-} == "--uninstall" ]]; then
|
||||||
|
uninstall
|
||||||
|
else
|
||||||
|
install
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user