98 lines
3.1 KiB
Bash
Executable File
98 lines
3.1 KiB
Bash
Executable File
#! /bin/bash
|
|
|
|
main() {
|
|
flags "$@"
|
|
install
|
|
build
|
|
}
|
|
|
|
flags() {
|
|
set -e
|
|
|
|
export THEMES="${1:-"${THEME:-"${THEMES:-"onepage"}"}"}"
|
|
export PAGE_SIZE="${PAGE_SIZE:-A4}"
|
|
|
|
if [ "$THEMES" == "all" ]; then
|
|
export THEMES="jsonresume-theme-ace","jsonresume-theme-actual","jsonresume-theme-apage","jsonresume-theme-autumn","jsonresume-theme-caffeine","jsonresume-theme-class","jsonresume-theme-classy","jsonresume-theme-cora","jsonresume-theme-dave","jsonresume-theme-elegant","jsonresume-theme-elite","jsonresume-theme-eloquent","jsonresume-theme-even","jsonresume-theme-flat","jsonresume-theme-flat-fr","jsonresume-theme-full","jsonresume-theme-github","jsonresume-theme-jacrys","jsonresume-theme-kards","jsonresume-theme-keloran","jsonresume-theme-kendall","jsonresume-theme-kwan","jsonresume-theme-kwan-linkedin","jsonresume-theme-latex","jsonresume-theme-macchiato","jsonresume-theme-mantra","jsonresume-theme-mocha-responsive","jsonresume-theme-modern","jsonresume-theme-msresume","jsonresume-theme-onepage","jsonresume-theme-onepageresume","jsonresume-theme-orbit","jsonresume-theme-paper","jsonresume-theme-paper-plus-plus","jsonresume-theme-papirus","jsonresume-theme-pumpkin","jsonresume-theme-rocketspacer","jsonresume-theme-short","jsonresume-theme-simple-red","jsonresume-theme-slick","jsonresume-theme-spartan","jsonresume-theme-srt","jsonresume-theme-stackoverflow","jsonresume-theme-standard-resume","jsonresume-theme-tachyons-clean","jsonresume-theme-tan-responsive","jsonresume-theme-techlead","jsonresume-theme-verbum","jsonresume-theme-wraypro"
|
|
export THEMES="${THEMES//jsonresume-theme-/}"
|
|
fi
|
|
}
|
|
|
|
install() {
|
|
install_cli
|
|
install_themes
|
|
|
|
if ! which wkhtmltopdf &> /dev/null; then
|
|
log installing wkhtmltopdf
|
|
false
|
|
sudo apt -y install xfonts-75dpi
|
|
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
|
|
sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb
|
|
rm ./wkhtml*.deb
|
|
fi
|
|
}
|
|
|
|
install_cli() {
|
|
if which resume &> /dev/null; then
|
|
return
|
|
fi
|
|
|
|
sudo npm install -g resume-cli
|
|
which resume
|
|
}
|
|
|
|
install_themes() {
|
|
for theme in ${THEMES//,/ }; do
|
|
if [ -d node_modules/jsonresume-theme-$theme ]; then
|
|
return
|
|
fi
|
|
log installing theme $theme
|
|
if ! npm install jsonresume-theme-$theme; then
|
|
log failed
|
|
export THEMES="${THEMES//,$theme,/,}"
|
|
else
|
|
log ok
|
|
fi
|
|
done
|
|
}
|
|
|
|
build() {
|
|
if ! [ -f ./resume.yaml ]; then
|
|
resume init
|
|
mv ./resume.json ./resume.yaml
|
|
return $?
|
|
fi
|
|
|
|
cat ./resume.yaml | gojq --yaml-input > resume.json
|
|
cleanup() {
|
|
rm ./resume.json
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
for theme in ${THEMES//,/ }; do
|
|
THEME=$theme build_theme
|
|
done
|
|
}
|
|
|
|
build_theme() {
|
|
log building theme $THEME
|
|
|
|
(
|
|
resume validate
|
|
mkdir -p ./out
|
|
resume export ./out/resume.$THEME.html --theme $THEME || true
|
|
if [ -f ./out/resume.$THEME.html ]; then
|
|
wkhtmltopdf --page-size $PAGE_SIZE ./out/resume.$THEME.html ./out/resume.$THEME.pdf
|
|
fi
|
|
) || true
|
|
}
|
|
|
|
|
|
log() {
|
|
echo "$(date) > $*" >&2
|
|
}
|
|
|
|
if [ "$0" == "$BASH_SOURCE" ]; then
|
|
main "$@"
|
|
fi
|