route/vendor/github.com/Xe/gluanetrc/netrc.go

82 lines
1.3 KiB
Go

package gluanetrc
import (
"os"
"path/filepath"
"github.com/dickeyxxx/netrc"
lua "github.com/yuin/gopher-lua"
luar "layeh.com/gopher-luar"
)
var n *netrc.Netrc
func init() {
var err error
fname := filepath.Join(os.Getenv("HOME"), ".netrc")
fout, err := os.Create(fname)
if err != nil {
panic(err)
}
fout.Close()
n, err = netrc.Parse(filepath.Join(fname))
if err != nil {
panic(err)
}
}
var exports = map[string]lua.LGFunction{
"machine": machine,
"save": save,
"remove_machine": removeMachine,
"add_machine": addMachine,
}
func addMachine(L *lua.LState) int {
name := L.ToString(1)
login := L.ToString(2)
password := L.ToString(3)
n.AddMachine(name, login, password)
L.Push(luar.New(L, n.Machine(name)))
return 1
}
func removeMachine(L *lua.LState) int {
name := L.ToString(1)
n.RemoveMachine(name)
return 0
}
func machine(L *lua.LState) int {
name := L.ToString(1)
m := n.Machine(string(name))
L.Push(luar.New(L, m))
return 1
}
func save(L *lua.LState) int {
n.Save()
return 0
}
// Preload loads netrc into a gopher-lua's LState module registry.
func Preload(L *lua.LState) {
L.PreloadModule("netrc", Loader)
}
// Loader loads the netrc modules.
func Loader(L *lua.LState) int {
mod := L.SetFuncs(L.NewTable(), exports)
L.Push(mod)
return 1
}