Files
dive-into-python3/publish
T
Mark Pilgrim 7be922d7b0 build fiddling
2009-06-05 11:42:04 -04:00

86 lines
3.1 KiB
Bash
Executable File

#!/bin/sh
echo "started build"
# make build directory and copy original files there for preflighting
rm -rf build
mkdir build
cp robots.txt *.js *.css build/
rm -f examples/*.pyc
cp -R examples build/
echo "minimizing HTML"
# minimize HTML (XXX this script is quite fragile and relies on knowledge of how I write HTML)
for f in *.html; do
python3 htmlminimizer.py "$f" build/"$f"
done
# build sitemap
ls build/*.html | sed -e "s|build/|http://diveintopython3.org/|g" > build/sitemap.txt
echo "adding evil tracking code"
# add Google Analytics script
for f in build/*.html; do
cat "$f" ga.js > build/tmp
mv build/tmp "$f"
done
# minimize JS and CSS
echo "minimizing JS"
revision=`hg log|grep changeset|cut -d":" -f3|head -1`
java -jar yuicompressor-2.4.2.jar build/dip3.js > build/dip3-$revision.js
# combine jQuery and our script
echo "combining JS"
cat jquery.min.js build/dip3-$revision.js > build/$revision.js
rm build/dip3-$revision.js
sed -i -e "s|<script src=jquery.js></script>||g" build/*.html
echo "minimizing CSS"
java -jar yuicompressor-2.4.2.jar build/dip3.css > build/$revision.css
java -jar yuicompressor-2.4.2.jar build/mobile.css > build/m-$revision.css
java -jar yuicompressor-2.4.2.jar build/print.css > build/p-$revision.css
sed -i -e "s|;}|}|g" build/$revision.css
sed -i -e "s|;}|}|g" build/m-$revision.css
sed -i -e "s|;}|}|g" build/p-$revision.css
# put CSS inline
echo "inlining CSS"
css=`cat build/$revision.css`
mobilecss=`cat build/m-$revision.css`
printcss=`cat build/p-$revision.css`
sed -i -e "s|<link rel=stylesheet href=dip3.css>|<style>${css}</style>|g" -e "s|<link rel=stylesheet media='only screen and (max-device-width: 480px)' href=mobile.css>|<style>@media only screen and (max-device-width: 480px){${mobilecss}}</style>|g" -e "s|<link rel=stylesheet media=print href=print.css>|<style>@media print{${printcss}}</style>|g" -e "s|</style><style>||g" build/*.html
# remove unused CSS properties on a page-by-page basis
echo "removing unused CSS"
for f in build/*.html; do
python2.6 util/lesscss.py "$f"
done
## secondary stylesheets will be served from a separate domain
#echo "fixing hrefs"
#sed -i -e "s|href=mobile.css|href=http://wearehugh.com/dip3/m-${revision}.css|g" build/*.html
#sed -i -e "s|href=print.css|href=http://wearehugh.com/dip3/p-${revision}.css|g" build/*.html
# JS will be served from a separate domain
sed -i -e "s|dip3\.js|http://wearehugh.com/dip3/${revision}.js|g" build/*.html
sed -i -e "s|html5\.js|http://wearehugh.com/dip3/html5.js|g" build/*.html
# images would be served from a separate domain if we had any, which we currently don't
#sed -i -e "s|bsb.png|http://wearehugh.com/dip3/bsb.png|g" build/*.html
# minimize URLs
echo "minimizing URLs"
sed -i -e "s|=http:|=|g" build/*.html
sed -i -e "s|href=index.html|href=/|g" build/*.html
# set file permissions (hg resets these, don't know why)
chmod 644 build/*.html build/*.css build/*.js build/examples/*.py build/examples/*.txt build/*.txt
# ship it!
echo "publishing"
rsync -essh -avzP build/$revision.js build/html5.js diveintomark.org:~/web/wearehugh.com/dip3/
rsync -essh -avzP build/*.html build/examples build/*.txt diveintomark.org:~/web/diveintopython3.org/