Seperti biasa, judul artikel ini pun mungkin membingungkan, jadi izinkan saya untuk sedikit memberi mukadimah.
Selama ini tiap kali hendak membuat artikel baru, saya selalu membuat berkas markdown artikel dan memberi nama secara manual. Well, untuk header isinya tidak benar-benar manual karena telah ada template-nya di $HOME/Public, jadi tinggal klik kanan di folder _post repo blog ➜ New Document, lalu pilih template dan memberinya nama sesuai judul. Yeah, sedikit repot, namun tidak terasa karena saya tidak kerap menulis artikel.

Dan beberapa hari lalu, saya membaca sebuah artikel dari blog kawan tentang kisahnya membangun blog statis menggunakan jekyll. His blog is interesting, sebuah blog statis namun menerapkan banyak pernik yang membuatnya terlalu “sibuk” sebagai sebuah blog statis.
Kembali menyoal artikelnya. Yang menarik perhatian adalah bagaimana dia menggunakan bantuan rake untuk automasi proses pembuatan template artikel. Sounds useful. Namun setelah lanjut membaca, ternyata rake ini membutuhkan berkas pengaturan rakefile yang isinya lumayan rumit. Entah rumit karena memang dasarnya rumit, atau memang kawan saya ini memerlukan pengaturan membuat template yang rada rumit, yang pasti cukup memadamkan ketertarikan saya untuk menggunakannya.

rake mungkin agak rumit, namun membuat automasi pembuatan template artikel tetaplah menarik. Well, I have an idea. Seperti halnya ketika membuat launcher Telegram desktop di artikel lalu, kali ini pun saya akan membuat sebuh script sederhana yang mendayagunakan utilities yang sudah terpasang dalam sistem, seperti zenity, nautilus, dan bash.

Tidak berpanjang lebar, buat sebuah skrip bash dan letakkan di sembarang tempat asal bisa dipanggil melalui terminal. Berikut isi skripnya, misal kita beri nama ghpages.

#!/bin/bash

# Create Github Pages blog template

# VARIABLES --------------------------------------------------------------------

# Default PATH if script executed in command line
POSTDIR="$HOME/github/blog/rizaumami.github.io/_posts"
# Blog date
DATE=$(date +%F)

# FUNCTIONS --------------------------------------------------------------------

buat_template() {
# Get all the parameters
TITLE="$1"
# Make it lowercase
LTITLE="${TITLE,,}"
# Replace spaces by dash
CTITLE="${LTITLE// /-}"
# Post template
cat << HEAD > "$DATE-$CTITLE.md"
---
layout: post
title: $TITLE
tags: []
comments: true
---

HEAD

xdg-open "$DATE-$CTITLE.md"
}

print_help() {
  printf '\e[1;33m%s\n\e[0;39;49m' '
  Penggunaan:   ghpages [JUDUL ARTIKEL]
  '
  exit
}

# MAIN -------------------------------------------------------------------------

if [ $# -eq 0 ]; then
  JUDUL=$(zenity --entry \
                --title='Judul artikel' \
                --text='Ketik judul artikel yang akan ditulis:' \
                --entry-text '')

  if [[ $? -eq 0 ]]; then
    cd "$(printf ${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS})"
    buat_template "$JUDUL"
  else
    zenity --info --text='<i>Template</i> artikel <b>batal</b> dibuat karena Anda tidak memasukkan judul artikel.'
  fi
else
  case "$1" in
    -h|--help)
      print_help
    ;;
    *)
      cd "$POSTDIR"
      buat_template "$*"
    ;;
  esac
fi

Tidak ada yang aneh dari isi skripnya, jadi tidak perlu kiranya diberi penjelasan. Hanya saja, sesuaikan POSTDIR dengan letak map artikel. Menggunakan skrip di atas, kita bisa langsung membuat template artikel baru dengan cara memanggilnya dalam terminal menggunakan perintah ghpages Judul Artikel. Atau jika menginginkan sentuhan GUI, jalankan skrip tanpa argumen; ghpages.

Sekarang, kita tambahkan sedikit sentuhan agar skrip tidak melulu mesti dipanggil melalui terminal, namun bisa melalui context menu (klik kanan). Dan karena saya menggunakan Gnome, maka bisa mendayagunakan nautilus script.
Buat sebuah skrip nautilus bernama misalnya “New blog article” dan simpan di $HOME/.local/share/nautilus/scripts. Berikut isi skript tersebut

#!/bin/bash

ghpages

Nah, sekarang saya memiliki beberapa cara untuk memulai menulis artikel;

  • Menjalankan perintah ghpages Judul Artikel di dalam terminal.
  • Klik kanan dalam nautilus ➜ Scripts ➜ New blog article, lalu memberi judul artikel.

Kedua langkah di atas akan otomatis membuat berkas artikel dan membukanya dalam penyunting teks.

Happy writing…