バッジ?
GitHubのREADME.mdに貼られているよく見るアレです。
http://shields.io/解決したいこと
現在参照しているブランチのバッジを表示したい。
README.mdでは、「現在のブランチ名」を解決できない。
masterブランチ以外に生存期間の長いブランチが存在する場合には、指定ブランチのステータス(バッジ、リンク)を表示したくなりませんか?
解決方法
README.mdに必要なブランチのバッジを全部貼っておくのも手ですが、なんかカッコ悪い、という方に。
OwnService
'Current Branch'を解決するサービスを起こす。
元ネタ : http://stackoverflow.com/questions/18673694/referencing-current-branch-in-github-readme-md
HTTP_REFERERを参照して、'Current Branch'を解決することができるようです。
HerokuなどのPaasの力をお借りして、サクッとサービスしちゃいましょう。
サンプルアプリコード
適当にアレンジしてください。
require 'sinatra'
get '/' do
# support only GitHub
env['HTTP_REFERER'] =~ /https:\/\/github.com\/.*\/tree\/(.*)$/
branch = $1 || "master"
400 unless params[:redirect_url]
redirect_url = CGI.unescape(params[:redirect_url])
redirect redirect_url.gsub(/REPLACE_THIS/, branch)
end
README.md
埋め込みコードを修正する。
バッジURLをリダイレクトURLとして、自身のサービスへリクエストするように修正する。
サンプルコード
とあるTravis CIバッジの埋め込みコードを変換するコードサンプル。
適当にアレンジしてください。
embeded = "[![Build Status](https://travis-ci.org/arukoh/signauth.svg?branch=master)](https://travis-ci.org/arukoh/signauth)"
# => "[![Build Status](https://travis-ci.org/arukoh/signauth.svg?branch=master)](https://travis-ci.org/arukoh/signauth)"
embeded =~ /^\[!\[.+\]\((.+)\)\]\(.+\)/
# => 0
replace_url = $1
# => "https://travis-ci.org/arukoh/signauth.svg?branch=master"
redirect_url = CGI.escape(redirect_url.sub(/branch=.+/, "branch=REPLACE_THIS"))
# => "https%253A%252F%252Ftravis-ci.org%252Farukoh%252Fsignauth.svg%253Fbranch%253DREPLACE_THIS"
embeded.sub(replace_url, "https://OWN_SERVICE_HOST/?redirect_url=#{redirect_url}")
# => "[![Build Status](https://OWN_SERVICE_HOST/?redirect_url=https%253A%252F%252Ftravis-ci.org%252Farukoh%252Fsignauth.svg%253Fbranch%253DREPLACE_THIS)](https://travis-ci.org/arukoh/signauth)"
関連
- GitHub Markdown Help
- https://help.github.com/articles/markdown-basics
- https://help.github.com/articles/github-flavored-markdown
- バッジ作成サービス : Shields IO http://shields.io/
-
GitHubで「バッジ」を集めよう from arukoh