gematはRubyプロジェクトにおけるGemfileをエクスポートするCLIツールである。
- GitHub repository
- https://github.com/kijimaD/gemat/
Gemfileを見やすい形で、有益な情報をエクスポートできるようにすること。 プロジェクトで使われているgemを、学びやすくすること。
Bundlerで取ってくる以外の情報源も使えるようにする。 たとえばGitHubの元リポジトリへのリンクがあると便利である。
情報表示以上のことは行わない。
使っているgemのソースコードを把握したいとき、逐一検索してリポジトリを見つけるのが不便である。
gemat md
Progress: |====================================================================|
| gem | Repo URL |
| ---- | ---- |
| csv | https://github.com/ruby/csv |
| httpclient | https://github.com/nahi/httpclient |
| rake | https://github.com/ruby/rake |
| rspec | https://github.com/rspec/rspec |
| rubocop | https://github.com/rubocop/rubocop |
| ruby-progressbar | https://github.com/jfelchner/ruby-progressbar |
| simplecov | https://github.com/simplecov-ruby/simplecov |
| thor | https://github.com/erikhuda/thor |
Name | Phone | Age |
---|---|---|
Peter | 1234 | 17 |
Anna | 4321 | 25 |
name | repo_uri | |
httpclient | https://github.com/nahi/httpclient | |
rake | https://github.com/ruby/rake | |
ruby-progressbar | https://github.com/jfelchner/ruby-progressbar | |
thor | https://github.com/erikhuda/thor | |
rspec | https://github.com/rspec/rspec | |
rubocop | https://github.com/rubocop/rubocop | |
simplecov | https://github.com/simplecov-ruby/simplecov | |
vcr | https://github.com/vcr/vcr | |
webmock | https://github.com/bblimke/webmock |
Emacsでは折返しオフにして表示すると見やすい。
(setq-default truncate-lines t)
gemat csv -i "other_Gemfile" -o "output.csv"-f "index,name,repo,star,latest_version,current_version"
- 第1引数(required) : 出力形式(md, CSV)
- i(optional) : 使用するGemfileの指定
- o(optional) : 出力ファイルの指定
- f(optional) : 出力カラムの指定
Thorを用いる。
Gemfileの解析には、bundlerがDSLを実行した結果集めた情報を使う。 自分でGemfile読み込みを書かなくてすむ。自分で書くと仕様に追従しないといけないので現実的でない。
gemfileから読み取った名前を元に、rubygemsにアクセスして情報を取る。 jsonが返ってくる。
jsonで取った情報を加工して、オブジェクトに格納する。 1gemで1オブジェクト。
カラム指定を解析して、フォーマットするときに利用する。
各形式でフォーマットして文字列にする。
Formatterが出力した文字列を指定方法で出力する。
- 標準出力
- ファイル
progress barは常に標準出力。 生成したものをどれで出力するか、の指定。
- Ruby
- RSpec
rubygemsにはあまり役に立つ情報がない。 GitHubへ取りにいけば、面白いのがある可能性。 スター数とか、作者とか。
今のところGitLabには対応してない。 根本的に、リポジトリを判別するロジックが雑なのでどうにかしたい。
columnを指定できるのはいいのだが、表示は内部で使ってる文字列そのままなのでどうにかしたい。
- GitHub repository
- https://github.com/kijimaD/gemat/