-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstart.sh
More file actions
executable file
·114 lines (89 loc) · 4.53 KB
/
start.sh
File metadata and controls
executable file
·114 lines (89 loc) · 4.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/bin/zsh
# Подсключаем utils.sh
source ./bashScript/utils.sh
# 1. Очищаем консоль
clear
# 2. Выводим текст с выделением жирным шрифтом
bold_text "⏳ Проверка наличия обновлений FarmJam"
echo
# 3. Определяем файл настроек
settings_file="settings.conf"
# 4. Проверяем существование файла настроек
if [[ ! -f $settings_file ]]; then
echo "❌ Ошибка: Файл $settings_file не найден"
exit 1
fi
# 5. Читаем параметры из файла настроек
actual_path=$(grep '^actualPath:' $settings_file | cut -d':' -f2)
auto_update=$(grep '^autoUpdate:' $settings_file | cut -d':' -f2)
last_update_check=$(grep '^lastUpdateCheck:' $settings_file | cut -d':' -f2)
actual_tag_version=$(grep '^actualTagVersion:' $settings_file | cut -d':' -f2)
# 6. Проверяем наличие необходимых данных в файле настроек
if [[ -z $last_update_check || -z $actual_tag_version ]]; then
echo "❌ Ошибка: Не удалось получить данные из $settings_file"
exit 1
fi
# Проверка значения auto_update
if [[ "$auto_update" == "false" ]]; then
# Если auto_update = false, сразу запускаем главное меню и выходим
./bashScript/menu.sh "$settings_file" "$actual_tag_version"
exit 0
fi
# 7. Преобразуем значение lastUpdateCheck в секунды
last_update_check_sec=$(date -j -f "%s" "$last_update_check" "+%s")
# 8. Получаем текущее время в секундах
current_time_sec=$(date "+%s")
# 9. Вычисляем разницу во времени в часах
time_diff=$(((current_time_sec - last_update_check_sec) / 3600))
# Если auto_update = true и прошло менее 168 часов с последней проверки, запускаем меню
if [[ "$auto_update" == "true" && $time_diff -lt 168 ]]; then
./bashScript/menu.sh "$settings_file" "$actual_tag_version"
exit 0
fi
# 11. Получаем тег последнего релиза из GitHub
repo="simitka/Farm-Helper"
latest_tag=$(curl -s "https://api.github.com/repos/$repo/releases/latest" | jq -r .tag_name)
# 12. Проверяем, удалось ли получить последний тег релиза
if [[ -z $latest_tag ]]; then
echo "❌ Ошибка: Не удалось получить последний тег релиза"
exit 1
fi
# Проверка необходимости обновления
if [[ "$auto_update" == "force" || "$latest_tag" != "$actual_tag_version" ]]; then
# 14. Скачиваем архив с новым релизом
echo "⏳ Найдено обновление. Текущая версия = $actual_tag_version, новая версия = $latest_tag"
echo "⏳ Обновление..."
echo
archive_url="https://api.github.com/repos/$repo/zipball/$latest_tag"
archive_name="release-$latest_tag.zip"
curl -L $archive_url -o $archive_name
# 15. Проверка наличия файлов $settings_file и $archive_name в папке farmx
cd $actual_path
if [[ ! -f "$settings_file" ]]; then
echo "❌ Ошибка: файл '$settings_file' не найден"
exit 1
fi
if [[ ! -f "$archive_name" ]]; then
echo "❌ Ошибка: файл '$archive_name' не найден"
exit 1
fi
# Удаление всех файлов и папок, кроме указанных
for item in *; do
if [[ "$item" != "$settings_file" && "$item" != "$archive_name" && "$item" != "farmBuilds" ]]; then
rm -rf "$item" # Удаляет файлы и папки рекурсивно
fi
done
# 17. Распаковываем архив в временную директорию
unzip -o $archive_name -d temp_dir
# 18. Перемещаем файлы из временной директории в текущую папку
mv temp_dir/*/* . && mv temp_dir/*/.[!.]* .
# 19. Удаляем временные файлы и папки
rm -r temp_dir
rm $archive_name
# 20. Обновляем файл настроек с новым тегом и меткой времени
sed -i '' "s/^lastUpdateCheck:.*/lastUpdateCheck:$(date +%s)/" $settings_file
sed -i '' "s/^actualTagVersion:.*/actualTagVersion:$latest_tag/" $settings_file
actual_tag_version=$latest_tag
fi
# 21. Запускаем главное меню
./bashScript/menu.sh "$settings_file" "$actual_tag_version"