Files
qipai/scripts/setup/lib.sh
T

93 lines
2.3 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
QIPAI_DEPLOY_VERSION="${QIPAI_DEPLOY_VERSION:-0.1.4-m00-backup-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}"
}