Criei um comando makefile para automatizar um fluxo de trabalho de publicação usando o Pandoc e o Generic Preprocessor (GPP) . É o seguinte:
TODAY = $(shell date +'%Y%m%d-%H%M')
MACROS = utils/gpp/macros.md
TEMPLATE = utils/template.docx
GPP = utils/gpp/gpp.exe
MACROS = utils/gpp/_macros.pp
METADATA = metadata.yaml
FM = content/frontmatter/*.md
MM = content/mainmatter/*.md
CONTENT = $(FM) $(MM)
default: docx
docx:
for file in $(CONTENT); do \
fifo=$$(mktemp -u); \
FIFOS+=("$$fifo"); \
cat $(MACROS) "$$file" | \
$(GPP) -DWORD -x -o "$$fifo" & \
done; \
pandoc metadata.yaml "$${FIFOS[@]}" -f markdown -t docx \
--citeproc --csl $(CSL) \
--reference-doc=$(TEMPLATE) \
--file-scope \
-o dist/$(TODAY).docx
Ele roda bem no terminal Git no Windows. No entanto, no meu sistema Ubuntu 24.04, estou recebendo um /bin/sh: 1: Syntax error: "(" unexpected
erro, e ele aponta para a linha for file in $(CONTENT); do \
. Eu tentei o seguinte sem sucesso:
for file in ( $(CONTENT) ); do \
for file in "$(CONTENT)"; do \
Por que isso está acontecendo e como posso corrigir isso? (Sim, estou ciente de que o link GPP precisa ser atualizado para o Ubuntu, mas ele nem chega a essa linha)
O repositório é público caso alguém queira experimentá-lo localmente: https://github.com/khalid-hussain/editorial-project-template