2023-12-17 07:56:19 +03:00
|
|
|
#!/bin/bash
|
|
|
|
echo "Сборка сайта в двух помидорных темах и оптимизация результатов."
|
2024-07-31 21:11:20 +03:00
|
|
|
time_ms="$(date '+%s%3N')"
|
2024-12-29 10:39:47 +03:00
|
|
|
# удаление каталогов предыдущей сборки, если таковые имеются
|
|
|
|
find . -maxdepth 1 -type d -name "_site*" -exec rm -rf {} \;
|
2024-09-01 08:46:26 +03:00
|
|
|
# сборка сайта в двух помидорных темах
|
2024-07-31 21:11:20 +03:00
|
|
|
function jekyll_build {
|
|
|
|
case "$1" in
|
2024-09-01 08:46:26 +03:00
|
|
|
"older") echo "Сборка старого помидора." ;;
|
|
|
|
"color") echo "Сборка цветного помидора." ;;
|
|
|
|
*) return ;; # две помидорные темы оформления
|
2024-07-31 21:11:20 +03:00
|
|
|
esac
|
|
|
|
mkdir -p "_site_$1"
|
|
|
|
cp -r "jekyll_site/ru" "_site_$1"
|
|
|
|
cp -r "jekyll_site/en" "_site_$1"
|
|
|
|
cp -r "jekyll_site/ru/index.md" "_site_$1"
|
|
|
|
cp -r "jekyll_site/_config_$1.yml" "_site_$1/_config.yml"
|
|
|
|
cp -r "jekyll_site/Gemfile_$1" "_site_$1/Gemfile"
|
|
|
|
cd "_site_$1" || return
|
|
|
|
jekyll build --disable-disk-cache --quiet
|
|
|
|
}
|
|
|
|
export -f jekyll_build
|
2024-12-29 10:39:47 +03:00
|
|
|
# запуск параллельной сборки сайта в двух помидорных темах оформления
|
|
|
|
printf 'jekyll_build "%s"\0' {older,color} | xargs -n1 -0 -P0 bash -c
|
2024-09-01 08:46:26 +03:00
|
|
|
# объединение двух сборок
|
2024-07-31 21:11:20 +03:00
|
|
|
cp -r _site_older/_site .
|
|
|
|
cp -r _site_color/_site ./_site/color
|
2024-09-01 08:46:26 +03:00
|
|
|
# копирование без сборки
|
2023-12-17 07:56:19 +03:00
|
|
|
cp -r jekyll_site/img _site
|
|
|
|
cp -r jekyll_site/robots.txt _site
|
2024-09-01 08:46:26 +03:00
|
|
|
# оптимизация собранного контента
|
2023-12-17 07:56:19 +03:00
|
|
|
cd _site || exit
|
|
|
|
cp -r assets/* .
|
|
|
|
rm -r assets
|
|
|
|
rm -r color/assets/favicon.ico
|
|
|
|
cp -r color/assets/* .
|
|
|
|
rm -r color/assets
|
|
|
|
rm -r color/404.html
|
2024-03-31 02:14:43 +03:00
|
|
|
rm -r color/return.html
|
2024-12-29 10:39:47 +03:00
|
|
|
# шаблоны для оптимизации ряда тегов
|
|
|
|
expr+=('s|layout-padding=""|layout-padding|g')
|
|
|
|
expr+=('s| class="language-plaintext highlighter-rouge"||g')
|
|
|
|
expr+=('s| class="language-java highlighter-rouge"||g')
|
|
|
|
expr+=('s|<div><div class="highlight">|<div class="highlight">|g')
|
|
|
|
expr+=('s|</pre></div></div>|</pre></div>|g')
|
|
|
|
expr+=('s|<hr />|<hr>|g')
|
|
|
|
expr+=('s|<img(.+) />|<img\1>|g')
|
|
|
|
# запуск параллельной обработки собранных страниц и оптимизация ряда тегов
|
|
|
|
find . -type f -name "*.html" -printf '%p\0' | xargs -I{} -n1 -0 -P0 bash -c \
|
|
|
|
"echo 'Оптимизация: {}' && sed -i -E $(printf " -e '%s'" "${expr[@]}") '{}'"
|
|
|
|
# переход в корень сайта для каталогов без заглавной страницы
|
|
|
|
find . -type d -exec cp -n return.html {}/index.html \;
|
2024-03-31 02:14:43 +03:00
|
|
|
rm -r return.html
|
2024-12-29 10:39:47 +03:00
|
|
|
echo "Общее время выполнения: $(($(date '+%s%3N') - time_ms)) мс."
|