#!/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 "$@"