desktop 앱 적용
This commit is contained in:
Executable
+140
@@ -0,0 +1,140 @@
|
||||
#!/usr/bin/env bash
|
||||
# macOS Jenkins / 개발 Mac — GoldenChart Desktop 빌드 의존성 설치
|
||||
set -euo pipefail
|
||||
|
||||
MAC_ONLY=0
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--mac-only) MAC_ONLY=1; shift ;;
|
||||
*) echo "Unknown arg: $1 (supported: --mac-only)"; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
log() { echo "[install-desktop-deps] $*"; }
|
||||
|
||||
if [[ "$(uname -s)" != "Darwin" ]]; then
|
||||
log "이 스크립트는 macOS용입니다."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Homebrew / Rust PATH (표준 prefix + 사용자 prefix)
|
||||
prepend_path() {
|
||||
case ":${PATH}:" in
|
||||
*":$1:"*) ;;
|
||||
*) export PATH="$1:$PATH" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
for prefix in /opt/homebrew "$HOME/homebrew" /usr/local; do
|
||||
[[ -x "$prefix/bin/brew" ]] && prepend_path "$prefix/bin" && prepend_path "$prefix/sbin"
|
||||
[[ -d "$prefix/opt/llvm/bin" ]] && prepend_path "$prefix/opt/llvm/bin"
|
||||
done
|
||||
prepend_path "$HOME/.cargo/bin"
|
||||
|
||||
install_homebrew_user() {
|
||||
local prefix="$HOME/homebrew"
|
||||
if [[ -x "$prefix/bin/brew" ]]; then
|
||||
return 0
|
||||
fi
|
||||
log "Homebrew 사용자 설치 ($prefix) — sudo 불필요"
|
||||
mkdir -p "$prefix"
|
||||
curl -fsSL https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C "$prefix"
|
||||
prepend_path "$prefix/bin"
|
||||
prepend_path "$prefix/sbin"
|
||||
}
|
||||
|
||||
install_homebrew_system() {
|
||||
if [[ -x /opt/homebrew/bin/brew ]] || [[ -x /usr/local/bin/brew ]]; then
|
||||
return 0
|
||||
fi
|
||||
if [[ "${NONINTERACTIVE:-}" == "1" ]] && ! sudo -n true 2>/dev/null; then
|
||||
log "sudo 없음 — $HOME/homebrew 로 설치합니다."
|
||||
install_homebrew_user
|
||||
return 0
|
||||
fi
|
||||
log "Homebrew 시스템 설치 (/opt/homebrew)..."
|
||||
NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
}
|
||||
|
||||
ensure_homebrew() {
|
||||
if command -v brew >/dev/null 2>&1; then
|
||||
return 0
|
||||
fi
|
||||
install_homebrew_system
|
||||
if ! command -v brew >/dev/null 2>&1; then
|
||||
install_homebrew_user
|
||||
fi
|
||||
if ! command -v brew >/dev/null 2>&1; then
|
||||
log "Homebrew 설치 실패. https://brew.sh 수동 설치 후 재실행."
|
||||
exit 1
|
||||
fi
|
||||
# shellcheck disable=SC1091
|
||||
eval "$(brew shellenv)"
|
||||
}
|
||||
|
||||
ensure_rust() {
|
||||
if command -v rustc >/dev/null 2>&1; then
|
||||
log "Rust 이미 설치됨: $(rustc --version)"
|
||||
return 0
|
||||
fi
|
||||
log "Rust 설치 (rustup)..."
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable
|
||||
# shellcheck disable=SC1091
|
||||
source "$HOME/.cargo/env"
|
||||
}
|
||||
|
||||
setup_shell_profile() {
|
||||
local marker="# GoldenChart desktop build PATH"
|
||||
local profile="${ZDOTDIR:-$HOME}/.zprofile"
|
||||
if [[ -f "$profile" ]] && grep -qF "$marker" "$profile" 2>/dev/null; then
|
||||
log "shell profile 이미 설정됨: $profile"
|
||||
return 0
|
||||
fi
|
||||
log "shell profile에 PATH 추가: $profile"
|
||||
{
|
||||
echo ""
|
||||
echo "$marker"
|
||||
echo 'export PATH="$HOME/.cargo/bin:$PATH"'
|
||||
if [[ -x "$HOME/homebrew/bin/brew" ]]; then
|
||||
echo 'eval "$("$HOME/homebrew/bin/brew" shellenv)"'
|
||||
elif [[ -x /opt/homebrew/bin/brew ]]; then
|
||||
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"'
|
||||
fi
|
||||
echo 'export PATH="/opt/homebrew/opt/llvm/bin:$HOME/homebrew/opt/llvm/bin:$PATH"'
|
||||
} >> "$profile"
|
||||
}
|
||||
|
||||
ensure_homebrew
|
||||
setup_shell_profile
|
||||
|
||||
if [[ "$MAC_ONLY" -eq 1 ]]; then
|
||||
log "macOS 전용 모드 — NSIS/LLVM/cargo-xwin 생략"
|
||||
else
|
||||
log "Homebrew 패키지 (NSIS, LLVM)..."
|
||||
brew install nsis llvm 2>/dev/null || brew upgrade nsis llvm 2>/dev/null || true
|
||||
fi
|
||||
|
||||
ensure_rust
|
||||
# shellcheck disable=SC1091
|
||||
[[ -f "$HOME/.cargo/env" ]] && source "$HOME/.cargo/env"
|
||||
|
||||
if [[ "$MAC_ONLY" -eq 0 ]]; then
|
||||
log "Windows 크로스 컴파일 타겟..."
|
||||
rustup target add x86_64-pc-windows-msvc 2>/dev/null || true
|
||||
|
||||
if ! command -v cargo-xwin >/dev/null 2>&1; then
|
||||
log "cargo-xwin 설치 (시간 소요)..."
|
||||
cargo install cargo-xwin --locked
|
||||
else
|
||||
log "cargo-xwin 이미 설치됨"
|
||||
fi
|
||||
fi
|
||||
|
||||
log "완료. 검증:"
|
||||
node --version
|
||||
npm --version
|
||||
rustc --version
|
||||
cargo --version
|
||||
command -v makensis && makensis -VERSION || log "[INFO] makensis — Windows 빌드 시 필요"
|
||||
command -v cargo-xwin && cargo-xwin --version || log "[INFO] cargo-xwin — Windows 빌드 시 필요"
|
||||
log "새 터미널을 열거나: source ~/.zprofile"
|
||||
Reference in New Issue
Block a user