uweather_firmware/bin/build-data.sh

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})"