mirror of
https://github.com/kennethreitz/dive-into-python3.git
synced 2026-06-05 15:00:18 +00:00
81 lines
3.0 KiB
Bash
Executable File
81 lines
3.0 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 *.css build/
|
|
cp -R j build/
|
|
cp -R i build/
|
|
rm -f examples/*.pyc
|
|
cp -R examples build/
|
|
cp .htaccess build/
|
|
|
|
echo "minimizing HTML"
|
|
|
|
# minimize HTML (NB: this script is quite fragile and relies on knowledge of how I write HTML)
|
|
for f in *.html; do
|
|
python3 util/htmlminimizer.py "$f" build/"$f"
|
|
done
|
|
|
|
# build sitemap
|
|
ls build/*.html | sed -e "s|build/|http://diveintopython3.org/|g" -e "s|/index.html|/|g" > build/sitemap.txt
|
|
|
|
echo "adding evil tracking code"
|
|
|
|
# add Google Analytics script
|
|
for f in build/*.html; do
|
|
cat "$f" j/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 util/yuicompressor-2.4.2.jar build/j/prettify.js > build/j/prettify.min.js
|
|
java -jar util/yuicompressor-2.4.2.jar build/j/dip3.js > build/j/dip3.min.js
|
|
|
|
# combine jQuery and our script
|
|
echo "combining JS"
|
|
cat build/j/jquery.min.js build/j/prettify.min.js build/j/dip3.min.js > build/j/$revision.js
|
|
sed -i -e "s|<script src=j/jquery.js></script>||g" build/*.html
|
|
sed -i -e "s|<script src=j/prettify.js></script>||g" build/*.html
|
|
sed -i -e "s|<script src=j/dip3.js>|<script src=j/${revision}.js>|g" build/*.html
|
|
|
|
echo "minimizing CSS"
|
|
java -jar util/yuicompressor-2.4.2.jar build/dip3.css > build/$revision.css
|
|
java -jar util/yuicompressor-2.4.2.jar build/mobile.css > build/m-$revision.css
|
|
java -jar util/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 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
|
|
|
|
# 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 755 build/j build/i
|
|
chmod 644 build/*.html build/*.css build/examples/*.py build/examples/*.txt build/*.txt build/j/*.js build/j/.htaccess build/i/* build/i/.htaccess build/.htaccess
|
|
|
|
# ship it!
|
|
echo "publishing"
|
|
rsync -essh -avz build/i/* build/i/.htaccess diveintomark.org:~/web/wearehugh.com/dip3/
|
|
rsync -essh -avz build/j/$revision.js build/j/html5.js build/j/.htaccess diveintomark.org:~/web/diveintopython3.org/j/
|
|
rsync -essh -avz build/examples build/*.txt build/*.html build/.htaccess diveintomark.org:~/web/diveintopython3.org/
|