シェルスクリプトで開発案件ディレクトリの雛形とプレースホルダを作る

以下のサイトで紹介されている、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 の代わりに findsort で表示。

シェルスクリプト自身を削除させる処理は今回移植しなかった。というのも、シェルスクリプトはどこかに置いておき、カレントディレクトリさえ変えて実行すれば、使い回しができるからだ。

$ cd ~/path/to/work/dir/
$ sh ~/create-templates.sh

Windows バッチを書くぐらいなら、シェルスクリプトの方がもう少し柔軟で高機能かなぁ。