🔧 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:
2025-11-25 06:51:52 +09:00
parent bd028d09e6
commit 8f1e0459fc
22 changed files with 618 additions and 64 deletions

157
bin/setup-backup.sh Executable file
View 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 "Готово!"