diff options
| author | Charlotte Koch <dressupgeekout@gmail.com> | 2023-08-17 09:43:03 -0700 |
|---|---|---|
| committer | Charlotte Koch <dressupgeekout@gmail.com> | 2023-08-17 09:44:00 -0700 |
| commit | f4f8589d49f4ab946ff9bd5d734418e1d3998935 (patch) | |
| tree | 8f6506b808b715d1e65f9348b91445ee09f6f415 /mk | |
| parent | ac1e192a52c37bba1787ad9e1f07d07d9765d39b (diff) | |
Render different frontmatter for different editions
Diffstat (limited to 'mk')
| -rw-r--r-- | mk/willora.mk | 157 |
1 files changed, 112 insertions, 45 deletions
diff --git a/mk/willora.mk b/mk/willora.mk index 4199622..5f041cc 100644 --- a/mk/willora.mk +++ b/mk/willora.mk @@ -5,45 +5,59 @@ WILLORABASE?= ${.CURDIR} -NAME?= mybook -PDF_OUT?= ${NAME}.pdf -PDF_ADOC_TOTAL= ${PDF_OUT}.adoc -EPUB_OUT?= ${NAME}.epub -EPUB_ADOC_TOTAL=${EPUB_OUT}.adoc +NAME?= mybook +PAPERBACK_OUT?= ${NAME}-paperback.pdf +HARDCOVER_OUT?= ${NAME}-hardcover.pdf +EPUB_OUT?= ${NAME}.epub +PAPERBACK_ADOC_TOTAL= ${PAPERBACK_OUT}.adoc +HARDCOVER_ADOC_TOTAL= ${HARDCOVER_OUT}.adoc +EPUB_ADOC_TOTAL= ${EPUB_OUT}.adoc BUNDLE?= bundle +RUBY?= ruby THEME?= poppy THEMEDIR?= ${WILLORABASE}/themes FONTDIR?= ${WILLORABASE}/fonts MEDIA?= prepress PUBLISHER?= WilloraPDF -COLOPHON_OUT?= colophon.pdf +PAPERBACK_FRONTMATTER= adoc/frontmatter-paperback.adoc +HARDCOVER_FRONTMATTER= adoc/frontmatter-hardcover.adoc +EPUB_FRONTMATTER= adoc/frontmatter-epub.adoc +PAPERBACK_COLOPHON_OUT?= colophon-paperback.pdf +HARDCOVER_COLOPHON_OUT?= colophon-hardcover.pdf +EPUB_COLOPHON_OUT?= colophon-epub.pdf + DEDICATION_OUT?= dedication.pdf ACKNOWLEDGMENTS_OUT?= acknowledgments.pdf CUSTOM_PDF_CONVERTER= ${WILLORABASE}/lib/willora_pdf_converter.rb +ERBBER_SCRIPT= script/erbber.rb ########## ########## ########## .PHONY: all -all: ${PDF_OUT} ${EPUB_OUT} +all: ${PAPERBACK_OUT} ${HARDCOVER_OUT} ${EPUB_OUT} +# Legacy synonym .PHONY: pdf -pdf: ${PDF_OUT} +pdf: paperback + +.PHONY: paperback +paperback: ${PAPERBACK_OUT} + +.PHONY: hardcover +hardcover: ${HARDCOVER_OUT} .PHONY: epub epub: ${EPUB_OUT} ########## ########## ########## -# XXX: Figure out why I can't do this: -# 'asciidoctor-pdf -a optimize' -# > GPL Ghostscript 9.50: Can't find initialization file gs_init.ps. -# https://docs.asciidoctor.org/pdf-converter/latest/optimize-pdf/ +# ===== PAPERBACK ===== -CLEANFILES+= ${PDF_OUT} -${PDF_OUT}: ${THEMEDIR}/${THEME}-theme.yml ${CUSTOM_PDF_CONVERTER} ${PDF_ADOC_TOTAL} Gemfile.lock ${COLOPHON_OUT} ${DEDICATION_OUT} ${ACKNOWLEDGMENTS_OUT} +CLEANFILES+= ${PAPERBACK_OUT} +${PAPERBACK_OUT}: ${THEMEDIR}/${THEME}-theme.yml ${CUSTOM_PDF_CONVERTER} ${PAPERBACK_ADOC_TOTAL} Gemfile.lock ${PAPERBACK_COLOPHON_OUT} ${DEDICATION_OUT} ${ACKNOWLEDGMENTS_OUT} ${BUNDLE} exec asciidoctor-pdf \ -v \ -r ${CUSTOM_PDF_CONVERTER} \ @@ -54,21 +68,23 @@ ${PDF_OUT}: ${THEMEDIR}/${THEME}-theme.yml ${CUSTOM_PDF_CONVERTER} ${PDF_ADOC_TO -a pdf-themesdir=${THEMEDIR} \ -a media=${MEDIA} \ -a text-align=justify \ - ${PDF_ADOC_TOTAL} + ${PAPERBACK_ADOC_TOTAL} -CLEANFILES+= ${PDF_ADOC_TOTAL} -${PDF_ADOC_TOTAL}: ${CHAPTERS} +CLEANFILES+= ${PAPERBACK_ADOC_TOTAL} +${PAPERBACK_ADOC_TOTAL}: ${PAPERBACK_FRONTMATTER} ${CHAPTERS} rm -f ${.TARGET} + cp ${PAPERBACK_FRONTMATTER} ${.TARGET} .for chapter in ${CHAPTERS} + printf '\n\n' >> ${.TARGET} dos2unix < ${chapter} | sed -E \ -e 's,[[:space:]]--[[:space:]],\&\#8212;,g' \ -e 's,\ï,\&\#239;,g' \ + -e 's,\è,\&\#232;,g' \ -e 's,\é,\&\#233;,g' >> ${.TARGET} - printf '\n\n' >> ${.TARGET} .endfor -CLEANFILES+= ${COLOPHON_OUT} -${COLOPHON_OUT}: ${THEMEDIR}/${THEME}-colophon-theme.yml ${COLOPHON_FILE} ${CUSTOM_PDF_CONVERTER} Gemfile.lock +CLEANFILES+= ${PAPERBACK_COLOPHON_OUT} +${PAPERBACK_COLOPHON_OUT}: ${THEMEDIR}/${THEME}-colophon-theme.yml ${PAPERBACK_COLOPHON_FILE} ${CUSTOM_PDF_CONVERTER} Gemfile.lock ${BUNDLE} exec asciidoctor-pdf \ -v \ -r ${CUSTOM_PDF_CONVERTER} \ @@ -79,47 +95,63 @@ ${COLOPHON_OUT}: ${THEMEDIR}/${THEME}-colophon-theme.yml ${COLOPHON_FILE} ${CUST -a pdf-themesdir=${THEMEDIR} \ -a media=print \ -a text-align=justify \ - ${COLOPHON_FILE} + ${PAPERBACK_COLOPHON_FILE} -CLEANFILES+= ${DEDICATION_OUT} -${DEDICATION_OUT}: ${THEMEDIR}/${THEME}-dedication-theme.yml ${DEDICATION_FILE} ${CUSTOM_PDF_CONVERTER} Gemfile.lock +CLEANFILES+= ${PAPERBACK_COLOPHON_FILE} +${PAPERBACK_COLOPHON_FILE}: ${COLOPHON_TEMPLATE} ${ERBBER_SCRIPT} + ${BUNDLE} exec ${RUBY} ${ERBBER_SCRIPT} -DISBN13=${PAPERBACK_ISBN} --input ${COLOPHON_TEMPLATE} > ${.TARGET} + +########## ########## ########## + +# ===== HARDCOVER ===== + +CLEANFILES+= ${HARDCOVER_OUT} +${HARDCOVER_OUT}: ${THEMEDIR}/${THEME}-theme.yml ${CUSTOM_PDF_CONVERTER} ${HARDCOVER_ADOC_TOTAL} Gemfile.lock ${HARDCOVER_COLOPHON_OUT} ${DEDICATION_OUT} ${ACKNOWLEDGMENTS_OUT} ${BUNDLE} exec asciidoctor-pdf \ -v \ -r ${CUSTOM_PDF_CONVERTER} \ -d book \ -o ${.TARGET} \ -a pdf-fontsdir=${FONTDIR} \ - -a pdf-theme=${THEME}-dedication \ + -a pdf-theme=${THEME} \ -a pdf-themesdir=${THEMEDIR} \ - -a media=print \ - ${DEDICATION_FILE} + -a media=${MEDIA} \ + -a text-align=justify \ + ${PAPERBACK_ADOC_TOTAL} -CLEANFILES+= ${ACKNOWLEDGMENTS_OUT} -${ACKNOWLEDGMENTS_OUT}: ${THEMEDIR}/${THEME}-acknowledgments-theme.yml ${ACKNOWLEDGMENTS_FILE} ${CUSTOM_PDF_CONVERTER} Gemfile.lock +CLEANFILES+= ${HARDCOVER_ADOC_TOTAL} +${HARDCOVER_ADOC_TOTAL}: ${HARDCOVER_FRONTMATTER} ${CHAPTERS} + rm -f ${.TARGET} + cp ${HARDCOVER_FRONTMATTER} ${.TARGET} +.for chapter in ${CHAPTERS} + printf '\n\n' >> ${.TARGET} + dos2unix < ${chapter} | sed -E \ + -e 's,[[:space:]]--[[:space:]],\&\#8212;,g' \ + -e 's,\ï,\&\#239;,g' \ + -e 's,\é,\&\#233;,g' >> ${.TARGET} +.endfor + +CLEANFILES+= ${HARDCOVER_COLOPHON_OUT} +${HARDCOVER_COLOPHON_OUT}: ${THEMEDIR}/${THEME}-colophon-theme.yml ${HARDCOVER_COLOPHON_FILE} ${CUSTOM_PDF_CONVERTER} Gemfile.lock ${BUNDLE} exec asciidoctor-pdf \ -v \ -r ${CUSTOM_PDF_CONVERTER} \ -d book \ -o ${.TARGET} \ -a pdf-fontsdir=${FONTDIR} \ - -a pdf-theme=${THEME}-acknowledgments \ + -a pdf-theme=${THEME}-colophon \ -a pdf-themesdir=${THEMEDIR} \ -a media=print \ - ${ACKNOWLEDGMENTS_FILE} + -a text-align=justify \ + ${HARDCOVER_COLOPHON_FILE} + +CLEANFILES+= ${HARDCOVER_COLOPHON_FILE} +${HARDCOVER_COLOPHON_FILE}: ${COLOPHON_TEMPLATE} ${ERBBER_SCRIPT} + ${BUNDLE} exec ${RUBY} ${ERBBER_SCRIPT} -DISBN13=${HARDCOVER_ISBN} --input ${COLOPHON_TEMPLATE} > ${.TARGET} ########## ########## ########## -# XXX: '-a ebook-validate' doesn't work because: -# > RUBYOPT=-d epubcheck -# Exception `LoadError' at /usr/pkg/lib/ruby/3.0.0/rubygems.rb:1339 - cannot -# load such file -- rubygems/defaults/ruby -# Exception `LoadError' at -# <internal:/usr/pkg/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85 - -# cannot load such file -- rubygems/defaults/operating_system -# Exception `LoadError' at -# <internal:/usr/pkg/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:162 - -# cannot load such file -- rubygems/defaults/operating_system -# Failed to execute epubcheck +# ===== EPUB ===== CLEANFILES+= ${EPUB_OUT} ${EPUB_OUT}: Gemfile.lock ${EPUB_ADOC_TOTAL} @@ -134,21 +166,56 @@ ${EPUB_OUT}: Gemfile.lock ${EPUB_ADOC_TOTAL} -a text-align=justify \ ${EPUB_ADOC_TOTAL} -# XXX Needs to be different from the PDF one CLEANFILES+= ${EPUB_ADOC_TOTAL} -${EPUB_ADOC_TOTAL}: ${CHAPTERS} +${EPUB_ADOC_TOTAL}: ${EPUB_FRONTMATTER} ${CHAPTERS} rm -f ${.TARGET} + cp ${EPUB_FRONTMATTER} ${.TARGET} .for chapter in ${CHAPTERS} + printf '\n\n' >> ${.TARGET} dos2unix < ${chapter} | sed -E \ -e 's,[[:space:]]--[[:space:]],\&\#8212;,g' \ -e 's,\ï,\&\#239;,g' \ -e 's,\é,\&\#233;,g' >> ${.TARGET} - printf '\n\n' >> ${.TARGET} .endfor +CLEANFILES+= ${EPUB_COLOPHON_FILE} +${EPUB_COLOPHON_FILE}: ${COLOPHON_TEMPLATE} ${ERBBER_SCRIPT} + ${BUNDLE} exec ${RUBY} ${ERBBER_SCRIPT} -DISBN13=${EPUB_ISBN} --input ${COLOPHON_TEMPLATE} > ${.TARGET} + + +########## ########## ########## + +# ===== COMMON ===== + +CLEANFILES+= ${DEDICATION_OUT} +${DEDICATION_OUT}: ${THEMEDIR}/${THEME}-dedication-theme.yml ${DEDICATION_FILE} ${CUSTOM_PDF_CONVERTER} Gemfile.lock + ${BUNDLE} exec asciidoctor-pdf \ + -v \ + -r ${CUSTOM_PDF_CONVERTER} \ + -d book \ + -o ${.TARGET} \ + -a pdf-fontsdir=${FONTDIR} \ + -a pdf-theme=${THEME}-dedication \ + -a pdf-themesdir=${THEMEDIR} \ + -a media=print \ + ${DEDICATION_FILE} + +CLEANFILES+= ${ACKNOWLEDGMENTS_OUT} +${ACKNOWLEDGMENTS_OUT}: ${THEMEDIR}/${THEME}-acknowledgments-theme.yml ${ACKNOWLEDGMENTS_FILE} ${CUSTOM_PDF_CONVERTER} Gemfile.lock + ${BUNDLE} exec asciidoctor-pdf \ + -v \ + -r ${CUSTOM_PDF_CONVERTER} \ + -d book \ + -o ${.TARGET} \ + -a pdf-fontsdir=${FONTDIR} \ + -a pdf-theme=${THEME}-acknowledgments \ + -a pdf-themesdir=${THEMEDIR} \ + -a media=print \ + ${ACKNOWLEDGMENTS_FILE} + ########## ########## ########## -Gemfile.lock: +Gemfile.lock: Gemfile ${BUNDLE} install ########## ########## ########## |
