1
0
mirror of https://github.com/ssh-vault/ssh-vault.git synced 2025-04-19 07:42:18 +03:00
ssh-vault/edit.go
2016-10-09 00:47:52 +02:00

37 lines
670 B
Go

package sshvault
import (
"io/ioutil"
"os"
"os/exec"
)
// Edit opens $EDITOR default to vi
func (v *vault) Edit(data []byte) ([]byte, error) {
tmpfile, err := ioutil.TempFile("", v.Fingerprint)
if err != nil {
return nil, err
}
defer Shred(tmpfile.Name())
err = ioutil.WriteFile(tmpfile.Name(), data, 0600)
if err != nil {
return nil, err
}
editor := os.Getenv("EDITOR")
if editor == "" {
editor = "vi"
}
cmd := exec.Command(editor, tmpfile.Name())
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
err = cmd.Run()
if err != nil {
return nil, err
}
b, err := ioutil.ReadFile(tmpfile.Name())
if err != nil {
return nil, err
}
return b, nil
}