]> ruderich.org/simon Gitweb - safcm/safcm.git/blobdiff - rpc/dial.go
Move embedded remote helpers to cmd/safcm/
[safcm/safcm.git] / rpc / dial.go
index c0c6cd4088b2859d758aa0d06cf64405a2b70a16..c098714cc0759388dd32e0d723819c4b4c598665 100644 (file)
@@ -24,18 +24,20 @@ import (
        "encoding/hex"
        "fmt"
        "io"
+       "io/fs"
        "os/exec"
        "strconv"
        "strings"
 
        "ruderich.org/simon/safcm"
-       "ruderich.org/simon/safcm/remote"
 )
 
 type SSHConfig struct {
        Host      string
        User      string // optional
        SshConfig string // optional
+
+       RemoteHelpers fs.FS
 }
 
 func (c *Conn) DialSSH(cfg SSHConfig) error {
@@ -43,6 +45,11 @@ func (c *Conn) DialSSH(cfg SSHConfig) error {
                return fmt.Errorf("cannot reuse Conn")
        }
 
+       if cfg.RemoteHelpers == nil {
+               return fmt.Errorf("SSHConfig.RemoteHelpers not set")
+       }
+       c.remoteHelpers = cfg.RemoteHelpers
+
        remote := cfg.Host
        if cfg.User != "" {
                remote = cfg.User + "@" + cfg.Host
@@ -208,9 +215,9 @@ f
                return err
        }
 
-       // Get embedded helper binary
-       helper, err := remote.Helpers.ReadFile(
-               fmt.Sprintf("helpers/%s-%s", goos, goarch))
+       // Get remote helper binary
+       helper, err := fs.ReadFile(c.remoteHelpers,
+               fmt.Sprintf("%s-%s", goos, goarch))
        if err != nil {
                return fmt.Errorf("remote not built for GOOS/GOARCH %s/%s",
                        goos, goarch)