🔧 Restructure scripts and add CLI tool
✨ New features: - Add CLI tool for container command execution - Reorganize all scripts into bin/ directory - Create convenient wrappers in project root - Add local changes auto-commit functionality - Enhanced backup repository management 📁 Structure changes: - Move all scripts to bin/ directory - Create wrapper scripts in root (cli, update, start, stop, logs) - Add setup-backup.sh for backup repository management - Update documentation with new CLI examples 🛠️ CLI capabilities: - Django commands (shell, migrate, collectstatic, etc.) - System commands (bash, logs, status) - Container management (restart, status) - Interactive and non-interactive modes 📚 Documentation: - Updated SCRIPTS_README.md with CLI examples - Added troubleshooting section - Comprehensive usage examples
This commit is contained in:
157
bin/setup-backup.sh
Executable file
157
bin/setup-backup.sh
Executable file
@@ -0,0 +1,157 @@
|
||||
#!/bin/bash
|
||||
|
||||
# =============================================================================
|
||||
# SmartSolTech - Настройка резервного репозитория
|
||||
# =============================================================================
|
||||
|
||||
set -e
|
||||
|
||||
# Цвета для вывода
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
log() {
|
||||
echo -e "${BLUE}[$(date '+%Y-%m-%d %H:%M:%S')]${NC} $1"
|
||||
}
|
||||
|
||||
success() {
|
||||
echo -e "${GREEN}✅ $1${NC}"
|
||||
}
|
||||
|
||||
warning() {
|
||||
echo -e "${YELLOW}⚠️ $1${NC}"
|
||||
}
|
||||
|
||||
error() {
|
||||
echo -e "${RED}❌ $1${NC}"
|
||||
}
|
||||
|
||||
echo ""
|
||||
echo "🔧 SmartSolTech - Настройка backup репозитория"
|
||||
echo "=============================================="
|
||||
echo ""
|
||||
|
||||
# Проверка что мы в Git репозитории
|
||||
if [ ! -d ".git" ]; then
|
||||
error "Не найден Git репозиторий. Запустите скрипт из корня проекта."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Показать текущие репозитории
|
||||
log "Текущие удаленные репозитории:"
|
||||
git remote -v
|
||||
echo ""
|
||||
|
||||
# Функция добавления нового backup репозитория
|
||||
add_backup_repo() {
|
||||
local repo_url="$1"
|
||||
local repo_name="${2:-backup}"
|
||||
|
||||
log "Добавление backup репозитория..."
|
||||
|
||||
# Проверяем не существует ли уже такой remote
|
||||
if git remote | grep -q "^${repo_name}$"; then
|
||||
warning "Репозиторий $repo_name уже существует"
|
||||
git remote -v | grep "^${repo_name}"
|
||||
read -p "Заменить? (y/N): " replace_choice
|
||||
if [[ $replace_choice =~ ^[Yy]$ ]]; then
|
||||
git remote remove $repo_name
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Добавляем новый remote
|
||||
if git remote add $repo_name "$repo_url"; then
|
||||
success "Backup репозиторий $repo_name добавлен"
|
||||
|
||||
# Проверяем подключение
|
||||
log "Проверка подключения..."
|
||||
if git ls-remote $repo_name > /dev/null 2>&1; then
|
||||
success "Подключение к $repo_name работает"
|
||||
|
||||
# Предлагаем сделать первый push
|
||||
read -p "Отправить текущее состояние в backup? (y/N): " push_choice
|
||||
if [[ $push_choice =~ ^[Yy]$ ]]; then
|
||||
git push $repo_name master
|
||||
success "Backup создан в $repo_name"
|
||||
fi
|
||||
else
|
||||
error "Не удалось подключиться к $repo_name"
|
||||
git remote remove $repo_name
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
error "Не удалось добавить backup репозиторий"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Обработка параметров
|
||||
case "${1:-}" in
|
||||
--help|-h)
|
||||
echo "Использование:"
|
||||
echo " $0 # Интерактивная настройка"
|
||||
echo " $0 <URL> # Добавить backup репозиторий"
|
||||
echo " $0 <URL> <name> # Добавить с именем"
|
||||
echo " $0 --remove <name> # Удалить backup репозиторий"
|
||||
echo " $0 --list # Показать все репозитории"
|
||||
echo ""
|
||||
echo "Примеры:"
|
||||
echo " $0 git@github.com:user/backup.git"
|
||||
echo " $0 git@server.com:backup.git mybkp"
|
||||
echo " $0 --remove backup"
|
||||
echo ""
|
||||
exit 0
|
||||
;;
|
||||
--list)
|
||||
log "Все удаленные репозитории:"
|
||||
git remote -v
|
||||
exit 0
|
||||
;;
|
||||
--remove)
|
||||
if [ -z "$2" ]; then
|
||||
error "Укажите имя репозитория для удаления"
|
||||
exit 1
|
||||
fi
|
||||
log "Удаление репозитория $2..."
|
||||
if git remote remove "$2"; then
|
||||
success "Репозиторий $2 удален"
|
||||
else
|
||||
error "Не удалось удалить репозиторий $2"
|
||||
fi
|
||||
exit 0
|
||||
;;
|
||||
"")
|
||||
# Интерактивный режим
|
||||
echo "💡 Примеры URL репозиториев:"
|
||||
echo " git@github.com:username/repo-backup.git"
|
||||
echo " ssh://git@server.com:2222/user/backup.git"
|
||||
echo " https://github.com/username/repo-backup.git"
|
||||
echo ""
|
||||
|
||||
read -p "Введите URL backup репозитория: " repo_url
|
||||
if [ -z "$repo_url" ]; then
|
||||
warning "URL не указан, выход"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
read -p "Введите имя (backup): " repo_name
|
||||
repo_name="${repo_name:-backup}"
|
||||
|
||||
add_backup_repo "$repo_url" "$repo_name"
|
||||
;;
|
||||
*)
|
||||
# URL передан как параметр
|
||||
add_backup_repo "$1" "$2"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo ""
|
||||
log "Обновленный список репозиториев:"
|
||||
git remote -v
|
||||
echo ""
|
||||
success "Готово!"
|
||||
Reference in New Issue
Block a user