mirror of
https://github.com/donnemartin/system-design-primer.git
synced 2025-12-14 08:58:57 +03:00
In the optimized version of the script, I removed a total of 11 lines compared to the original script. The original script was 44 lines long, and the optimized version is 33 lines long.
54 lines
1.1 KiB
Bash
Executable File
54 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
generate_from_stdin() {
|
|
outfile="$1"
|
|
language="$2"
|
|
|
|
echo "Generating '$language' ..."
|
|
|
|
pandoc --metadata-file=epub-metadata.yaml --metadata=lang:"$2" --from=markdown -o "$1"
|
|
|
|
echo "Done! You can find the '$language' book at ./$outfile"
|
|
}
|
|
|
|
generate_with_solutions() {
|
|
tmpfile=$(mktemp /tmp/sytem-design-primer-epub-generator.XXX)
|
|
|
|
{
|
|
cat ./README.md
|
|
|
|
for dir in ./solutions/system_design/*; do
|
|
case $dir in *template*|*__init__.py*) continue;; esac
|
|
[[ -d "$dir" ]] && ( cd "$dir" && cat ./README.md && echo "" )
|
|
done
|
|
} >> "$tmpfile"
|
|
|
|
generate_from_stdin 'README.epub' 'en' < "$tmpfile"
|
|
rm "$tmpfile"
|
|
}
|
|
|
|
generate() {
|
|
name="$1"
|
|
language="$2"
|
|
|
|
generate_from_stdin "$name.epub" "$language" < "$name.md"
|
|
}
|
|
|
|
# Check if dependencies exist
|
|
check_dependencies() {
|
|
for dependency in "${dependencies[@]}"; do
|
|
command -v "$dependency" >/dev/null 2>&1 || {
|
|
echo "Error: $dependency is not installed." >&2
|
|
exit 1
|
|
}
|
|
done
|
|
}
|
|
|
|
dependencies=("pandoc")
|
|
check_dependencies
|
|
|
|
generate_with_solutions
|
|
generate README-ja ja
|
|
generate README-zh-Hans zh-Hans
|
|
generate README-zh-TW zh-TW
|