110 lines
3.8 KiB
Bash
110 lines
3.8 KiB
Bash
|
|
#!/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 "$@"
|