assets.sh 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/bin/bash
  2. CURRENT_DIR="$(dirname "$0")"
  3. SOURCE_FILE=${1}
  4. TARGET_FILE=${2}
  5. # Check if source file is set
  6. if [[ "${SOURCE_FILE}" = "" ]]; then
  7. echo "Source file is not set"
  8. exit 1
  9. fi
  10. # Check if target file is set
  11. if [[ "${TARGET_FILE}" = "" ]]; then
  12. # Try to generate from source file name
  13. TARGET_FILE=$(echo "${SOURCE_FILE}" | sed 's/\.dev\.\(css\|js\)$/.\1/')
  14. if [[ "${TARGET_FILE}" = "" ]]; then
  15. echo "Target file is not set"
  16. exit 1
  17. fi
  18. fi
  19. # Check if source file exists
  20. if [[ ! -f "${SOURCE_FILE}" ]]; then
  21. echo "Source file does not exists: ${SOURCE_FILE}"
  22. exit 1
  23. fi
  24. # Re-create empty target file
  25. if [[ -f "${TARGET_FILE}" ]]; then
  26. rm ${TARGET_FILE}
  27. fi
  28. touch ${TARGET_FILE}
  29. IFS=""
  30. while read line; do
  31. if [[ ${line} == "/*"* ]]; then
  32. if [[ ${line} == *"*/" ]]; then
  33. if [[ ${line} == *"import("* ]]; then
  34. FILE_TO_IMPORT=$(echo "${line}" | grep -oP "/*\s?import\(\K[^)]+")
  35. CACHE_NAME=$(echo "${FILE_TO_IMPORT}" | md5sum | cut -f1 -d" ")
  36. CACHE_NAME=$(echo "${CACHE_NAME}-$(basename ${FILE_TO_IMPORT})")
  37. CACHE_FILE="${CURRENT_DIR}/.cache/${CACHE_NAME}"
  38. DATA_TO_IMPORT=""
  39. if [[ ! -f "${CACHE_FILE}" ]]; then
  40. DATA_TO_IMPORT=$(curl -s "${FILE_TO_IMPORT}")
  41. echo "${DATA_TO_IMPORT}" > ${CACHE_FILE}
  42. else
  43. DATA_TO_IMPORT=$(cat ${CACHE_FILE})
  44. fi
  45. echo "${DATA_TO_IMPORT}" >> ${TARGET_FILE}
  46. else
  47. echo "${line}" >> ${TARGET_FILE}
  48. fi
  49. else
  50. echo "${line}" >> ${TARGET_FILE}
  51. fi
  52. else
  53. echo "${line}" >> ${TARGET_FILE}
  54. fi
  55. done < ${SOURCE_FILE}
  56. # Minify target file (CSS, JS)
  57. # Install yui-compressor by command:
  58. # sudo apt-get install yui-compressor
  59. CHECK_YUI_COMPRESSOR=$(command -v yui-compressor 2> /dev/null)
  60. if [[ "${CHECK_YUI_COMPRESSOR}" != "" ]]; then
  61. yui-compressor ${TARGET_FILE} -o ${TARGET_FILE}
  62. fi