Go 1.12 で、実行したプロセスの ERRORLEVEL を得るためのメソッド:"os".ProcessState.ExitCode()
が追加されたので、対応の準備をすすめていて気づいたのだけれども…
昔の Go言語だと、0 以外の ERRORLEVEL を受け取ると、"os/exec".Cmd.Run()
で fmt.Errorf("exit status %d",(ERRORLEVEL値) )
みたいな error を返していたように思うんだけど、1.11~だと、そういう挙動が見られなくなった。
いつ、どうして変わったんだろう… golang の issue を検索したが、数が多すぎて分からん汗
それなりに便利だったので、NYAGOS では、その error をそのまま表示していたんだけれども、いつの間にはそういう挙動がなくなってしまった。 バッチファイル実行の際のコードが EXE ファイル実行の時の挙動に合わせて ERRORLEVEL 値を表示するような形になっていたので、今度は逆に EXE ファイル実行の際の挙動も古い挙動に合わせて、わざわざ「exit status %d」と表示するように修正した。
挙動が変わった原因については、暇を見て、おいおい調べよう(続く…かな?)
(追記)
タイトルとか間違えちゃった。
(旧) 昔の Go は exit status が errors.Fmt("exit status %d",ERRORLEVEL) で返ってきたような
(新) 昔の Go は exit status が fmt.Errorf("exit status %d",ERRORLEVEL) で返ってきたような