@kyanny's blog

My thoughts, my life. Views/opinions are my own.

仕事で GitHub API を叩くちょっとしたスクリプトを書いたが、細々したところでことごとくハマって徒労感が酷かった。

  • GitHub CLI が便利なのでシェルスクリプトとして書き始めたが、レスポンス JSON を変数に入れて for ループで回して jq で後続の処理を・・・と思ったら JSON データ内の改行を含む文字列のせいで echo して後続の処理に繋げられない(改行部分でぶった切られてしまって JSON として invalid になってしまう)
  • 配列と連想配列を使ってどうにかやりくりしようとしたら macOS の /bin/bash はバージョン 3 系なので連想配列が使えない
  • シェルスクリプトでやるには込み入りすぎてるかと頭を切り替えて Node.js を使ったが(人に渡すものだったので JavaScript のほうが良いかと思って)、不慣れなせいで import は module じゃないと使えないだのビルトインの http モジュールは User-Agent をセットしないので GitHub API が 403 を返すだのと怒られ続けてすっかり嫌になる(おまけに Authorization ヘッダを Authentication と書き間違えてて Not Found エラーで悩んだり)
  • やはり Ruby でサクッと書くべきだったと悔い改めて octokit.rb を使うも、使う API エンドポイントのうち未対応のものがあって octokit.rb だけでは完結しないことが発覚
  • うんざりしながら net/http で書き下した

普段はできるだけビルトインライブラリだけで書くようにしてる(スクリプト単体で共有しやすいから)のに今日に限って欲をかいたせいでだいぶ無駄足を踏んだ。