このブログもHugoを利用して書いているのですが、
記事を書いてデプロイ!ってなったときに、下書き状態だった…
ってのが結構あって、調べてもチェックするスクリプトが見つからなかったので、 スクリプト書く練習がてら下書き状態のファイル名を出力するスクリプトを書いてみました。



こんな感じです。

  • checkdrafts.sh
#!/bin/bash
set -u

warn() {
  YELLOW='\033[0;32m'
  DEFAULT_COLOR='\033[0m'
  echo -e "${YELLOW}[Warning] Draft found : $1 ${DEFAULT_COLOR}"
}
export -f warn

echo "Checking drafts..."
find content -type f -name "*.md" | xargs grep -l -E 'draft ?= ?true' | \
xargs basename | xargs -n 1 -I % bash -c "warn %"

contentディレクトリ以下の、”.md”ファイルをfindコマンドで探して、
grepコマンドで、draft ?= ?true正規表現 にヒットするファイルに絞込み、
黄色の文字で標準出力する関数に流し込んでいます。

これを応用すれば、下書き状態のものがあればデプロイを中断するとかも出来そうですが、 下書きのまま書き溜めておきたいこともあるかもなので、自分はデプロイの課程で下書き状態のものがあるかどうかだけ出力するようにしています。