generate-epub.sh 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #! /usr/bin/env bash
  2. generate_from_stdin() {
  3. outfile=$1
  4. language=$2
  5. echo "Generating '$language' ..."
  6. pandoc --metadata-file=epub-metadata.yaml --metadata=lang:$2 --from=markdown -o $1 <&0
  7. echo "Done! You can find the '$language' book at ./$outfile"
  8. }
  9. generate_with_solutions () {
  10. tmpfile=$(mktemp /tmp/sytem-design-primer-epub-generator.XXX)
  11. cat ./README.md >> $tmpfile
  12. for dir in ./solutions/system_design/*; do
  13. case $dir in *template*) continue;; esac
  14. case $dir in *__init__.py*) continue;; esac
  15. : [[ -d "$dir" ]] && ( cd "$dir" && cat ./README.md >> $tmpfile && echo "" >> $tmpfile )
  16. done
  17. cat $tmpfile | generate_from_stdin 'README.epub' 'en'
  18. rm "$tmpfile"
  19. }
  20. generate () {
  21. name=$1
  22. language=$2
  23. cat $name.md | generate_from_stdin $name.epub $language
  24. }
  25. # Check if depencies exist
  26. check_dependencies () {
  27. for dependency in "${dependencies[@]}"
  28. do
  29. if ! [ -x "$(command -v $dependency)" ]; then
  30. echo "Error: $dependency is not installed." >&2
  31. exit 1
  32. fi
  33. done
  34. }
  35. dependencies=("pandoc")
  36. check_dependencies
  37. generate_with_solutions
  38. generate README-ja ja
  39. generate README-zh-Hans zh-Hans
  40. generate README-zh-TW zh-TW