About me

About

2011-09-22

Como são feitos estes artigos?

Para colocar posts num blog — até porque a actividade de “blogar” não é propriamente a minha favorita nem o meu conceito de comunicação preferido — coloquei alguns pressupostos:

  1. editar os artigos em texto;
  2. ter facilidade na produção de alguns conteúdos específicos: trechos de código, links, formatações básicas;
  3. automatizar o mais possível as operações, o que inclui não ter que usar um browser para submeter um artigo.

Para fazer face aos pontos 1 e 2, a solução recaiu no formato markdown e no excelente programa pandoc, de John MacFarlane.

markdown é um formato de texto simples que usa anotações básicas para descrever formatações, à semelhança de outros formatos, como o reStructuredText que é usado para produzir toda a documentação do projecto Python, e na senda de uma série clássica de outros formatos de texto, mais ou menos complexos, desde o ROFF ao HTML.

pandoc é um excelente utilitário que aqui é usado para converter markdown no formato final de apresentação HTML.

Finalmente o ponto 3 foi resolvido usando a aplicação googlecl, que fornece um interface linha de comando para o blogger (e outros serviços do google). Perfeito.

Uma makefile orquestra tudo, permitindo integrar facilmente com outros utilitários de texto (mais uma vantagem de se usar texto). Neste caso o sed é usado para extrair a primeira linha do ficheiro para título, a segunda para a lista de etiquetas a associar ao artigo e tratar linhas começadas por “#” como comentários.

Makefile usada:

FILE=$$(ls -tr *.txt|tail -1)
T=/tmp/xgcl.html
PANDOC = pandoc -f markdown -t html --no-wrap
B_ID = --blog='tecnosutra'

all:

post-not:
tags="$$(sed -n 's/^tags: *//p' $(FILE))" && \
title="$$(sed -n '1p' $(FILE))" && \
sed '/^\(#\|tags:\)/d; 1d;' $(FILE) | \
iconv -f latin1 -t utf8 | $(PANDOC) -S -s > $(T) && \
echo google blogger post $(B_ID) --tags="$$tags" --title="$$title" $(T)

post:
tags="$$(sed -n 's/^tags: *//p' $(FILE))" && \
title="$$(sed -n '1p' $(FILE))" && \
sed '/^\(#\|tags:\)/d; 1d;' $(FILE) | \
iconv -f latin1 -t utf8 | $(PANDOC) -S -s > $(T) && \
google blogger post $(B_ID) --tags="$$tags" --title="$$title" $(T)

check:
aspell -d portugues -c $(FILE)

clean:
rm -f *.bak

Ligando as peças:

  1. edito um ficheiro de texto,
  2. make post-not para verificar se está tudo ok,
  3. make post e já está.

Simples.

Sem comentários:

Enviar um comentário