mnemo_cards/games/apps/web_app1/restart_web.sh
2025-11-11 02:55:41 +03:00

110 lines
No EOL
3.8 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.

#!/bin/bash
# Скрипт для перезапуска web приложения с пересборкой
# Использование: ./restart_web.sh [hostname] [port]
# Цвета для вывода
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Параметры по умолчанию
HOSTNAME=${1:-"192.168.31.142"}
PORT=${2:-"8080"}
echo -e "${BLUE}🚀 Перезапуск web приложения${NC}"
echo -e "${YELLOW}Hostname: $HOSTNAME${NC}"
echo -e "${YELLOW}Port: $PORT${NC}"
echo ""
# Функция для остановки процесса на порту
stop_process_on_port() {
local port=$1
echo -e "${YELLOW}🛑 Останавливаю процесс на порту $port...${NC}"
# Находим PID процесса на порту
local pid=$(lsof -ti:$port 2>/dev/null)
if [ -n "$pid" ]; then
echo -e "${YELLOW}Найден процесс PID: $pid${NC}"
kill -9 $pid 2>/dev/null
echo -e "${GREEN}✅ Процесс остановлен${NC}"
else
echo -e "${GREEN}✅ Порт $port свободен${NC}"
fi
}
# Функция для очистки кэша Flutter
clean_flutter_cache() {
echo -e "${YELLOW}🧹 Очищаю кэш Flutter...${NC}"
flutter clean
echo -e "${GREEN}✅ Кэш очищен${NC}"
}
# Функция для получения зависимостей
get_dependencies() {
echo -e "${YELLOW}📦 Получаю зависимости...${NC}"
flutter pub get
echo -e "${GREEN}✅ Зависимости получены${NC}"
}
# Функция для пересборки
rebuild_app() {
echo -e "${YELLOW}🔨 Пересобираю приложение...${NC}"
flutter build web --release
echo -e "${GREEN}✅ Приложение пересобрано${NC}"
}
# Функция для запуска приложения
start_app() {
echo -e "${YELLOW}🚀 Запускаю приложение на http://$HOSTNAME:$PORT...${NC}"
flutter run -d web-server --web-hostname $HOSTNAME --web-port $PORT &
local app_pid=$!
echo -e "${GREEN}✅ Приложение запущено (PID: $app_pid)${NC}"
echo -e "${BLUE}🌐 Доступно по адресу: http://$HOSTNAME:$PORT${NC}"
}
# Основной процесс
main() {
echo -e "${BLUE}================================${NC}"
echo -e "${BLUE} Flutter Web App Restart Tool${NC}"
echo -e "${BLUE}================================${NC}"
echo ""
# Проверяем, что мы в правильной директории
if [ ! -f "pubspec.yaml" ]; then
echo -e "${RED}❌ Ошибка: pubspec.yaml не найден${NC}"
echo -e "${RED}Убедитесь, что вы находитесь в директории Flutter проекта${NC}"
exit 1
fi
# Останавливаем процесс на порту
stop_process_on_port $PORT
# Ждем немного для освобождения порта
sleep 2
# Очищаем кэш
# clean_flutter_cache
# Получаем зависимости
get_dependencies
# Пересобираем приложение
rebuild_app
# Запускаем приложение
start_app
echo ""
echo -e "${GREEN}🎉 Перезапуск завершен успешно!${NC}"
echo -e "${BLUE}Приложение доступно по адресу: http://$HOSTNAME:$PORT${NC}"
echo ""
echo -e "${YELLOW}Для остановки приложения используйте:${NC}"
echo -e "${YELLOW} lsof -ti:$PORT | xargs kill -9${NC}"
}
# Запускаем основной процесс
main "$@"