Script para criar rascunhos no Jekyll
Script para criar arquivos de rascunho Jekyll / Markdown
Neste blog, eu uso o Jekyll para gerar as páginas estáticas e todas as minhas publicações são escritas utilizando o padrão Markdown e as faço no VS Code.
Com isso tem um processo que sempre se repete no início de toda publicação,
é a criação de uma arquivo de texto com a extensão .md
. O nome do arquivo
e o frontmatter tem um padrão que sempre se repete.
Se você na sabe o que é frontmatter, veja essa publicação.
O padrão que se repete é o seguinte:
- O nome do arquivo é sempre formado pela data de hoje, seguido do título da publicação. Tudo separado por hífens.
- O frontmatter do arquivo sempre tem os mesmos campos:
layout, title, subheading, description, author, categories, tags e date
.- O
layout
é semprepost
. - O
title
,subheading
edescri[tion
são iguais ao nome do arquivo. - O
author
é sempre o mesmo. - As
categories
e astags
dependem do tipo de publicação. - A
date
é sempre a data do dia de criação do arquivo.
- O
Dito isso, vou apresentar um script escrito na linguagem de programação Ruby que irá automatizar esse processo para mim. Tal script vai receber duas flags para informar a categoria e a tag da publicação em questão.
Para o recebimento das flags pelo o script, usei a biblioteca nativa do Ruby
chamada de OptionParse
. Muito simples de usar e a documentação se encontra
aqui.
Script
Importando bibliotecas necessárias
Primeiro começamos importando as bibliotecas que iremos utilizar no script. Nesse script precisaremos de duas.
-
require 'date'
: para tratar as datas, já que o nome do arquivo vai ter a data do dia de hoje -
require 'optparse'
: para o script aceitarflags
. Isso torna o script mais customizável.
require 'date'
require 'optparse'
Configurando o OptionParser
Depois precisamos configurar o OptionParser
e definir quais flags o script vai receber. Atenção:
como eu desejo obter o valor da flag preciso colocar em CAPS LOCK (maiúsculo) a chave após a flag (-cCATEGORY
).
Se eu quisesse apenas saber se uma flag foi adicionada no script, ou seja, o valor seria true
ou false
,
eu poderia colocar apenas a flag (-c
).
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: draft [options]"
opts.on("-cCATEGORY", "Define a categoria") do |c|
options[:category] = c
end
end.parse!
Criando o arquivo
O restante do script eu faço:
- Removo os espaços do nome do arquivo.
- Obtenho o diretório de trabalho
- Crio o arquivo.
- Adiciono o frontmatter.
Scritp completo
O script completo você pode ver abaixo:
#!/usr/bin/env ruby
require 'date'
require 'optparse'
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: draft [options]"
opts.on("-cCATEGORY", "Define a categoria") do |c|
options[:category] = c
end
end.parse!
filename = ARGV.join('-').downcase
path = %x( pwd ).split("\n")[0]
date = Date.today
date_formatted = date.strftime('%Y-%m-%d')
file = File.new "#{path}/_drafts/#{date}-#{filename}.md", "a"
file.write <<~TEXT
---
layout: post
title: #{ARGV.join(' ')}
subheading: #{ARGV.join(' ')}
description: #{ARGV.join(' ')}
author: Rock
categories: #{options[:category]}
tags:
date: #{date} 08\:00\:00 -0300
---
TEXT
file.close
Resumo (Wrap up)
Apresentei um script para automatizar a criação de arquivos para minha publicação. Fiz isso, pois uso um site estático com Jekyll, então essa etapa é bastante repetitiva. O ponto principal é a mentalidade de automatizar coisas que a gente repete no dia-a-dia. Pegue esse script como inspiração automatizar outras coisas no seu dia-a-dia.
Opa, tudo bem? Antes de você ir, te deixo aqui meu email: [email protected]
Teve alguma dúvida?
Você achou que eu escrevi alguma coisa errada? Erro de português?
Você tem uma forma melhor de resolver o problema?
Você tem alguma sugestão de tópico para eu escrever?
Ou se quiser conversar sobre qualquer outro assunto?
Vamos trocar uma ideia. Sinta-se livre para me enviar um email. Eu lhe responderei com o maior prazer!