Files
dcr/install.sh

132 lines
3.0 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
set -Eeuo pipefail
TMPDIR="/tmp/dcr-temp"
INSTALL_PATH="$HOME/.local/share/dcr"
PYTHON_DIR="$INSTALL_PATH/Python"
BINPATH="$HOME/.local/bin"
LOGFILE="$PWD/dcr-install.log"
PYTHON_DOWNLOAD_URL="https://github.com/astral-sh/python-build-standalone/releases/download/20260203/cpython-3.10.19+20260203-x86_64-unknown-linux-gnu-install_only.tar.gz"
GITHUB_API="https://api.github.com/repos/dexoron/dcr/releases/latest"
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
exec > >(tee -a "$LOGFILE") 2>&1
log() {
echo -e "${BLUE}[$(date '+%Y-%m-%d %H:%M:%S')]${NC} $1"
}
success() {
echo -e "${GREEN}✔ $1${NC}"
}
warn() {
echo -e "${YELLOW}⚠ $1${NC}"
}
error() {
echo -e "${RED}✖ $1${NC}"
}
trap 'error "Ошибка на строке $LINENO"; exit 1' ERR
check_dependencies() {
log "Проверка зависимостей..."
command -v curl >/dev/null 2>&1 || {
error "curl не установлен"
exit 1
}
command -v tar >/dev/null 2>&1 || {
error "tar не установлен"
exit 1
}
success "Зависимости в порядке"
}
install_python() {
log "Установка встроенного Python..."
mkdir -p "$PYTHON_DIR"
curl -L "$PYTHON_DOWNLOAD_URL" -o "$TMPDIR/python.tar.gz"
tar -xf "$TMPDIR/python.tar.gz" -C "$PYTHON_DIR" --strip-components=1
rm -f "$TMPDIR/python.tar.gz"
cat > "$INSTALL_PATH/dcr" <<'EOF'
#!/usr/bin/env bash
BASE_DIR="$(dirname "$(readlink -f "$0")")"
SRC_DIR="$BASE_DIR/src"
PYTHON_BIN="$BASE_DIR/Python/bin/python3"
PYTHONPATH="$SRC_DIR" exec "$PYTHON_BIN" -m dcr.main "$@"
EOF
chmod +x "$INSTALL_PATH/dcr"
success "Python установлен"
}
install_app() {
log "Получение последнего релиза..."
TAG=$(curl -s "$GITHUB_API" | grep '"tag_name":' | cut -d'"' -f4)
if [[ -z "$TAG" ]]; then
error "Не удалось определить версию релиза"
exit 1
fi
log "Найдена версия: $TAG"
curl -L -o "$TMPDIR/sources.tar.gz" \
"https://github.com/dexoron/dcr/archive/refs/tags/$TAG.tar.gz"
mkdir -p "$INSTALL_PATH"
tar -xf "$TMPDIR/sources.tar.gz" -C "$INSTALL_PATH" --strip-components=1
rm -f "$TMPDIR/sources.tar.gz"
success "Приложение установлено"
}
install_link() {
log "Создание симлинка..."
mkdir -p "$BINPATH"
ln -sf "$INSTALL_PATH/dcr" "$BINPATH/dcr"
success "Команда 'dcr' добавлена в $BINPATH"
}
main() {
log "Запуск установки DCR"
check_dependencies
mkdir -p "$TMPDIR"
rm -rf "$TMPDIR"/*
install_app
log "проверка наличия Python"
command -v curl >/dev/null 2>&1 || {
error "Python не установлен"
install_python
}
install_link
rm -rf "$TMPDIR"
success "Установка завершена успешно"
log "Лог сохранён в $LOGFILE"
}
main "$@"