2021-01-20 11:35:48 +00:00
|
|
|
package imgworker
|
|
|
|
|
|
|
|
// FROM Slightly adapted from genuinetools/img worker
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
|
|
|
|
"github.com/moby/buildkit/session"
|
|
|
|
"github.com/moby/buildkit/session/filesync"
|
|
|
|
"github.com/moby/buildkit/session/testutil"
|
|
|
|
"github.com/pkg/errors"
|
|
|
|
)
|
|
|
|
|
|
|
|
func (c *Client) getSessionManager() (*session.Manager, error) {
|
|
|
|
if c.sessionManager == nil {
|
|
|
|
var err error
|
|
|
|
c.sessionManager, err = session.NewManager()
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return c.sessionManager, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// Session creates the session manager and returns the session and it's
|
|
|
|
// dialer.
|
|
|
|
func (c *Client) Session(ctx context.Context) (*session.Session, session.Dialer, error) {
|
|
|
|
m, err := c.getSessionManager()
|
|
|
|
if err != nil {
|
|
|
|
return nil, nil, errors.Wrap(err, "failed to create session manager")
|
|
|
|
}
|
2021-03-11 16:04:26 +00:00
|
|
|
sessionName := "luet"
|
2021-01-20 11:35:48 +00:00
|
|
|
s, err := session.NewSession(ctx, sessionName, "")
|
|
|
|
if err != nil {
|
|
|
|
return nil, nil, errors.Wrap(err, "failed to create session")
|
|
|
|
}
|
|
|
|
syncedDirs := make([]filesync.SyncedDir, 0, len(c.localDirs))
|
|
|
|
for name, d := range c.localDirs {
|
|
|
|
syncedDirs = append(syncedDirs, filesync.SyncedDir{Name: name, Dir: d})
|
|
|
|
}
|
|
|
|
s.Allow(filesync.NewFSSyncProvider(syncedDirs))
|
2021-03-11 16:04:26 +00:00
|
|
|
s.Allow(NewDockerAuthProvider(c.auth))
|
2021-01-20 11:35:48 +00:00
|
|
|
return s, sessionDialer(s, m), err
|
|
|
|
}
|
|
|
|
|
|
|
|
func sessionDialer(s *session.Session, m *session.Manager) session.Dialer {
|
|
|
|
// FIXME: rename testutil
|
|
|
|
return session.Dialer(testutil.TestStream(testutil.Handler(m.HandleConn)))
|
|
|
|
}
|