シェルスクリプトで開発案件ディレクトリの雛形とプレースホルダを作る
以下のサイトで紹介されている、Windows バッチでよくお世話になったスクリプトを Bash で作り直してみた。
サブルーチンを用いた実装になっているが、やっていることをものすごく単純化すると、
Mkdir 01_概要設計
Mkdir 02_基本設計
……
Cd 01_概要設計
Type Nul > TODO_概要設計書を作る
Cd ..\
Cd 02_基本設計
Type Nul > TODO_画面仕様書を作る
Cd ..\
ってなことをやっているバッチファイルだ。
コレをシェルスクリプトに移植してみた。
#!/bin/sh
# +-----------------------------------------------------------
# | 開発案件ディレクトリの雛形を作成する
# |
# | 本スクリプトを実行したカレントディレクトリ配下に、
# | 工程別のディレクトリおよびサブディレクトリの他、
# | ディレクトリの使い方を示すプレースホルダを作成する。
# +-----------------------------------------------------------
echo 開発案件ディレクトリの雛形を作成します。
read -p "実行してよろしいですか? (y/n) :" YN
if [ ! "${YN}" = "y" ]; then
echo "中止します。"
exit 1;
fi
mkdir -p \
01_プロジェクト計画 \
02_概要設計 \
03_基本設計/01_画面仕様書 \
03_基本設計/02_データモデル \
04_実装 \
05_総合テスト/01_テスト計画書 \
05_総合テスト/02_テスト仕様書 \
05_総合テスト/03_テスト証跡 \
05_総合テスト/04_テスト結果報告書 \
06_議事録 \
07_リリース \
99_その他
touch \
01_プロジェクト計画/TODO : プロジェクト計画書 \
02_概要設計/TODO : 概要設計書 \
03_基本設計/01_画面仕様書/TODO : 画面遷移図・画面仕様書 \
03_基本設計/02_データモデル/TODO : テーブル定義書・ER図 \
04_実装/00_MEMO : ソースはGitで管理・実装時の調査資料などを格納する \
06_議事録/00_MEMO : 「YYYYMMDD_会議名」の形式でディレクトリを作成する
find . | sort
echo 開発案件ディレクトリの雛形が完了しました。
このスクリプトを create-templates.sh
とかいう名前で保存しておいて、以下のように実行する。
$ sh ./create-templates.sh
実行確認は read
コマンドで。mkdir -p
でディレクトリ、touch
でプレースホルダとなる空ファイルを作るワケだが、引数を複数渡せばその分ディレクトリやファイルを作ってくれる。\
でエスケープするとコマンドを改行できるので、まとめて作ってしまおう。
ディレクトリの作成結果は tree
の代わりに find
と sort
で表示。
シェルスクリプト自身を削除させる処理は今回移植しなかった。というのも、シェルスクリプトはどこかに置いておき、カレントディレクトリさえ変えて実行すれば、使い回しができるからだ。
$ cd ~/path/to/work/dir/
$ sh ~/create-templates.sh
Windows バッチを書くぐらいなら、シェルスクリプトの方がもう少し柔軟で高機能かなぁ。