出張の帰りのフライトが10時間以上あったので簡単なツールをつくってみました.
余談ですが Windows PC しかなかったので,Windows PC + golang + gVim で書いてみました.Go 言語は標準ライブラリだけでもぐりぐり書けてなかなか良いですね.久々の Windows でのコーディングでしたが特に問題ありませんでした.
GitHub の issue/PR テンプレート機能
最近 issue / PR のテンプレート機能が実装されたみたいです.リポジトリ直下か .github
ディレクトリのどちらかに ISSUE_TEMPLATE.md
および PULL_REQUEST_TEMPLATE.md
を置いておくと,issue や PR 作成時にそのテンプレートが入力フォームにデフォルトでセットされます.
Issue and Pull Request templates - GitHub Blog
また,以前からある CONTRIBUTING.md
も .github
ディレクトリの中に置けるようです.
.github
ディレクトリを生成するコマンド dot-github
前々からほしいなーと思っていた機能だったのでさっそく使いたいところですが,毎度似たようなテンプレートを各リポジトリにつくるのも手間だなぁということでテンプレートジェネレータをつくりました.これで元になるファイルだけ dotfiles なりで管理しておけば,他の PC などからでも一発でテンプレートが生成できます.
下記のように go get
するとインストールできると思います.
$ go get github.com/rhysd/dot-github
テンプレートは ~/.github
内に置きます.他の場所に置きたいときは $DOT_GITHUB_HOME
環境変数をセットすることで置き場所を変更できます.
~/.github
内に置けるテンプレート生成ファイルは次の通りです.ファイルが存在しない場合は単純に生成をスキップします.
ファイル名 | 説明 |
---|---|
ISSUE_TEMPLATE.md |
Issue 用に使われるテンプレート |
PULL_REQUEST_TEMPLATE.md |
PR 用に使われるテンプレート |
ISSUE_AND_PULL_REQUEST_TEMPLATE.md |
Issue および PR で上記のテンプレートが無い場合に使われる共通のテンプレート |
CONTRIBUTING.md |
コントリビュートガイドライン用のテンプレート |
dot-github
コマンドによって上記のテンプレートファイルからリポジトリ内に .github
が自動生成されます.
$ cd your-repo $ dot-github
.github
内に生成されるファイルは Go 言語標準の text/template
テンプレートを使ってテンプレート生成ファイルから生成されます.
Package template - The Go Programming Language
標準の機能に加えて,下記の変数が使用可能です.
変数名 | 型 | 説明 |
---|---|---|
.IsIssue |
boolean | ISSUE_TEMPLATE.md として展開される時に True |
.IsPullRequest |
boolean | PULL_REQUEST_TEMPLATE.md として展開される時に True |
.IsContributing |
boolean | CONTRIBUTING.md として展開される時に True |
.RepoName |
string | リポジトリ名 |
.RepoUser |
string | リポジトリ所持者の名前 |
text/template
の {{if}}
などを使って重複を省いて issue と PR 共用のテンプレートを書いても良いですし,最初から別々にテンプレートを書いても良いです.
生成例
使用するテンプレート
~/.github/ISSUE_AND_PULL_REQUEST_TEMPLATE.md
{{if .IsIssue}} ### Expected Behavior ### Actual Behavior {{end}} {{if .IsPullRequest}} ### Fix or Enhancement? - [ ] All tests passed {{end}} ### Environment - OS: Write here - Go version: Write here
~/.github/CONTRIBUTING.md
Thank you for contributing to {{.RepoName}}! ========================================= Please follow issue/PR template.
生成されたファイル
/path/to/your-repo/.github/ISSUE_TEMPLATE.md
### Expected Behavior ### Actual Behavior ### Environment - OS: Write here - Go version: Write here
/path/to/your-repo/.github/PULL_REQUEST_TEMPLATE.md
### Fix or Enhancement? - [ ] All tests passed ### Environment - OS: Write here - Go version: Write here
/path/to/your-repo/.github/CONTRIBUTING.md
Thank you for contributing to my-project! ========================================= Please follow issue/PR template.
まとめ
GitHub に追加された issue / PR テンプレート機能をさっと使えるようにジェネレータをつくってみました.Go 言語の流儀に則ってちゃんとテストも書いてみたので,僕みたいにリポジトリつくりまくって毎度わざわざテンプレート書くのがめんどいみたいな人はぜひともお試しください.
yak shaving 気味ですが,勢いがあったのでつくってしまいました.新幹線内とか飛行機内だと割と手が動きやすいのはどうしてなんでしょうね…