diff --git a/build.sh b/build.sh index 472f81d..0947536 100755 --- a/build.sh +++ b/build.sh @@ -20,16 +20,44 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. - -write_section_header(){ - echo "

" >> $3 - echo "$2" | tr a-z A-Z >> $3 - echo "

" >> $3 +write_section_header() { + echo "

" >>$3 + echo "$2" | tr a-z A-Z >>$3 + echo "

" >>$3 } -write_img(){ - echo " -$1" >> $2 +MINIFIED_IMAGES_DIR='.minified' +IMAGE_PREVIEW_WIDTH=200 + +# Returns path to minified img or default img if no tools for minification +minify_image() { + local image=$1 + + if ! [ "$(command -v magick)" ]; then + echo "${image}" + return + fi + + local preview_image + preview_image="${MINIFIED_IMAGES_DIR}/${image}.min.png" + + mkdir -p "$(dirname "${preview_image}")" + + magick convert "${image}" -resize "${IMAGE_PREVIEW_WIDTH}" -format png -write "${preview_image}" + echo "${preview_image}" +} + +write_img() { + local image=$1 + local output=$2 + + local preview_image + preview_image=$(minify_image "${image}") + + echo " + + Preview of ${image} image + " >>"${output}" } rm *.html @@ -63,71 +91,67 @@ echo "
-

Gruvbox Wallpapers

" > ./index.html +

Gruvbox Wallpapers

" >./index.html color=1 -maxPerPage=8 +maxPerPage=8 declare -a sections -for subdir in ./wallpapers/* -do - section="${subdir##*/}" - sections+=("$section") - write_section_header $color "$section" ./index.html +for subdir in ./wallpapers/*; do + section="${subdir##*/}" + sections+=("$section") + write_section_header $color "$section" ./index.html + page=1 + img_count=0 + subhtml="${section}_page${page}.html" + touch ./$subhtml - page=1 - img_count=0 - subhtml="${section}_page${page}.html" - touch ./$subhtml + echo "
" >>./index.html - echo "
" >> ./index.html + echo "
" >>./index.html + countImgs=$(find "$subdir" -type f | wc -l) + countImgs=$((countImgs - 1)) + for i in $(seq 1 $(((countImgs / maxPerPage) + 1))); do + echo "" >>./index.html + done + echo "
" >>./index.html + echo "
" >>./index.html + echo "
" >>./$subhtml + for wallpaper in ${subdir}/*; do + if [ "$img_count" -ge $maxPerPage ]; then - echo "
" >> ./index.html - countImgs=$(find "$subdir" -type f | wc -l) - countImgs=$((countImgs - 1)) - for i in $(seq 1 $((( $countImgs / $maxPerPage)+1))); do - echo "" >> ./index.html - done - echo "
" >> ./index.html - echo "
" >> ./index.html - echo "
" >> ./$subhtml - for wallpaper in ${subdir}/* - do - if [ "$img_count" -ge $maxPerPage ]; then + echo "
" >>./$subhtml + page=$((page + 1)) + subhtml="${section}_page${page}.html" + touch ./$subhtml - echo "
" >> ./$subhtml - page=$((page + 1)) - subhtml="${section}_page${page}.html" - touch ./$subhtml + echo "
" >>./$subhtml + img_count=0 + fi + write_img $wallpaper ./$subhtml + img_count=$((img_count + 1)) + done - echo "
" >> ./$subhtml - img_count=0 - fi + echo "
" >>./$subhtml - write_img $wallpaper ./$subhtml - img_count=$((img_count + 1)) - done + echo "
" >>./index.html + echo "
" >>./index.html - echo "
" >> ./$subhtml - - echo "
" >> ./index.html - echo "
" >> ./index.html - - color=$((color + 1)) - if [ "$color" -eq 8 ]; then - color=1 - fi + color=$((color + 1)) + if [ "$color" -eq 8 ]; then + color=1 + fi done -echo "
" >> ./index.html +echo "" >>./index.html echo "" >> ./index.html - +" >>./index.html echo " -" >> ./index.html +" >>./index.html