やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

GitHubAPIリポジトリ生成を改善してみた

以前、GitHubAPIでリポジトリ生成を自動化した。そのとき生じたいくつかの問題を改善した。

入手先

GitHub MEGA

開発環境

WebService

  • GitHub
    • ユーザ名
    • AccessToken

前回まで

バッチファイルでリポジトリ作成を自動化した。

課題

課題 解決案
× パラメータにすべき項目が整理できていない 何を使ってリクエストするか、どこから値を得るか、によって変わる。まだHTTPリクエスト実行環境もはっきり決められないため未定。
× パラメータ値を定義し、取得する方法を確立したい q,jqコマンドを使ってcsvjsonから取得する方法もある。sqlite3を用いる方法もあり。どうするか未定。
× パラメータ値が多重定義されてしまっている .batと.shの連携ができないから問題になる。
リポジトリ名のエラーチェックができていない VBScriptで一応解決できる。.batとの連携をもっと綺麗にやりたい。
× コミットメッセージにUTF8な日本語を送信したい GitHubでなくGitの問題。どうしたものか。
認証をBasicからAccessTokenにしたい 今回解決した。
× バッチファイル数が4つもあって邪魔 今回の件で解決できるかも?

改善点

  • .shでなく.batで実装した
    • .shを呼ぶための.batファイルが不要になった
  • 引数を受け取る.batにした
    • .batと.shの両方でユーザ名を記入する必要が無くなった
  • 認証をBasicからAccessTokenにした
    • パスワード漏洩のリスクが減った
  • タイムゾーンを指定した
    • 日本時間が使えるはず
  • APIの応答をファイルに保存するようにした
    • リポジトリ情報をあとで煮るなり焼くなり好きにできる

改悪点

  • 実行するたびにファイル作成する
    • UTF-8のパラメータをPOSTする工夫である
      • WindowsのコンソールがCP932文字セット固定でありUTF-8が使えないせいである

.shで実装していたときは、UTF-8文字セットが使えるし、ファイルでなく標準出力も使えた。 今回はわざわざcurlでPOSTする直前から直後までの間だけ一時ファイルを作成し、すぐ削除している。 ほんの少しのデータなのに、ばかばかしい。

課題

達成していない課題に加え、以下の課題もある。

  • ローカルリポジトリ作成バッチとの連携
    • 以前、作成したFirstPush.batから今回作成したGiHubApi.Repositories.Create.batを呼び出せばいいだけだと思われる
  • リポジトリ名チェック処理が.batでできない
    • 以前、.vbsで解決した。.vbsと.bat、どう連携するか
  • API応答JSONをローカルで保存して一元管理したい

所感

WindowsでWebAPIを叩くbatとしてはこの程度が限界なのだろう。

問題はMicrosoft社製のソフトを使うことで生じる文字コード問題である。 .batの貧弱さはまだいい。curl.exeが優秀だからカバーしてくれている。 しかし、exeの実行環境(Windows/cmd.exe)がUTF-8を使えないのはどうしようもない。