diff --git a/.gitignore b/.gitignore index a35805a..a9a7e52 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ config.json -restart.sh \ No newline at end of file +restart.sh +eye.sh +hikan.ru \ No newline at end of file diff --git a/assets/css/styles.css b/assets/css/styles.css index 974a833..f0a77e6 100644 --- a/assets/css/styles.css +++ b/assets/css/styles.css @@ -26,11 +26,11 @@ main { header > div, footer > div, main > div { + text-align: left; box-shadow: 5px 5px 0 0 lightgrey; box-sizing: border-box; border: 1px solid; width: 100%; - text-align: center; color: black; padding-left: 10px; padding-right: 10px; @@ -45,18 +45,12 @@ main > div > ul { header > div > h1, footer > div > h1, main > div > h1 { + text-align: center; box-sizing: border-box; border-top: 1px solid; border-bottom: 1px solid; } -.post { - text-align: left; -} -.post h1 { - text-align: center; -} - @media (max-width: 1200px) { header, footer, main { flex: 1 100%; diff --git a/eye.sh b/eye.sh new file mode 100755 index 0000000..e66947e --- /dev/null +++ b/eye.sh @@ -0,0 +1,98 @@ +#!/bin/bash +stty -echoctl # Отключает вывод управляющих символов по типу ^C + +# НАСТРОЙКА СКРИПТА ТУТ ########################################################### +DURATION=1 # Задержка между проверками в секундах +WATCH_DIRS=("posts" "mvc" "assets") # Массив директорий для наблюдения +BINARY_PATH="./main" # Путь до бинарного файла +BUILD_CMD="go build -o $BINARY_PATH main.go" # Команда для сборки +################################################################################### + +# Массивы для хранения информации о директориях +declare -A LAST_MODS +declare -A LAST_COUNTS +CLEANUP_DONE=0 +# + +# Вывод в синем цвете +blue() { + echo -e "\033[34m$1\033[0m" +} + +# Очистка при завершении работы скрипта +cleanup() { + [ $CLEANUP_DONE -eq 1 ] && exit 0 + blue "EYE | cleanup..." + kill_proc $1 + rm -f $BINARY_PATH + blue "EYE | see you later!" + CLEANUP_DONE=1 + exit 0 +} + +# Убийство процесса по его pid +kill_proc() { + local pid=$1 + if [ -n "$pid" ] && kill -0 $pid 2>/dev/null; then + kill $pid + blue "EYE | process killed (PID: $pid)" + fi +} + +# Проверка изменений в директориях +check_changes() { + 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 "$1" ] && blue "EYE | changes detected in \033[94m$dir\033[0m" + fi + done + + return $changed +} + +# Основная функция +main() { + local pid="" + + # Ловушка для сигналов завершения + trap 'cleanup $pid' SIGINT SIGTERM SIGHUP SIGQUIT EXIT + # + + # Инициализация массивов + 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[94m$dir\033[0m" + done + # + + # Основной цикл работы скрипта + while true; do + check_changes $pid + if [ $? -eq 1 ]; then + blue "EYE | rebuilding..." + eval $BUILD_CMD 2>/dev/null + if [ $? -eq 0 ]; then + blue "EYE | build successful. restarting..." + kill_proc $pid + $BINARY_PATH & + pid=$! + blue "EYE | started new process (PID: $pid)" + else + blue "EYE | build failed" + fi + fi + + sleep $DURATION + done +} + +main \ No newline at end of file diff --git a/mvc/views/blocks/footer.gohtml b/mvc/views/blocks/footer.gohtml index 922c7ce..151d426 100644 --- a/mvc/views/blocks/footer.gohtml +++ b/mvc/views/blocks/footer.gohtml @@ -13,7 +13,7 @@

- _some system information_ + some system information: