#!/usr/bin/env bash set -euo pipefail QIPAI_DEPLOY_VERSION="${QIPAI_DEPLOY_VERSION:-0.1.1-m00-domain-https-check}" APP_ROOT="${APP_ROOT:-/opt/apps}" QIPAI_REPO_URL="${QIPAI_REPO_URL:-ssh://git@127.0.0.1:2222/panda/qipai.git}" QIPAI_PUBLIC_REPO_URL="${QIPAI_PUBLIC_REPO_URL:-ssh://git@git.txyundm.cn:2222/panda/qipai.git}" QIPAI_BRANCH="${QIPAI_BRANCH:-main}" QIPAI_DOMAIN="${QIPAI_DOMAIN:-api.txyundm.cn}" QIPAI_API_ORIGIN="https://${QIPAI_DOMAIN}" qipai_timestamp() { date "+%Y-%m-%d %H:%M:%S" } qipai_status() { local level="$1" shift printf '%s: %s\n' "$level" "$*" } qipai_info() { qipai_status "INFO" "$@" } qipai_pass() { qipai_status "PASS" "$@" } qipai_warn() { qipai_status "WARN" "$@" } qipai_fail() { qipai_status "FAIL" "$@" } qipai_require_root_for_write() { if [ "$(id -u)" -ne 0 ]; then qipai_fail "This option writes under ${APP_ROOT}; run with sudo on Ubuntu." return 1 fi } qipai_check_arch() { local kernel_arch dpkg_arch bits kernel_arch="$(uname -m 2>/dev/null || echo unknown)" dpkg_arch="$(dpkg --print-architecture 2>/dev/null || echo unknown)" bits="$(getconf LONG_BIT 2>/dev/null || echo unknown)" [ "$kernel_arch" = "x86_64" ] && qipai_pass "kernel architecture: ${kernel_arch}" || { qipai_fail "kernel architecture must be x86_64, actual: ${kernel_arch}" return 1 } [ "$dpkg_arch" = "amd64" ] && qipai_pass "dpkg architecture: ${dpkg_arch}" || { qipai_fail "dpkg architecture must be amd64, actual: ${dpkg_arch}" return 1 } [ "$bits" = "64" ] && qipai_pass "userspace bits: ${bits}" || { qipai_fail "userspace must be 64-bit, actual: ${bits}" return 1 } } qipai_command_status() { local command_name="$1" if command -v "$command_name" >/dev/null 2>&1; then qipai_pass "${command_name}: $(command -v "$command_name")" else qipai_warn "${command_name}: not installed" fi } qipai_repo_dir() { printf '%s/qipai-repo\n' "$APP_ROOT" } qipai_release_dir() { printf '%s/releases\n' "$APP_ROOT" } qipai_current_release_file() { printf '%s/current-release.json\n' "$APP_ROOT" } qipai_print_context() { qipai_info "deploy version: ${QIPAI_DEPLOY_VERSION}" qipai_info "app root: ${APP_ROOT}" qipai_info "repo: ${QIPAI_REPO_URL}" qipai_info "branch: ${QIPAI_BRANCH}" qipai_info "api origin: ${QIPAI_API_ORIGIN}" }