diff --git a/bin/yakcloud b/bin/yakcloud index 8abdfce..1bc3882 100755 --- a/bin/yakcloud +++ b/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=