aboutsummaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorChristine Dodrill <me@christine.website>2018-10-05 14:11:00 -0700
committerChristine Dodrill <me@christine.website>2018-10-05 14:31:22 -0700
commit2c85a708989624df6bb9eca0a77ceeda8cf05f28 (patch)
treef554937b8bc5c0ae72cd483e117cb88d3a58e75a /internal
parentc63e73391d634bdb25b3df1c582bb56b6d9a0963 (diff)
downloadx-2c85a708989624df6bb9eca0a77ceeda8cf05f28.tar.xz
x-2c85a708989624df6bb9eca0a77ceeda8cf05f28.zip
internal/minipaas: add Exec function
Diffstat (limited to 'internal')
-rw-r--r--internal/minipaas/minipaas.go25
1 files changed, 25 insertions, 0 deletions
diff --git a/internal/minipaas/minipaas.go b/internal/minipaas/minipaas.go
index 5632c3c..e08c8f0 100644
--- a/internal/minipaas/minipaas.go
+++ b/internal/minipaas/minipaas.go
@@ -38,3 +38,28 @@ func Dial() (*ssh.Client, error) {
return client, nil
}
+
+// Exec runs an arbitrary dokku command with OS standard input, output and error.
+func Exec(args string) error {
+ mp, err := Dial()
+ if err != nil {
+ return err
+ }
+ defer mp.Close()
+
+ sess, err := mp.NewSession()
+ if err != nil {
+ return err
+ }
+ defer sess.Close()
+ sess.Stdin = os.Stdin
+ sess.Stdout = os.Stdout
+ sess.Stderr = os.Stderr
+
+ err = sess.Run(args)
+ if err != nil {
+ return err
+ }
+
+ return nil
+}