google-sre-ebook/bootstrap.sh

86 lines
2.3 KiB
Bash
Raw Normal View History

2017-09-16 16:22:31 +00:00
#!/bin/bash
2019-02-01 07:29:42 +00:00
if [[ "${DEBUG}" == 1 ]]; then
set -x
fi
set -euo pipefail
2017-09-16 16:22:31 +00:00
2019-02-01 05:17:47 +00:00
# Get book details.
source books.sh
export ${BOOKS[${BOOK_SLUG^^}]}
# Common vars.
IFS=$'\n\t'
2019-02-01 07:29:42 +00:00
IMGS_DOMAIN="lh3.googleusercontent.com"
2019-02-01 05:17:47 +00:00
#
# Make sure that links are relative \
# # Remove the /sre/ directories
# Save stuff in html/ directory
# Do not create a landing.google.com directory
# Enable recursion, timestamping (--mirror)
# Images are hosted elsewhere, download them as well.
# We need to go up a level from /toc/ where we start
wget \
--convert-links \
--directory-prefix=html \
--page-requisites \
--adjust-extension \
--span-hosts \
--trust-server-names \
--backup-converted \
--mirror \
--no-verbose \
--recursive \
2019-02-01 05:17:47 +00:00
--domains=${IMGS_DOMAIN},landing.google.com ${BOOK_TOC_URL}
2017-09-16 16:22:31 +00:00
#
2019-02-01 07:29:42 +00:00
echo "Get working mode..."
MODE=${1:-}
2017-09-16 16:22:31 +00:00
if [ "$MODE" != "docker" ];then
2018-05-16 20:24:54 +00:00
bundle install
fi
2019-02-01 05:17:47 +00:00
#
# Add extension to files.
# That because `pandoc` cannot generate the right `mime type` without the extension.
# https://github.com/captn3m0/google-sre-ebook/issues/19
2019-02-01 07:29:42 +00:00
echo "Fix images extension issue ..."
IMGS_FILES="$(ls html/${IMGS_DOMAIN}/*)"
for FILE_NAME_FULL in ${IMGS_FILES}; do
# Get file vars.
FILE_NAME_BASE="$(basename ${FILE_NAME_FULL})"
FILE_TYPE=$(file -b -- "${FILE_NAME_FULL}" | cut -f1 -d " ")
# Rename and replace file.
mv "${FILE_NAME_FULL}" "${FILE_NAME_FULL}.${FILE_TYPE,,}" &&
2019-02-01 07:29:42 +00:00
grep -rl -- "${FILE_NAME_BASE}" ./html | xargs sed -i -- "s/${FILE_NAME_BASE}/${FILE_NAME_BASE}.${FILE_TYPE,,}/g"
done
2019-02-01 05:17:47 +00:00
#
# Generate epub from html.
2019-02-01 07:29:42 +00:00
echo "Generate book ..."
bundle exec ruby generate.rb
pushd html/landing.google.com/sre/${BOOK_NAME}/toc
2019-02-01 07:29:42 +00:00
pandoc --from=html --to=epub \
--output=../../../../../${BOOK_FILE}.epub \
--epub-metadata=../../../../../metadata/${BOOK_NAME}.xml \
2019-02-01 05:17:47 +00:00
--epub-cover-image=../../../../../cover/${BOOK_NAME}.jpg \
complete.html
popd
2018-05-16 20:24:54 +00:00
2019-02-01 05:17:47 +00:00
#
# Generate other format from epub.
for EXTENSION in mobi pdf; do
ebook-convert ${BOOK_FILE}.epub ${BOOK_FILE}.${EXTENSION}
done
2019-02-01 05:17:47 +00:00
#
# If it works inside docker.
2019-02-01 07:29:42 +00:00
if [ "$MODE" == "docker" ]; then
chown -v $(id -u):$(id -g) ${BOOK_FILE}.*
mv -f ${BOOK_FILE}.* /output
2018-05-16 20:24:54 +00:00
fi