upgrade/install: 버전 같아도 캐시 우회로 항상 최신 bin 강제 갱신(no-cache+캐시버스터, hash -r). v0.3.1
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
18
bin/yakcloud
18
bin/yakcloud
@ -18,7 +18,7 @@ set -euo pipefail
|
||||
|
||||
REPO="${YAKCLOUD_STARTER_REPO:-https://gitea.yakenator.io/yakenator/yakcloud-starter}"
|
||||
BRANCH="${YAKCLOUD_STARTER_BRANCH:-main}"
|
||||
VERSION="0.3.0"
|
||||
VERSION="0.3.1"
|
||||
|
||||
die() { echo "✗ $*" >&2; exit 1; }
|
||||
info() { echo "▸ $*"; }
|
||||
@ -89,16 +89,24 @@ cmd_project_check() {
|
||||
python3 scripts/yakcloud_deploy.py yakcloud.yaml --dry-run
|
||||
}
|
||||
|
||||
# 전역 CLI 자기 갱신(설치된 yakcloud 를 최신 bin 으로 덮어씀).
|
||||
# 전역 CLI 자기 갱신 — 버전이 같아도 항상 최신 파일을 강제로 다시 받아 덮어쓴다(캐시 우회).
|
||||
cmd_upgrade() {
|
||||
local self; self="$(command -v yakcloud 2>/dev/null || true)"; [ -n "$self" ] || self="$0"
|
||||
info "yakcloud CLI 업그레이드… ($self)"
|
||||
# 심볼릭 링크면 실체 파일을 갱신.
|
||||
if [ -L "$self" ]; then self="$(readlink -f "$self" 2>/dev/null || readlink "$self" 2>/dev/null || echo "$self")"; fi
|
||||
local before; before="$("$self" version 2>/dev/null || echo '?')"
|
||||
info "yakcloud CLI 강제 갱신… ($self, 현재 $before)"
|
||||
local tmp; tmp="$(mktemp)"
|
||||
curl -fsSL "$REPO/raw/branch/$BRANCH/bin/yakcloud" -o "$tmp" || { rm -f "$tmp"; die "다운로드 실패"; }
|
||||
# 캐시 우회: no-cache 헤더 + 캐시버스터 쿼리. Gitea/프록시가 raw 를 캐시해도 항상 최신 획득.
|
||||
local bust; bust="$(date +%s 2>/dev/null || echo 0)"
|
||||
curl -fsSL -H 'Cache-Control: no-cache' -H 'Pragma: no-cache' \
|
||||
"$REPO/raw/branch/$BRANCH/bin/yakcloud?nocache=$bust" -o "$tmp" \
|
||||
|| { rm -f "$tmp"; die "다운로드 실패"; }
|
||||
head -1 "$tmp" | grep -q 'bash' || { rm -f "$tmp"; die "받은 파일이 올바르지 않습니다"; }
|
||||
chmod +x "$tmp"
|
||||
mv "$tmp" "$self" 2>/dev/null || { rm -f "$tmp"; die "설치 실패(권한) — 'DEST=<dir> 재설치' 또는 sudo"; }
|
||||
echo "✓ 업그레이드 완료: $("$self" version 2>/dev/null || echo yakcloud)"
|
||||
hash -r 2>/dev/null || true # 셸 명령 해시 캐시 초기화(새 바이너리 즉시 반영)
|
||||
echo "✓ 업그레이드 완료: $before → $("$self" version 2>/dev/null || echo yakcloud)"
|
||||
}
|
||||
|
||||
# 기존 프로젝트의 플러밍(엔진·CI·스킬)만 최신화. 앱/매니페스트/Dockerfile 등 사용자 파일은 보존.
|
||||
|
||||
@ -8,7 +8,10 @@ BRANCH="${YAKCLOUD_STARTER_BRANCH:-main}"
|
||||
DEST="${DEST:-$HOME/.local/bin}"
|
||||
mkdir -p "$DEST"
|
||||
echo "▸ yakcloud CLI 설치 → $DEST/yakcloud"
|
||||
curl -fsSL "$REPO/raw/branch/$BRANCH/bin/yakcloud" -o "$DEST/yakcloud"
|
||||
# 캐시 우회(no-cache + 캐시버스터) — 항상 최신 bin 획득.
|
||||
BUST="$(date +%s 2>/dev/null || echo 0)"
|
||||
curl -fsSL -H 'Cache-Control: no-cache' -H 'Pragma: no-cache' \
|
||||
"$REPO/raw/branch/$BRANCH/bin/yakcloud?nocache=$BUST" -o "$DEST/yakcloud"
|
||||
chmod +x "$DEST/yakcloud"
|
||||
echo "✓ 완료. PATH 에 $DEST 가 있는지 확인하세요:"
|
||||
echo ' export PATH="$HOME/.local/bin:$PATH"'
|
||||
|
||||
Reference in New Issue
Block a user