folders list
parent
4599759d6a
commit
1a6886620d
|
@ -0,0 +1,4 @@
|
||||||
|
main.go
|
||||||
|
folder2
|
||||||
|
folder1
|
||||||
|
empty
|
58
eye.sh
58
eye.sh
|
@ -1,18 +1,18 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# НАСТРОЙКА СКРИПТА ТУТ ###########################################################
|
# НАСТРОЙКА СКРИПТА ТУТ ###########################################################
|
||||||
DURATION=5 # Задержка между проверками в секундах
|
DURATION=1 # Задержка между проверками в секундах
|
||||||
WATCH_DIR=posts/ # Директория для наблюдения
|
WATCH_DIRS=("folder1" "folder2" "empty") # Массив директорий для наблюдения
|
||||||
BINARY_PATH="./hikan.ru" # Путь до бинарного файла
|
BINARY_PATH="./main" # Путь до бинарного файла
|
||||||
BUILD_CMD="go build -o $BINARY_PATH main.go" # Команда для сборки
|
BUILD_CMD="go build -o $BINARY_PATH main.go" # Команда для сборки
|
||||||
###################################################################################
|
###################################################################################
|
||||||
|
|
||||||
# Нужное для работы скрипта (не менять)
|
# Нужное для работы скрипта (не менять)
|
||||||
stty -echoctl # Отключает вывод управляющих символов (включая ^C).
|
stty -echoctl # Отключает вывод управляющих символов (включая ^C).
|
||||||
LAST_MOD=0 # Для хранения времени последней модификации
|
declare -A LAST_MODS # Ассоциативный массив для хранения времени последней модификации
|
||||||
LAST_COUNT=0 # Для хранения количества файлов
|
declare -A LAST_COUNTS # Ассоциативный массив для хранения количества файлов
|
||||||
CLEANUP_DONE=0 # Была ли уже вызвана cleanup
|
CLEANUP_DONE=0 # Была ли уже вызвана cleanup
|
||||||
PID="" # Для хранения PID запущенного процесса
|
PID="" # Для хранения PID запущенного процесса
|
||||||
#
|
#
|
||||||
|
|
||||||
# Для вывода в синем цвете
|
# Для вывода в синем цвете
|
||||||
|
@ -43,22 +43,41 @@ kill_previous() {
|
||||||
}
|
}
|
||||||
#
|
#
|
||||||
|
|
||||||
# Функция для подсчета файлов в директории
|
# Функция для проверки изменений
|
||||||
count_files() {
|
check_changes() {
|
||||||
find "$WATCH_DIR" -type f | wc -l
|
local changed=0
|
||||||
|
|
||||||
|
for dir in "${WATCH_DIRS[@]}"; do
|
||||||
|
# Получаем текущее время модификации и количество файлов
|
||||||
|
local current_mod=$(find "$dir" -type f -exec stat -c %Y {} \; | sort -nr | head -1)
|
||||||
|
local current_count=$(find "$dir" -type f 2>/dev/null | wc -l)
|
||||||
|
|
||||||
|
# Проверяем изменения
|
||||||
|
if { [ -n "$current_mod" ] && [ "$current_mod" -gt "${LAST_MODS[$dir]}" ]; } || [ "$current_count" -ne "${LAST_COUNTS[$dir]}" ]; then
|
||||||
|
changed=1
|
||||||
|
LAST_MODS["$dir"]=$current_mod
|
||||||
|
LAST_COUNTS["$dir"]=$current_count
|
||||||
|
[ -n "$PID" ] && blue "EYE | changes detected in \033[35m$dir\033[0m"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
return $changed
|
||||||
}
|
}
|
||||||
#
|
#
|
||||||
|
|
||||||
LAST_COUNT=$(count_files)
|
# Инициализация массивов
|
||||||
[ $LAST_COUNT = 0 ] && blue "EYE | empty dir"
|
for dir in "${WATCH_DIRS[@]}"; do # @ - обозначает "все элементы массива"
|
||||||
|
LAST_MODS["$dir"]=0
|
||||||
|
LAST_COUNTS["$dir"]=$(find "$dir" -type f 2>/dev/null | wc -l)
|
||||||
|
blue "EYE | started watching the directory \033[35m$dir\033[0m"
|
||||||
|
done
|
||||||
|
#
|
||||||
|
|
||||||
|
# Основной цикл работы скрипта
|
||||||
while true; do
|
while true; do
|
||||||
CURRENT_MOD=$(find "$WATCH_DIR" -type f -exec stat -c %Y {} \; | sort -nr | head -1) # Время последнего изменения в папке WATCH_DIR
|
check_changes
|
||||||
CURRENT_COUNT=$(count_files)
|
if [ $? -eq 1 ]; then
|
||||||
if { [ -n "$CURRENT_MOD" ] && [ "$CURRENT_MOD" -gt "$LAST_MOD" ]; } || [ "$CURRENT_COUNT" -ne "$LAST_COUNT" ]; then
|
blue "EYE | rebuilding..."
|
||||||
LAST_MOD=$CURRENT_MOD
|
|
||||||
LAST_COUNT=$CURRENT_COUNT
|
|
||||||
blue "EYE | changes detected. rebuilding..."
|
|
||||||
$BUILD_CMD 2>/dev/null # Сборка
|
$BUILD_CMD 2>/dev/null # Сборка
|
||||||
if [ $? -eq 0 ]; then # $? - код возврата
|
if [ $? -eq 0 ]; then # $? - код возврата
|
||||||
blue "EYE | build successful. restarting..."
|
blue "EYE | build successful. restarting..."
|
||||||
|
@ -73,3 +92,4 @@ while true; do
|
||||||
|
|
||||||
sleep $DURATION
|
sleep $DURATION
|
||||||
done
|
done
|
||||||
|
#
|
Loading…
Reference in New Issue