1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #!/bin/bash
- CURRENT_DIR="$(dirname "$0")"
- SOURCE_FILE=${1}
- TARGET_FILE=${2}
- # Check if source file is set
- if [[ "${SOURCE_FILE}" = "" ]]; then
- echo "Source file is not set"
- exit 1
- fi
- # Check if target file is set
- if [[ "${TARGET_FILE}" = "" ]]; then
- # Try to generate from source file name
- TARGET_FILE=$(echo "${SOURCE_FILE}" | sed 's/\.dev\.\(css\|js\)$/.\1/')
- if [[ "${TARGET_FILE}" = "" ]]; then
- echo "Target file is not set"
- exit 1
- fi
- fi
- # Check if source file exists
- if [[ ! -f "${SOURCE_FILE}" ]]; then
- echo "Source file does not exists: ${SOURCE_FILE}"
- exit 1
- fi
- # Re-create empty target file
- if [[ -f "${TARGET_FILE}" ]]; then
- rm ${TARGET_FILE}
- fi
- touch ${TARGET_FILE}
- # Create cache dir if not exists
- if [[ ! -d "${CURRENT_DIR}/.cache" ]]; then
- mkdir "${CURRENT_DIR}/.cache"
- fi
- IFS=""
- while read -r line; do
- if [[ ${line} == "/*"* ]]; then
- if [[ ${line} == *"*/" ]]; then
- if [[ ${line} == *"import("* ]]; then
- FILE_TO_IMPORT=$(echo "${line}" | grep -oP "/*\s?import\(\K[^)]+")
- CACHE_NAME=$(echo "${FILE_TO_IMPORT}" | md5sum | cut -f1 -d" ")
- CACHE_NAME=$(echo "${CACHE_NAME}-$(basename ${FILE_TO_IMPORT})")
- CACHE_FILE="${CURRENT_DIR}/.cache/${CACHE_NAME}"
- DATA_TO_IMPORT=""
- # Local import
- if [[ ${FILE_TO_IMPORT} == "./"* ]]; then
- FILE_TO_IMPORT="$(dirname "${SOURCE_FILE}")$(echo "${FILE_TO_IMPORT}" | sed 's/^\.//')"
- if [[ -f "${FILE_TO_IMPORT}" ]]; then
- DATA_TO_IMPORT=$(cat "${FILE_TO_IMPORT}")
- fi
- fi
- # Remote import
- if [[ ${FILE_TO_IMPORT} == "http"* ]]; then
- if [[ ! -f "${CACHE_FILE}" ]]; then
- DATA_TO_IMPORT=$(curl -s "${FILE_TO_IMPORT}")
- echo "${DATA_TO_IMPORT}" > ${CACHE_FILE}
- else
- DATA_TO_IMPORT=$(cat ${CACHE_FILE})
- fi
- fi
- echo "${DATA_TO_IMPORT}" >> ${TARGET_FILE}
- else
- echo "${line}" >> ${TARGET_FILE}
- fi
- else
- echo "${line}" >> ${TARGET_FILE}
- fi
- else
- echo "${line}" >> ${TARGET_FILE}
- fi
- done < ${SOURCE_FILE}
- # Minify target file (CSS, JS)
- # Install yui-compressor by command:
- # sudo apt-get install yui-compressor
- CHECK_YUI_COMPRESSOR=$(command -v yui-compressor 2> /dev/null)
- if [[ "${CHECK_YUI_COMPRESSOR}" != "" ]]; then
- yui-compressor ${TARGET_FILE} -o ${TARGET_FILE}
- fi
|