Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Kb7vDj6PHwymeDeSUUk1eX
73 lines
1.9 KiB
Bash
Executable File
73 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
||
# omarchy:summary=Full OmarchyCN update: system, cn data, and migrations
|
||
# omarchy:examples=omarchycn update
|
||
|
||
set -euo pipefail
|
||
|
||
MANIFEST="$HOME/.local/state/omarchycn/overlay-manifest"
|
||
|
||
if [[ ! -f $MANIFEST ]]; then
|
||
# Package install: the pipeline brings the new cn tree and runs cn migrations
|
||
if [[ -d $OMARCHY_PATH/cn ]]; then
|
||
exec omarchy-update
|
||
fi
|
||
echo "未检测到 OmarchyCN($OMARCHY_PATH/cn 不存在,也没有 overlay manifest)" >&2
|
||
exit 1
|
||
fi
|
||
|
||
src=$(grep -m1 '^source=' "$MANIFEST" | cut -d= -f2-)
|
||
if [[ ! -d $src/.git ]]; then
|
||
echo "Overlay source $src is not a git checkout" >&2
|
||
exit 1
|
||
fi
|
||
|
||
channel=$(omarchy-cn-channel)
|
||
channel=${channel%% *}
|
||
|
||
old=$(git -C "$src" rev-parse --short HEAD)
|
||
git -C "$src" fetch -q --tags origin
|
||
|
||
case "$channel" in
|
||
nightly)
|
||
git -C "$src" checkout -q quattro
|
||
git -C "$src" pull --ff-only origin quattro
|
||
;;
|
||
beta)
|
||
tag=$(git -C "$src" tag -l "*-cn.*" | sort -V | tail -1)
|
||
if [[ -z $tag ]]; then
|
||
echo "beta 通道无可用发布 tag" >&2
|
||
exit 1
|
||
fi
|
||
git -C "$src" checkout -q "$tag"
|
||
;;
|
||
stable)
|
||
tag=$(git -C "$src" tag -l "*-cn.*" | grep -vE "alpha|beta|rc" | sort -V | tail -1 || true)
|
||
if [[ -z $tag ]]; then
|
||
echo "当前尚无 stable 发布(omarchycn channel beta 可跟随预发布)" >&2
|
||
exit 1
|
||
fi
|
||
git -C "$src" checkout -q "$tag"
|
||
;;
|
||
*)
|
||
echo "Unknown channel: $channel" >&2
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
# Never move onto a tree that predates the channel mechanism: its update
|
||
# command cannot switch back, stranding the install
|
||
if [[ ! -f $src/bin/omarchy-cn-channel ]]; then
|
||
git -C "$src" checkout -q "$old"
|
||
echo "$channel 通道的目标发布早于通道机制,已回退;请使用 nightly 或更新的发布" >&2
|
||
exit 1
|
||
fi
|
||
|
||
new=$(git -C "$src" rev-parse --short HEAD)
|
||
echo "Channel: $channel, source: $old -> $new"
|
||
|
||
"$src/bin/omarchy-cn-install-overlay"
|
||
|
||
"$src/bin/omarchy-cn-migrate"
|
||
|
||
echo "OmarchyCN update complete ($(omarchy-cn-version 2>/dev/null || echo unknown))"
|