Skip to content

Instantly share code, notes, and snippets.

@FujiHaruka
Last active May 16, 2019 07:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save FujiHaruka/f7b54f4602735d8e6674c0b1ce1df93c to your computer and use it in GitHub Desktop.
Save FujiHaruka/f7b54f4602735d8e6674c0b1ce1df93c to your computer and use it in GitHub Desktop.
ドキュメントの翻訳が最新コミットに追従しているかをチェックするバッジ

ドキュメントの翻訳が最新コミットに追従しているかをチェックするバッジ

英語のドキュメントを翻訳していると、翻訳が古くなることがある。本家ドキュメントが GitHub で管理されていれば、本家が更新されて翻訳が古くなったときに、差分だけを翻訳し直して最新に追従するといったことができる。そうするためには、翻訳ドキュメントの中に本家ドキュメントのコミットハッシュ値を書き残しておけばよい。本家が更新されたら、最新のコミットと、翻訳が参照しているコミットを見比べる。

このやり方を応用して、翻訳ドキュメントが本家の最新コミットに追従しているかどうかをひと目でわかるようにしたのが、このバッジである。

translation badges

バッジには本家ドキュメントのコミットハッシュ値が含まれていて、その値が本家の最新のコミットハッシュ値を一致していれば up to date と表示され、一致していなければ out of date と表示される。

使い方

https://shields.io のカスタム JSON エンドポイントを利用している。バッジの表示までに 2 ステップあって、まず JSON を返す URL を組み立てて、つぎにその URL を shields.io のエンドポイントにわたす。

(1) JSON を返す URL を組み立てる

GitHub 上にある本家ドキュメントを指定するために、JSON エンドポイントに以下の情報を与える。

  • リポジトリ名
  • ブランチ (またはタグ) 名
  • コミットのハッシュ値
  • ドキュメントのファイルパス

これらを JSON エンドポイントにクエリ文字列で与える。

https://gezf7g7pd5.execute-api.ap-northeast-1.amazonaws.com/default/source_up_to_date?owner=${OWNER}&repos=${REPOS}&ref=${REF}&path=${PATH}&commit_hash=${COMMIT_HASH}
  • ${OWNER}, ${REPOS} ... リポジトリの所有者、リポジトリ名
  • ${REF} ... ブランチ (またはタグ) 名
  • ${PATH} ... ドキュメントのファイルパス
  • ${COMMIT_HASH} ... コミットのハッシュ値

たとえば、

であれば、以下のようになる。

https://gezf7g7pd5.execute-api.ap-northeast-1.amazonaws.com/default/source_up_to_date?owner=FujiHaruka&repos=test-repo-for-up-to-date-badge&ref=master&path=DOC.md&commit_hash=9c747933ce75a996a555cda02bfb376b1b357d71

実際に curl でリクエストを送ってみると JSON が返ってくる。

$ curl "https://gezf7g7pd5.execute-api.ap-northeast-1.amazonaws.com/default/source_up_to_date?owner=FujiHaruka&repos=test-repo-for-up-to-date-badge&ref=master&path=DOC.md&commit_hash=9c747933ce75a996a555cda02bfb376b1b357d71"
{"schemaVersion":1,"label":"translation","message":"up to date","color":"brightgreen","isError":false}

(2) shields.io のエンドポイントに URL 渡す

(1) で作った URL を shields.io のエンドポイントの渡す。クエリ文字列で渡すときに URL エンコードする必要がある。(1) の例を使うと、URL 全体としては以下のようになる。

https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fgezf7g7pd5.execute-api.ap-northeast-1.amazonaws.com%2Fdefault%2Fsource_up_to_date%3Fowner%3DFujiHaruka%26repos%3Dtest-repo-for-up-to-date-badge%26ref%3Dmaster%26path%3DDOC.md%26commit_hash%3D9c747933ce75a996a555cda02bfb376b1b357d71

あとは、Markdown の画像として表示すればよい。

![badge](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fgezf7g7pd5.execute-api.ap-northeast-1.amazonaws.com%2Fdefault%2Fsource_up_to_date%3Fowner%3DFujiHaruka%26repos%3Dtest-repo-for-up-to-date-badge%26ref%3Dmaster%26path%3DDOC.md%26commit_hash%3D9c747933ce75a996a555cda02bfb376b1b357d71)

これを表示すると、

badge

となる。

試しにコミットのハッシュ値を最新でないものに置き換えてみよう。

![badge](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fgezf7g7pd5.execute-api.ap-northeast-1.amazonaws.com%2Fdefault%2Fsource_up_to_date%3Fowner%3DFujiHaruka%26repos%3Dtest-repo-for-up-to-date-badge%26ref%3Dmaster%26path%3DDOC.md%26commit_hash%3Dbd2e08c549079451b18522510e597c452e67c69c)

これを表示すると、

badge

となる。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment