dispatch/commands/config.go

50 lines
880 B
Go
Raw Normal View History

package commands
import (
"log"
"os"
"os/exec"
2016-03-01 00:51:26 +00:00
"github.com/spf13/cobra"
2016-01-04 18:26:32 +00:00
"github.com/khlieng/dispatch/storage"
)
var (
configCmd = &cobra.Command{
Use: "config",
Short: "Edit config file",
2015-05-25 03:15:32 +00:00
Run: func(cmd *cobra.Command, args []string) {
if editor := findEditor(); editor != "" {
2016-01-04 18:26:32 +00:00
process := exec.Command(editor, storage.Path.Config())
2015-05-25 03:15:32 +00:00
process.Stdin = os.Stdin
process.Stdout = os.Stdout
process.Stderr = os.Stderr
process.Run()
} else {
log.Println("Unable to locate editor")
}
},
}
editors = []string{"nano", "notepad", "vi", "emacs"}
)
func findEditor() string {
if editor := os.Getenv("EDITOR"); editor != "" {
editor, err := exec.LookPath(editor)
if err == nil {
return editor
}
}
for _, editor := range editors {
editor, err := exec.LookPath(editor)
if err == nil {
return editor
}
}
return ""
}