486 文字
2 分
【Astro】新規記事を追加するコマンドを作る
このブログは現在Astroを用いて運用しています。記事は日付区切りのディレクトリ以下に作成しています。Astroに限った話ではありませんが、これが手動だと手間なので、記事をコマンドで作成できるようにしました。
シェルスクリプトで作る
今回はそこまでスクリプトに求める要件が多くなかったので、シェルスクリプトで作成してみました。
プロジェクトのルートディレクトリにpost_template.md
としてマークダウンファイルを作成するもとになる雛形を作成します。
# post_template.md
---
layout: '@layouts/MdxBlogPost.astro'
title: ""
description: ""
publishedAt: "[date]"
updatedDate: ""
---
同じくルートディレクトリにシェルスクリプトを作成します。
実行した日に対応する日付区切りのディレクトリを作成し、引数でファイル名を指定しています。
先程作成したテンプレートを所定の場所にコピーしています。publishedAtだけは、sedコマンドを利用して、ファイルを作成した日時に変更しています。
# create_post.sh
#!/bin/sh
# 引数チェック
if [ $# = 0 ]; then
echo 'Error: ファイル名を指定する引数が必要'
exit 1
fi
FILENAME=($1)
# スクリプトディレクトリの絶対パス
SCRIPT_DIR=$(cd $(dirname $0); pwd)
mkdir -p $SCRIPT_DIR/src/pages/blog/`date '+%Y/%m/%d'`
# 実行日時をもとにディレクトリ作成
YEAR=`date '+%Y'`
MONTH=`date '+%m'`
DAY=`date '+%d'`
cat "$SCRIPT_DIR/post_template.md" | sed -e "s/\[date\]/$YEAR-$MONTH-$DAY/g" > "$SCRIPT_DIR/src/pages/blog/$YEAR/$MONTH/$DAY/$FILENAME.md"
おわりに
今回は内容的にシンプルな要件だったので、シェルスクリプトを練習がてら使って作成しました。
もう少し複雑なものになってくると、シェルスクリプトだと読みづらくなってくるかと思います。そんな時に参考になりそうなのが、zennのCLIコードです。
さらに複雑なことがしたくなったら、こちらを参考に作成してみたいとおもいます。
後日以下の記事を見つけました。makefileで作成するのも良さそうです。
\てくのーと おすすめ書籍!/
プログラミングを楽しみ続けるためには健康は不可欠!
本書では如何に健康であり続けるかが科学的な情報とともに紹介されています。 →感想詳細はこちら!