以前、GitHubAPIでリポジトリ生成を自動化した。そのとき生じたいくつかの問題を改善した。
入手先
開発環境
- Windows XP Pro SP3 32bit
- cmd.exe
- curl.exe
- 7.24.0
WebService
- GitHub
- ユーザ名
- AccessToken
前回まで
バッチファイルでリポジトリ作成を自動化した。
課題
解 | 課題 | 解決案 |
---|---|---|
× | パラメータにすべき項目が整理できていない | 何を使ってリクエストするか、どこから値を得るか、によって変わる。まだHTTPリクエスト実行環境もはっきり決められないため未定。 |
× | パラメータ値を定義し、取得する方法を確立したい | q,jqコマンドを使ってcsvやjsonから取得する方法もある。sqlite3を用いる方法もあり。どうするか未定。 |
× | パラメータ値が多重定義されてしまっている | .batと.shの連携ができないから問題になる。 |
△ | リポジトリ名のエラーチェックができていない | VBScriptで一応解決できる。.batとの連携をもっと綺麗にやりたい。 |
× | コミットメッセージにUTF8な日本語を送信したい | GitHubでなくGitの問題。どうしたものか。 |
○ | 認証をBasicからAccessTokenにしたい | 今回解決した。 |
× | バッチファイル数が4つもあって邪魔 | 今回の件で解決できるかも? |
改善点
- .shでなく.batで実装した
- .shを呼ぶための.batファイルが不要になった
- 引数を受け取る.batにした
- .batと.shの両方でユーザ名を記入する必要が無くなった
- 認証をBasicからAccessTokenにした
- パスワード漏洩のリスクが減った
- タイムゾーンを指定した
- 日本時間が使えるはず
- APIの応答をファイルに保存するようにした
- リポジトリ情報をあとで煮るなり焼くなり好きにできる
改悪点
.shで実装していたときは、UTF-8文字セットが使えるし、ファイルでなく標準出力も使えた。 今回はわざわざcurlでPOSTする直前から直後までの間だけ一時ファイルを作成し、すぐ削除している。 ほんの少しのデータなのに、ばかばかしい。
課題
達成していない課題に加え、以下の課題もある。
- ローカルリポジトリ作成バッチとの連携
- 以前、作成したFirstPush.batから今回作成した
GiHubApi.Repositories.Create.bat
を呼び出せばいいだけだと思われる
- 以前、作成したFirstPush.batから今回作成した
- リポジトリ名チェック処理が.batでできない
- 以前、.vbsで解決した。.vbsと.bat、どう連携するか
- API応答JSONをローカルで保存して一元管理したい
- リポジトリ生成とは異なる課題なので一旦保留
所感
WindowsでWebAPIを叩くbatとしてはこの程度が限界なのだろう。
問題はMicrosoft社製のソフトを使うことで生じる文字コード問題である。 .batの貧弱さはまだいい。curl.exeが優秀だからカバーしてくれている。 しかし、exeの実行環境(Windows/cmd.exe)がUTF-8を使えないのはどうしようもない。