#!/bin/sh
#set -x
clear
########################################################################
###
##
#
# Author: Stéphane HUC
# mail: devs@stephane-huc.net
# gpg:fingerprint: CE2C CF7C AB68 0329 0D20  5F49 6135 D440 4D44 BD58
#
# License: Public Domain
#
# Git:
#
# Date: 2020/04/15
#
##
###
########################################################################

ROOT="$(dirname "$(readlink -f -- "$0")")"
minifier="$ROOT/yuicompressor-2.4.8.jar"
java="/usr/bin/java"

SH="k"
set -A exts 'css' 'js'

########################################################################
#printf '%s\n' "Write a root folder (where css/js folders exists)!:"
#read -r dir
dir="$1"

if [ -d "$dir" ]; then
    for ext in "${exts[@]}"; do

        while read -r file; do
            #echo "$(basename $file)"
            search=".min.$ext"; #echo "search: $search";
            if [[ "$(basename $file)" != *"$search"* ]]; then
                printf "file: ${file}\n";

                case "$SH" in
                    "b") mini="${file/.${ext}/.min.${ext}}" ;;
                    "k") mini="${file%.$ext}.min.$ext" ;;
                esac
                printf "minified: ${mini}\n"

                if [ -x $(which stat) ]; then
                    case "$SH" in
                    "b")
                        [ -f "$file" ] && file_seconds=$(stat -c "%Y" "$file")
                        [ -f "$mini" ] && mini_seconds=$(stat -c "%Y" "$mini")
                    ;;
                    "k")
                        [ -f "$file" ] && file_seconds=$(stat -f "%m" "$file")
                        [ -f "$mini" ] && mini_seconds=$(stat -f "%m" "$mini")
                    ;;
                    esac

                else
                    [ -f "$file" ] && file_seconds=$(date -r "$file" +%s)
                    [ -f "$mini" ] && mini_seconds=$(date -r "$mini" +%s)

                fi

                if [ "${file_seconds}" -gt "${mini_seconds}" ]; then
                    #printf "file: $file_seconds sec | name: $mini_seconds sec\n";
                    if $java -jar $minifier "${file}" -o "${mini}"; then
                        printf "[ %s ] %s\n" "OK" "file $file minified to $mini"

                    else
                        printf "[ %s ] %s\n" "KO" "Can not minify file $file to $mini!"
                    fi
                fi

                unset file_seconds mini mini_seconds

            fi

        done <<EOF
    $(find $dir/${ext}/ -type f -maxdepth 1 -name "*.${ext}")
EOF

    done
else
    printf "%s \n" "This folder '$dir' seems not exists!"
fi

unset ROOT minifier dirs
