Heroku CLI 7.0.2? のエラーを修正
Git for Windowsから最新版の Heroku CLI を起動するとエラーが発生。バージョンは下に書いてますけど、そもそもエラーが出るので確認できない。Power Shellからなら大丈夫。32ビット版でも64ビット版でも同様ですね。未確認ですが、MSYS とか Cygwinでも同じ現象が起きるんじゃないかなと思います。
とりあえずはインストールされたシェルスクリプトに1文字追加すれば治ります。
直接的な原因が分かったところでGitHubにはIssueを上げてひと安心。「さてIssueも上げたしForkしてCommitしてプルリクしてどや顔するかな相手は天下のセールスフォースドットコム・・・」と、ヤケに日曜朝から心拍数を上げたのですが(おちつけ自分)、結局どこを直せばよいのかわからなくてWatchだけして、そっとGitHubを閉じました。 が、なんと4時間後にはこの問題が改修されててIssueもClose。素早い対応ありがとうございますー。
インストール直後にエラー
Windows用Heroku CLIの最新版をインストールしてGit Bashから実行すると以下のエラーが発生しました。
$ heroku sed: -e expression #1, char 7: unterminated `s' command /c/Program Files/heroku/bin/heroku: line 4: ./../client/bin/heroku.cmd: No such file or directory
「sedのsコマンドが終わってない」と言っている。
原因究明
コマンドはC:\Program Files\heroku\bin\heroku
という名のシェルスクリプトなので中身を見てみると。
#!/bin/sh basedir=$(dirname "$(echo "$0" | sed -e 's,\,/,g')") "$basedir/../client/bin/heroku.cmd" "$@" ret=$? exit $ret
2行目で、sedでバックスラッシュ(円記号)をスラッシュに変換しようとしているが、バックスラッシュがエスケープされていませんね。
応急対策
これエスケープするだけで動くんじゃないかね?と
Git Bashを管理者権限で開いてvimで編集したところ、ホントにこれだけで正しく動くようになりました。 (Program Files 以下を変更するには管理者権限が必要)
バージョンは 7.0.2、、、ん?
バージョンは以下のように7.0.2だったのですが、これってホントにリリースバージョンなんですかね。 GitHubのリポジトリでは現時点でv6.16.16です。Windows用は別管理ってことはないと思うんだけど。
これ、ダウンロードページから公開しちゃいけないものを公開しちゃっているとかではないのかな。 よくわからなくなってきました。
$ heroku --version
heroku-cli/7.0.2 win32-x64 node-v9.11.1
とりあえずIssueはポスト
しかしまあ、しばしGoogle翻訳と格闘してから、とりあえずIssueをポストしておいた。
で、現在のリポジトリ内の /resources/exe/heroku
が問題のスクリプトなんだけど、不思議なことに半年前に追加されたときから、きちんとエスケープされている。
ということで、どこを直せばよいのかわかりません。インストーラを作るところか動作上の問題なのか。
まあ偉い人が直してくれるんだろう。なにしろ天下のセールスフォースドットコムだし。
追記)この記事書いた時点で既にIssueがクローズされていました。早っ!
修正箇所はやっぱりresources/exe/heroku
で。バックスラッシュが4つになっていましたわ。
二重にエスケープしなきゃなんなかったのかー。