diff --git a/README.md b/README.md
index dbd93dd..6d87098 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,16 @@
-# google-sre-ebook
+# Google SRE Book/s
-![Cover](cover.jpg)
+Generates a EPUB/MOBI/PDF for the Google SRE Book/s.
-Generates a EPUB/MOBI/PDF for the Google SRE Book.
+Original sources are downloaded from https://landing.google.com/sre/books
-Original sources are downloaded from https://landing.google.com/sre/
+# Books
+
+## Site Reliability Engineering (2016)
+
+
+## The Site Reliability Workbook (2018)
+
# Build
@@ -14,8 +20,14 @@ Requirements:
- Docker
+You can generate either of books using `BOOK_SLUG` variable.
+
+Available values for `BOOK_SLUG`:
+ - `sre_book` Site Reliability Engineering.
+ - `srw_book` The Site Reliability Workbook.
+
```
-$ docker run --rm --volume "$(pwd):/output" captn3m0/google-sre-ebook:latest
+$ docker run --rm --volume "$(pwd):/output" -e BOOK_SLUG='sre_book' captn3m0/google-sre-ebook:latest
```
- You should see the final EPUB/MOBI/PDF files in the `output` directory after the above runs.
@@ -26,7 +38,7 @@ $ docker run --rm --volume "$(pwd):/output" captn3m0/google-sre-ebook:latest
```
$ mkdir /tmp/sreoutput
$ chcon -Rt svirt_sandbox_file_t /tmp/sreoutput
-$ docker run --rm --volume "/tmp/sreoutput:/output" captn3m0/google-sre-ebook:latest
+$ docker run --rm --volume "/tmp/sreoutput:/output" -e BOOK_SLUG='sre_book' captn3m0/google-sre-ebook:latest
```
The build for the above Docker image can be audited at .
@@ -46,7 +58,7 @@ Requirements:
# Known Issues
-- metadata.xml is not complete. There are just too many authors
+- metadata is not complete. There are just too many authors
- Foreword/Preface is not part of the index
# LICENSE
diff --git a/books.sh b/books.sh
new file mode 100644
index 0000000..f1f0e38
--- /dev/null
+++ b/books.sh
@@ -0,0 +1,23 @@
+# Google SRE Books.
+
+# NOTE: The indentation before inner vars should be always "tab" not "space".
+declare -A BOOKS
+BOOKS=(
+
+ # Site Reliability Engineering
+ ["SRE_BOOK"]='
+ BOOK_NAME=sre-book
+ BOOK_NAME_FULL=Site Reliability Engineering
+ BOOK_FILE=google-sre-book
+ BOOK_TOC_URL=https://landing.google.com/sre/sre-book/toc/index.html
+ '
+
+ # Site Reliability Workbook
+ ["SRW_BOOK"]='
+ BOOK_NAME=workbook
+ BOOK_NAME_FULL=The Site Reliability Workbook
+ BOOK_FILE=google-sre-workbook
+ BOOK_TOC_URL=https://landing.google.com/sre/workbook/toc/index.html
+ '
+
+)
diff --git a/bootstrap.sh b/bootstrap.sh
index 2aa6b78..79af46b 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -1,14 +1,18 @@
#!/bin/bash
+if [[ "${DEBUG}" == 1 ]]; then
+ set -x
+fi
set -euo pipefail
IFS=$'\n\t'
-# Vars.
-export BOOK_NAME="sre-book"
-export BOOK_NAME_FULL="Site Reliability Engineering"
-BOOK_FILE="google-${BOOK_NAME}"
-TOC_URL="https://landing.google.com/sre/${BOOK_NAME}/toc/index.html"
+# Get book details.
+source books.sh
+export ${BOOKS[${BOOK_SLUG^^}]}
+
+# Common vars.
IMGS_DOMAIN="lh3.googleusercontent.com"
+#
# Make sure that links are relative \
# # Remove the /sre/ directories
# Save stuff in html/ directory
@@ -16,6 +20,7 @@ IMGS_DOMAIN="lh3.googleusercontent.com"
# Enable recursion, timestamping (--mirror)
# Images are hosted elsewhere, download them as well.
# We need to go up a level from /toc/ where we start
+# The "ture" at the end to ignore non-200 URLs like 404.
wget \
--convert-links \
--directory-prefix=html \
@@ -27,18 +32,21 @@ wget \
--mirror \
--no-verbose \
--recursive \
- --domains=${IMGS_DOMAIN},landing.google.com ${TOC_URL}
+ --domains=${IMGS_DOMAIN},landing.google.com ${BOOK_TOC_URL} || true
#
+echo "Get working mode..."
MODE=${1:-}
if [ "$MODE" != "docker" ];then
bundle install
fi
+#
# 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
+echo "Fix images extension issue ..."
IMGS_FILES="$(ls html/${IMGS_DOMAIN}/*)"
for FILE_NAME_FULL in ${IMGS_FILES}; do
@@ -48,24 +56,31 @@ for FILE_NAME_FULL in ${IMGS_FILES}; do
# Rename and replace file.
mv "${FILE_NAME_FULL}" "${FILE_NAME_FULL}.${FILE_TYPE,,}" &&
- grep -rl "${FILE_NAME_BASE}" ./html | xargs sed -i "s/${FILE_NAME_BASE}/${FILE_NAME_BASE}.${FILE_TYPE,,}/g"
+ grep -rl -- "${FILE_NAME_BASE}" ./html | xargs sed -i -- "s/${FILE_NAME_BASE}/${FILE_NAME_BASE}.${FILE_TYPE,,}/g"
done
+#
+# Generate epub from html.
+echo "Generate book ..."
bundle exec ruby generate.rb
pushd html/landing.google.com/sre/${BOOK_NAME}/toc
-pandoc --from=html --to=epub \
- --output=../../../../../${BOOK_FILE}.epub \
- --epub-metadata=../../../../../${BOOK_NAME}.xml \
- --epub-cover-image=../../../../../${BOOK_NAME}.jpg \
+pandoc --from=html --to=epub \
+ --output=../../../../../${BOOK_FILE}.epub \
+ --epub-metadata=../../../../../metadata/${BOOK_NAME}.xml \
+ --epub-cover-image=../../../../../cover/${BOOK_NAME}.jpg \
complete.html
popd
+#
+# Generate other format from epub.
for EXTENSION in mobi pdf; do
ebook-convert ${BOOK_FILE}.epub ${BOOK_FILE}.${EXTENSION}
done
-if [ "$1"=="docker" ]; then
+#
+# If it works inside docker.
+if [ "$MODE" == "docker" ]; then
chown -v $(id -u):$(id -g) ${BOOK_FILE}.*
mv -f ${BOOK_FILE}.* /output
fi
diff --git a/cover/sre-book.jpg b/cover/sre-book.jpg
new file mode 100644
index 0000000..d709f4f
Binary files /dev/null and b/cover/sre-book.jpg differ
diff --git a/cover/workbook.jpg b/cover/workbook.jpg
new file mode 100644
index 0000000..e770711
Binary files /dev/null and b/cover/workbook.jpg differ
diff --git a/sre-book.xml b/metadata/sre-book.xml
similarity index 100%
rename from sre-book.xml
rename to metadata/sre-book.xml
diff --git a/metadata/workbook.xml b/metadata/workbook.xml
new file mode 100644
index 0000000..7f161bf
--- /dev/null
+++ b/metadata/workbook.xml
@@ -0,0 +1,11 @@
+1492029459
+978-1492029458
+The Site Reliability Workbook: Practical Ways to Implement SRE
+2018-08-10
+en-US
+
+Betsy Beyer
+Niall Richard Murphy
+David K. Rensin
+Kent Kawahara
+Stephen Thorne
diff --git a/sre-book.jpg b/sre-book.jpg
deleted file mode 100644
index 123b7c4..0000000
Binary files a/sre-book.jpg and /dev/null differ