「Railsプロジェクトで使用しているOSSライセンスを出力したい」という要件があったので、OSSライセンスを pivotal/LicenseFinder を使用して調べてみました。
この記事を参考にしましたが、時間が経ってオプションが変わっていました。
pivotal/LicenseFinder
を使う
インストール
無駄な依存関係が増えてしまうため、あまり好ましくないけど Gemfile
に以下を追加して bundle install
を実行します。
gem 'license_finder', :group => :development
Gemfile
より直接インストールするこちらのほうが良いみたいです。
$ gem install license_finder
とりあえずライセンスの情報を出力してみます。
bundle exec license_finder report --format html --save license_report.html
次のようなHTMLが出力されました。
許可設定していないため全て unapproved となっています。
ライセンス許可を設定する
許可するにはサブコマンドの approvals
で gem を個別で許可するか、permitted_licenses
でライセンス単位で許可するのかの2種類があります。
個別は手間がかかるので、ライセンス単位で許可してみます。
bundle exec license_finder permitted_licenses add mit 'Simplified BSD' 'Apache 2.0' 'New BSD' WTFPL ruby
また、コマンドでライセンスの判断がつかないものは、該当プロジェクトのリポジトリ等でライセンスを調べて licenses add
サブコマンドで設定します。
bundle exec license_finder licenses add evma_httpserver lgpl2
再度レポートを出力すると、次のようになります。
設定ファイル
デフォルトだと doc/dependency_decisions.yml
に設定が書き込まれます。
プロジェクトの名前や許可したライセンス、削除したライセンスが書かれます。
licenses add
や、licenses remove
を実行するたびに設定ファイルの既存のものが上書きされず追加されていくので、ある程度最終形が決まったら手動で整理するほうがいいと思います。
まとめ
コマンドを実行するだけで一つずつライセンスを調べる必要が無いので便利ですが、もしかしたらライセンスを間違って判定してる可能性もあるかもしれないので、最終的には目視で確認したほうがいいかもしれません。