【hugo】ブログの記事をもっと書きやすくする

Mainroadっていうテーマでこのブログは運営されているが、ちょっと気になる点がいくつかあったので修正するぜ!って話

content/post/ に全記事入るのは流石に見にくくないか問題

正直これは見にくいし、エディタのタブとして開くのに毎回スクロールするのがとてもストレス。

気になる点

  • content/post/に今までの記事全部入っているので加筆・修正の時に記事探すのが面倒
    • 新規作成した記事は <記事名>.mdなので日付順にソートされずにさらに探しにくい。
    • 記事を書き始める時一々このファイル群を見たくない

見にくい

やること

  • 投稿済みの記事を見返す機会は少ないので、content/post/に入ってても全然いいが、
    • 今書いている記事は違う所に入れたい。
    • 記事を新規作成する時、<日付>_<記事名>.mdの形式にしたい(あとで見やすいので)

解決案

Shellを書こう。

manager.shっていう名前でこんなの書きました。

#!/bin/bash
new_article () {
  if [ $# -ne 1 ]; then
  echo "usage: ./manager.sh new <name>"
  exit 1
  fi

  # shellcheck disable=SC2091
  if $(echo "$1" | grep .md > /dev/null) ; then
      echo "do not include .md"
      exit 1
  fi

  # 参考: https://blog.katty.in/4967
  mkdir -p content/tmp
  # shellcheck disable=SC2006
  # 参考: https://qiita.com/mochizukikotaro/items/f3a78d631595f9744a75
  today=`date "+%Y%m%d"`
  hugo new "tmp/${today}_${1}.md"
}

deploy () {
  mv -v content/tmp/* content/post/
}


allocator() {
  if [ "$1" = "new" ]; then
    new_article "$2"
  elif [ "$1" = "publish" ]; then
    deploy
  else
    echo "usage: ./manager.sh { new | publish } { command argument }"
  fi
}

allocator "$1" "$2"

./manager.sh new <タイトル>でいい感じに日付とかを入れてくれます。

tmpフォルダに入っているので、書き終わったら./manager.sh publishでpostフォルダに移行できます。

ただ、このままだとブログのタイトルにも日付がついてしまうので消す。

archetypes/default.mdのtitle部分は以下の様に書き換えた

title: "{{ index (split (replace .Name "-" " " | title) "_") 1 }}" これで日付とアンダーバーが含まれなくなる。

とりあえずこんな感じで運用してみることにする。

Share on: