compare_linkerにcliつけたcompare_linker_wrapper作った

cli、ただしくはcompare_linkerにフィードバックすべきなんだろうけど、いろいろ煮詰めてないのと、(おそらく)思想的にやりたいことがちょっとずれるので、wrapperのgemにした。

compare_linker とは
(GitHubのhookを受けて) Gemfile.lockにdiffがあったら、diffとGitHubのtagを比較して、GitHubのcompare viewのlinkを作り、commentにpostする。
compare_linkercompare linker example

wrapperでは、内部をガチャガチャっと変更してる。

  • 外からオプションでformatter指定できるなどのcli機能、出力は標準出力
  • 変更前/変更後のdiffをGitHub APIから取ってくるところを localのgit repositoryから取るようにした
    ここが思想的に違うところで、compare_linkerはherokuないしjenkinsでhookを受けて起動する意図で作っているのに対し、wrapperはciサーバーのpost testで実行するイメージ。いかにcloneせずにapi操作だけで実現するか vs CIサーバーならコードはもうあるじゃない
  • 名前はGemfile.lock 決め打ちじゃない(オマケ), –fileオプションか引数にpathを渡す
compare-linker-wrapper 'example/Gemfile.lock' \
  --base origin/master \
  --formatter CompareLinker::Formatter::Markdown

* [octokit](https://github.com/octokit/octokit.rb): 3.8.0 => 3.8.1

compare-linker-wrapper 'example/Gemfile.lock' \
  --base origin/master \
  --formatter CompareLinker::Formatter::Text

octokit: https://github.com/octokit/octokit.rb 3.8.0 => 3.8.1

こんな出力になる。

実際の使い方は こんなふうにしようかなあと。

git diff --name-only origin/master \
 | grep ".*[gG]emfile.lock$" || RETURN_CODE=$?

case "$RETURN_CODE" in
 "" ) echo "found" ;;
 "1" )
   echo "not found"
   exit 0 ;;
 * )
   echo "Error"
   exit $RETURN_CODE ;;
esac

git diff --name-only origin/master \
 | grep ".*[gG]emfile.lock$" \
 | xargs compare-linker-wrapper --base origin/master \
    --formatter CompareLinker::Formatter::Markdown \
 | text-to-checkstyle \
 | saddler report \
    --require saddler/reporter/github \
    --reporter Saddler::Reporter::Github::PullRequestComment

text-to-checkstyle はこれから作る。
Edited: 2015-03-17 3:37 text_to_checkstyle 作ってリリースした。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中