route/vendor/github.com/Xe/x/tools/dokku/main.go

62 lines
1.0 KiB
Go

package main // christine.website/go/tools/dokku
import (
"flag"
"fmt"
"log"
"os"
"strings"
"code.google.com/p/gcfg"
"github.com/hypersleep/easyssh"
)
var (
cfgPath = flag.String("cfg", "", "configuration path, default is ~/.dokku.cfg")
serverName = flag.String("server", "default", "server to use out of dokku config")
)
func main() {
flag.Parse()
if *cfgPath == "" {
*cfgPath = os.Getenv("HOME") + "/.dokku.cfg"
}
var cfg Config
err := gcfg.ReadFileInto(&cfg, *cfgPath)
if err != nil {
log.Fatal(err)
}
var server *Server
var ok bool
if server, ok = cfg.Server[*serverName]; !ok {
log.Fatalf("server %s not defined in configuration file %s", *serverName, *cfgPath)
}
if server.User == "" {
server.User = "dokku"
}
if server.SSHKey == "" {
server.SSHKey = "/.ssh/id_rsa"
}
ssh := &easyssh.MakeConfig{
User: server.User,
Server: server.Host,
Key: server.SSHKey,
}
command := strings.Join(flag.Args(), " ")
res, err := ssh.Run(command)
if err != nil {
log.Fatal(err)
}
fmt.Print(res)
}