chore(deps): implement github.com/qdm12/golibs/command locally (#2418)

This commit is contained in:
Quentin McGaw
2024-08-21 15:21:31 +02:00
committed by GitHub
parent 4d60b71583
commit a2b3d7e30c
26 changed files with 537 additions and 95 deletions

View File

@@ -0,0 +1,14 @@
package openvpn
import "os/exec"
type CmdStarter interface {
Start(cmd *exec.Cmd) (
stdoutLines, stderrLines <-chan string,
waitError <-chan error, startErr error)
}
type CmdRunStarter interface {
Run(cmd *exec.Cmd) (output string, err error)
CmdStarter
}

View File

@@ -2,19 +2,18 @@ package openvpn
import (
"github.com/qdm12/gluetun/internal/constants/openvpn"
"github.com/qdm12/golibs/command"
)
type Configurator struct {
logger Infoer
cmder command.RunStarter
cmder CmdRunStarter
configPath string
authFilePath string
askPassPath string
puid, pgid int
}
func New(logger Infoer, cmder command.RunStarter,
func New(logger Infoer, cmder CmdRunStarter,
puid, pgid int) *Configurator {
return &Configurator{
logger: logger,

View File

@@ -4,16 +4,15 @@ import (
"context"
"github.com/qdm12/gluetun/internal/configuration/settings"
"github.com/qdm12/golibs/command"
)
type Runner struct {
settings settings.OpenVPN
starter command.Starter
starter CmdStarter
logger Logger
}
func NewRunner(settings settings.OpenVPN, starter command.Starter,
func NewRunner(settings settings.OpenVPN, starter CmdStarter,
logger Logger) *Runner {
return &Runner{
starter: starter,
@@ -37,12 +36,10 @@ func (r *Runner) Run(ctx context.Context, errCh chan<- error, ready chan<- struc
select {
case <-ctx.Done():
<-waitError
close(waitError)
streamCancel()
<-streamDone
errCh <- ctx.Err()
case err := <-waitError:
close(waitError)
streamCancel()
<-streamDone
errCh <- err

View File

@@ -8,7 +8,6 @@ import (
"syscall"
"github.com/qdm12/gluetun/internal/constants/openvpn"
"github.com/qdm12/golibs/command"
)
var ErrVersionUnknown = errors.New("OpenVPN version is unknown")
@@ -18,8 +17,8 @@ const (
binOpenvpn26 = "openvpn2.6"
)
func start(ctx context.Context, starter command.Starter, version string, flags []string) (
stdoutLines, stderrLines chan string, waitError chan error, err error) {
func start(ctx context.Context, starter CmdStarter, version string, flags []string) (
stdoutLines, stderrLines <-chan string, waitError <-chan error, err error) {
var bin string
switch version {
case openvpn.Openvpn25:

View File

@@ -6,7 +6,7 @@ import (
)
func streamLines(ctx context.Context, done chan<- struct{},
logger Logger, stdout, stderr chan string,
logger Logger, stdout, stderr <-chan string,
tunnelReady chan<- struct{}) {
defer close(done)
@@ -16,10 +16,6 @@ func streamLines(ctx context.Context, done chan<- struct{},
errLine := false
select {
case <-ctx.Done():
// Context should only be canceled after stdout and stderr are done
// being written to.
close(stdout)
close(stderr)
return
case line = <-stdout:
case line = <-stderr: