Githubのコードから使用しているOSS一覧を収集するツールを作ったので、使い方やデモを紹介します。
機能
Githubの指定したリポジトリからOSSライブラリ管理ファイル(Gemfile, package.jsonなど)をクロールし、管理ファイルに書かれたOSSの情報をとってきてcsvやtext形式で出力します。
事前にGithubのtokenを取得しておけば、privateリポジトリの情報もクロールできます。
※ライブラリ管理ファイル以外で管理されているOSS(直接ライブラリが埋め込まれている)や、OSSソースコードのコピーは検出できませんのでご注意ください。
開発プロセスに「OSSを使用するときはライブラリ管理ファイルを使用すること」がルール付けられている、もしくはレビューでこれが担保されているような場合は、OSSライセンス確認ツールとしてお使いいただきやすいかと思います。
個人開発時のOSSライセンスチェックとしても使いやすいかと思います。
2018年9月現在の機能一覧
- 対応source
- 対応ライブラリ管理ファイル:
- Gemfile (ruby gem)
- package.json (javascript npm)
- requirements.txt (python pip)
- 収集情報
- 出力形式
- csv
- text
インストール
python3 で動くので、python3環境を用意してください。
後は下記コマンドで git clone
するか、zipでリポジトリを落としてきます。
$ git clone https://github.com/kusuwada/libcollector.git
$ cd libcollector $ pip install -r requirements.txt
以上。
使い方
まずはサンプルを動かしてみる
$ cd libcollector $ python libcollector.py
これで、sampleとして kusuwada/libcollector のリポジトリのOSS一覧がcsv形式で出力されます。
数が少なくて物足りない場合は、 libcollector/settings.yml
を開いて、コメントアウトしてある vuejs/vue
などの公開リポジトリを入れて実行してみてください。
vuejs/vue リポジトリに対するクロール結果
事前準備
もしprivateリポジトリを対象にしたい場合や、高い頻度で回したい場合は、github access token for commandline
を取得しておきます。
取得方法は下記を参照。
GitHub Help: Authenticating to GitHub.
scope selectionではrepo
の権限を選択してください。
設定
libcollector/settings.yml
を編集します。
target_repositories
クロール対象のリポジトリを設定します。フォーマットは下記です。
{owner}/{repository}
例:
target_repositories: - kusuwada/node-slack-log-exporter - kusuwada/ruby-slack-log-exporter - requests/requests
プライベートリポジトリも同様に設定できます。
target_manager
クロール対象のライブラリ管理ファイルを指定できます。
基本的には初期設定で問題ないかと思いますが、特定の言語・特定の管理ファイルで管理されているOSSだけ収集したい・処理を高速化したいときは、不要なものを外してください。
output
出力形式を指定できます。出力形式は複数指定できます。指定フォーマットは下記になります。
{output_type}: {output_path}
optional_information
出力時に出力する情報を制限できます。
これらのoptionをすべてFalseにすると、ライブラリ名・バージョンのみの出力となります。また、ライブラリ情報を取りに行かないため処理が高速になります。
デモ
サンプルの vuejs/vue
リポジトリは javascript メインのリポジトリだったので、他の言語のリポジトリも。
sinatra/sinatra (ruby/Gemfile)
gunthercox/ChatterBot (python/requirements.txt)