62 lines
1.0 KiB
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)
|
|
}
|