|
| 1 | +#!/bin/bash |
| 2 | +set -e |
| 3 | + |
| 4 | +RED='\033[0;31m' |
| 5 | +GREEN='\033[0;32m' |
| 6 | +BLUE='\033[0;36m' |
| 7 | +NC='\033[0m' |
| 8 | + |
| 9 | +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" |
| 10 | +REPO_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" |
| 11 | +MACOS_DIR="$SCRIPT_DIR/macos" |
| 12 | +VERSION="${GIT_CUSTOM_VERSION:-99.0.$(date +%Y%m%d%H%M).$(git -C "$REPO_DIR" rev-parse --short HEAD | python3 -c "import sys; print(int(sys.stdin.read().strip(), 16))")}" |
| 13 | +STAGING=$(mktemp -d) |
| 14 | +INSTALL_DIR="$STAGING/usr/local/kcli" |
| 15 | +BIN_DIR="$STAGING/usr/local/bin" |
| 16 | + |
| 17 | +trap "rm -rf $STAGING" EXIT |
| 18 | + |
| 19 | +echo -e "${BLUE}Building kcli macOS package...${NC}" |
| 20 | + |
| 21 | +if [ "$(uname -s)" != "Darwin" ]; then |
| 22 | + echo -e "${RED}This script must be run on macOS${NC}" |
| 23 | + exit 1 |
| 24 | +fi |
| 25 | + |
| 26 | +if ! which python3 >/dev/null 2>&1; then |
| 27 | + echo -e "${RED}python3 not found. Install Xcode Command Line Tools: xcode-select --install${NC}" |
| 28 | + exit 1 |
| 29 | +fi |
| 30 | + |
| 31 | +echo -e "${BLUE}Creating virtualenv...${NC}" |
| 32 | +python3 -m venv "$INSTALL_DIR" |
| 33 | + |
| 34 | +echo -e "${BLUE}Installing kcli...${NC}" |
| 35 | +SRC_DIR="$STAGING/src" |
| 36 | +cp -a "$REPO_DIR" "$SRC_DIR" |
| 37 | +/usr/bin/sed -i "" "s/, 'libvirt-python>=2.0.0'//" "${SRC_DIR}/setup.py" |
| 38 | +"$INSTALL_DIR/bin/pip" install --no-cache-dir "$SRC_DIR" 2>&1 | tail -1 |
| 39 | +rm -rf "$SRC_DIR" |
| 40 | + |
| 41 | +mkdir -p "$BIN_DIR" |
| 42 | +cat > "$BIN_DIR/kcli" << 'WRAPPER' |
| 43 | +#!/bin/bash |
| 44 | +exec /usr/local/kcli/bin/kcli "$@" |
| 45 | +WRAPPER |
| 46 | +chmod +x "$BIN_DIR/kcli" |
| 47 | + |
| 48 | +echo -e "${BLUE}Building .pkg...${NC}" |
| 49 | +CORE_PKG="$STAGING/kcli-core.pkg" |
| 50 | +pkgbuild --root "$STAGING" \ |
| 51 | + --identifier com.karmab.kcli \ |
| 52 | + --version "$VERSION" \ |
| 53 | + --install-location / \ |
| 54 | + "$CORE_PKG" |
| 55 | + |
| 56 | +RESOURCES="$STAGING/resources" |
| 57 | +mkdir -p "$RESOURCES" |
| 58 | +sed "s/@@VERSION@@/$VERSION/" "$MACOS_DIR/resources/welcome.html" > "$RESOURCES/welcome.html" |
| 59 | +cp "$REPO_DIR/kcli.png" "$RESOURCES/background.png" |
| 60 | + |
| 61 | +productbuild --distribution "$MACOS_DIR/Distribution" \ |
| 62 | + --resources "$RESOURCES" \ |
| 63 | + --package-path "$STAGING" \ |
| 64 | + "$REPO_DIR/kcli.pkg" |
| 65 | + |
| 66 | +echo -e "${GREEN}Built kcli.pkg${NC}" |
| 67 | +echo -e "${BLUE}Install with: open kcli.pkg${NC}" |
0 commit comments