2019年8月25日日曜日

開発環境

そういえばGo言語で外部プログラムを起動するプログラムを書いたことないし、せっかくだから調べたついでに簡単なコードを書いてみた。ジョークは思いつかない、というか考えてないからemacsとtypoしたらvimが起動するプログラムの方を検討。ただ、普段使ってるのはEmacsということで、vimとtypoとしたらemacsを起動するプログラム。

コード

package main

import (
 "log"
 "os/exec"
 "runtime"
)

func main() {
 var cmdPointer *exec.Cmd
 switch runtime.GOOS {
 case "windows":
  cmdPointer = exec.Command("cmd", "/c",
   `C:\msys64\mingw64\bin\emacs.exe`)
 case "darwin":
  cmdPointer = exec.Command("open", "-a", "emacs")
 default:
  cmdPointer = exec.Command("emacs")
 }
 err := cmdPointer.Start()
 if err != nil {
  log.Fatal(err)
 }
}

入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal)

$ go build vim.go
$ ./vim
$ GOOS='windows' go build vim.go
$

WindowsはMSYS2でインストールしたEmacs。だから、環境や設定によってemacs.exeが場所が違うかも。

あと、実際に動作確認したOSはmacOS、Windowsのみ。一応、他のOS向けにswitch文のdefaultで設定しておいたけど、動くかどうかわ未確認。

当然、環境変数のPATHにビルドしたプログラムを置くと本当のvimが上書きされたり使えなくなってしまうから注意。

runtime.GOOSについては改訂2版 みんなのGo言語の第2章を参考にした。

1 コメント :

匿名さんのコメント...

紹介してくださりありがとうございます!

コメントを投稿