python の cookiecutter を --no-input --config-file を使って対話式を避ける2021年05月15日 12時20分10秒

現在のプロジェクトは Python を使って、マイクロサービス型のアーキテクチャで、進めている。そのため Python 型の細かいプログラムが多い。Python の依存関係や、ビルド形式、サーバの基礎部分など、どのプログラムにも共通に必要だが、プログラム言語的な構造的に共有して使えない部分も多い。

そこで、Cookie Cutter の様な物がある。料理の抜き型と一緒で、同じ形を大量に作るためのプログラム。

プロジェクトを始めるに当たって、プログラムの雛型を用意はした。しかし、進行と共に、不具合が見付かったり、改良したりで、各々のレポジトリが次第にかけ離れていく。そのうち、どれが正しくて、どれが間違っているのかも判らなくなってくる。そのため、Cookie Cutter 等で作った共通部分は、定期的に全体との同期をとって、いく必要がある。

その同期の方法として使っているのが、Cookie Cutter を更新した後に、Cookie Cutter をプロジェクト毎に走らせ直して、特定のファイルを再度、配送する方法をとる。一気に大量処理をするのと、間違い防止には対話形式を止めたい。

Cookie Cutter のプロジェクトを見ると、一番上に config.yaml がある。ここに、プロジェクト毎に変えたい変数を保持しているので、これを元にする。各々の変数をプロジェクト毎にファイルに書き出し、それを --no-input と --config-file オプションと共に渡す。

% cookiecutter https://example.com/cookiecutter-project.git --no-input --config-file config.yaml