47 lines
1.6 KiB
Bash
Executable File
47 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
PROJ_ROOT=${PROJ_ROOT:-..}
|
|
DATA_DIR=${PROJ_ROOT}/data
|
|
WWW_DIR=${DATA_DIR}/w
|
|
|
|
|
|
# Build data directory
|
|
printf "\033[33mBuilding data directory:\033[0m ${DATA_DIR}\n"
|
|
mkdir -p ${DATA_DIR}
|
|
|
|
# Build frontend (Not sure if I want to do this)
|
|
WWWFRONT_DIR=${WWWFRONT:-${PROJ_ROOT}/frontend}
|
|
#printf "\033[33mBuilding frontend:\033[0m ${WWWFRONT_DIR}\n"
|
|
#(cd ${WWWFRONT_DIR} && npm run release)
|
|
|
|
# Copying static web files
|
|
printf "\033[33mCopying files to static web directory:\033[0m ${WWW_DIR}\n"
|
|
rm ${WWW_DIR} -Rf
|
|
mkdir -p ${WWW_DIR}
|
|
cp -Lr ${WWWFRONT_DIR}/dist/* ${WWW_DIR}
|
|
|
|
# Create gzip compressed versions of www files
|
|
GZ_MIN_SIZE=${GZ_MIN_SIZE:-"1k"}
|
|
GZ_MIN_RATIO=${GZ_MIN_RATIO:-30}
|
|
printf "\033[33mCompressing large files:\033[0m \
|
|
(size > ${GZ_MIN_SIZE}) by at least ${GZ_MIN_RATIO}%%\n"
|
|
find ${WWW_DIR} -type f -size +${GZ_MIN_SIZE} | while read file; do
|
|
real_size=$(cat "${file}" | wc -c)
|
|
gz_size=$(gzip "${file}" -c | wc -c)
|
|
ratio=$(echo "scale=2; 100 - ${gz_size} * 100 / ${real_size}" | bc)
|
|
if [ `echo "${ratio} > ${GZ_MIN_RATIO}" | bc` -ge 1 ]; then
|
|
gzip -n -k -9 "${file}"
|
|
printf " \033[37m${file}\033[0m ${real_size} bytes ==> ${gz_size} bytes (\033[32m${ratio}%%\033[0m)\n"
|
|
else
|
|
printf " \033[37m${file}\033[0m ${real_size} bytes ==> ${gz_size} bytes (\033[31m${ratio}%%\033[0m) Not compressing!\n"
|
|
fi
|
|
done
|
|
|
|
# Finish up
|
|
printf "\n\n\033[32mFinished!\033[0m\n"
|
|
DATA_SUM=$(find ${DATA_DIR} -type f -exec sha1sum {} \; | sort -k 2 | sha1sum)
|
|
tree --du -h "${DATA_DIR}"
|
|
echo "Data checksum: ${DATA_SUM}"
|
|
echo "Apparent size: $(du -sbh ${DATA_DIR})"
|