tachikoma (5.2.0)のコードリーディングをしました。

tachikomaはrakeタスクを起動して使います。bundle updateをしたい場合はbundle exec rake tachikoma:run_bundlerを実行します。今回はrun_bundlerのパターンを追っていきます。

Rakeタスクは以下のように定義されています。いずれもTachikoma::Application.runを呼び出します。

Tachikoma::Application.runは#runを呼び出します。strategyのメソッド以外は共通で#load, #fetch #pull_requestを呼び出します。

#loadでは設定ファイルのロードとインスタンス変数への設定を行います。base_config_pathはgem自体に存在するデフォルト設定ファイルのパス、user_config_pathはプロジェクト全体の設定ファイルのパス、each_config_pathはプロジェクトごとに固有の設定ファイルのパスです。@build_forがプロジェクト名を表しています。

#fetchはgit cloneを使ってリモートリポジトリからソースコードを取得します。

#bundlerでは以下の処理を行います。

  • git configでユーザ名・メールアドレスを設定
  • bundle update用のブランチを生成
  • bundle update実行
  • Gemfile.lockファイルをgit add
  • git commit => git push

最後に#pull_requestでOctokit経由でプルリクエストを作成します。