init: docker-migrate universal migration tool
This commit is contained in:
+86
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/env bash
|
||||
# install.sh — Docker Migrate Tool Installer
|
||||
# Запуск: wget -qO- https://your-gitea/raw/main/install.sh | bash
|
||||
# curl -fsSL https://your-gitea/raw/main/install.sh | bash
|
||||
|
||||
set -e
|
||||
|
||||
REPO_URL="https://giteas.stitch505.su/Stitch505/docker-migrate"
|
||||
BRANCH="main"
|
||||
INSTALL_DIR="/opt/docker-migrate"
|
||||
|
||||
log() { echo "[migrate-install] $*"; }
|
||||
|
||||
# Проверка Python3
|
||||
if ! command -v python3 &>/dev/null; then
|
||||
log "Python3 не найден. Пытаемся установить ..."
|
||||
if command -v apt-get &>/dev/null; then
|
||||
apt-get update -qq
|
||||
apt-get install -y -qq python3 python3-pip
|
||||
elif command -v yum &>/dev/null; then
|
||||
yum install -y python3
|
||||
else
|
||||
echo "[FATAL] Не удалось найти/install Python3. Установите вручную."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Проверка версии Python
|
||||
pyver=$(python3 -c 'import sys; print(".".join(map(str,sys.version_info[:2])))')
|
||||
log "Python3 версия: $pyver"
|
||||
|
||||
# Проверка wget/curl/git
|
||||
if command -v git &>/dev/null; then
|
||||
METHOD=git
|
||||
elif command -v curl &>/dev/null; then
|
||||
METHOD=curl
|
||||
elif command -v wget &>/dev/null; then
|
||||
METHOD=wget
|
||||
else
|
||||
echo "[FATAL] Нужен git, curl или wget"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Установка
|
||||
if [ -d "$INSTALL_DIR" ]; then
|
||||
log "Директория $INSTALL_DIR уже существует. Удаляем ..."
|
||||
rm -rf "$INSTALL_DIR"
|
||||
fi
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
|
||||
case "$METHOD" in
|
||||
git)
|
||||
log "Клонируем через git ..."
|
||||
git clone --depth=1 --branch "$BRANCH" "$REPO_URL" "$INSTALL_DIR"
|
||||
;;
|
||||
curl)
|
||||
log "Скачиваем через curl ..."
|
||||
tmpzip=$(mktemp /tmp/migrate-XXXXX.zip)
|
||||
curl -fsSL "${REPO_URL}/archive/refs/heads/${BRANCH}.zip" -o "$tmpzip" || {
|
||||
# Fallback для gitea raw zip
|
||||
curl -fsSL "${REPO_URL}/archive/${BRANCH}.zip" -o "$tmpzip"
|
||||
}
|
||||
python3 -c "import zipfile; zipfile.ZipFile('$tmpzip').extractall('/tmp')"
|
||||
mv /tmp/docker-migrate-*/* "$INSTALL_DIR/"
|
||||
rm -f "$tmpzip"
|
||||
;;
|
||||
wget)
|
||||
log "Скачиваем через wget ..."
|
||||
tmpzip=$(mktemp /tmp/migrate-XXXXX.zip)
|
||||
wget -q "${REPO_URL}/archive/refs/heads/${BRANCH}.zip" -O "$tmpzip" || {
|
||||
wget -q "${REPO_URL}/archive/${BRANCH}.zip" -O "$tmpzip"
|
||||
}
|
||||
python3 -c "import zipfile; zipfile.ZipFile('$tmpzip').extractall('/tmp')"
|
||||
mv /tmp/docker-migrate-*/* "$INSTALL_DIR/"
|
||||
rm -f "$tmpzip"
|
||||
;;
|
||||
esac
|
||||
|
||||
log "Установлено в $INSTALL_DIR"
|
||||
|
||||
# Создаём symlink в /usr/local/bin
|
||||
ln -sf "$INSTALL_DIR/migrate" /usr/local/bin/docker-migrate 2>/dev/null || true
|
||||
|
||||
log "Запускаем docker-migrate ..."
|
||||
cd "$INSTALL_DIR"
|
||||
exec python3 migrate "$@"
|
||||
Reference in New Issue
Block a user