Fix: Pass down context to CLI commands
This commit is contained in:
@@ -108,24 +108,24 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//nolint:gocognit,gocyclo
|
//nolint:gocognit,gocyclo
|
||||||
func _main(background context.Context, buildInfo models.BuildInformation,
|
func _main(ctx context.Context, buildInfo models.BuildInformation,
|
||||||
args []string, logger logging.Logger, os os.OS, osUser user.OSUser, unix unix.Unix,
|
args []string, logger logging.Logger, os os.OS, osUser user.OSUser, unix unix.Unix,
|
||||||
cli cli.CLI) error {
|
cli cli.CLI) error {
|
||||||
if len(args) > 1 { // cli operation
|
if len(args) > 1 { // cli operation
|
||||||
switch args[1] {
|
switch args[1] {
|
||||||
case "healthcheck":
|
case "healthcheck":
|
||||||
return cli.HealthCheck(background)
|
return cli.HealthCheck(ctx)
|
||||||
case "clientkey":
|
case "clientkey":
|
||||||
return cli.ClientKey(args[2:], os.OpenFile)
|
return cli.ClientKey(args[2:], os.OpenFile)
|
||||||
case "openvpnconfig":
|
case "openvpnconfig":
|
||||||
return cli.OpenvpnConfig(os)
|
return cli.OpenvpnConfig(os)
|
||||||
case "update":
|
case "update":
|
||||||
return cli.Update(args[2:], os)
|
return cli.Update(ctx, args[2:], os)
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("command %q is unknown", args[1])
|
return fmt.Errorf("command %q is unknown", args[1])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ctx, cancel := context.WithCancel(background)
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
const clientTimeout = 15 * time.Second
|
const clientTimeout = 15 * time.Second
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ type CLI interface {
|
|||||||
ClientKey(args []string, openFile os.OpenFileFunc) error
|
ClientKey(args []string, openFile os.OpenFileFunc) error
|
||||||
HealthCheck(ctx context.Context) error
|
HealthCheck(ctx context.Context) error
|
||||||
OpenvpnConfig(os os.OS) error
|
OpenvpnConfig(os os.OS) error
|
||||||
Update(args []string, os os.OS) error
|
Update(ctx context.Context, args []string, os os.OS) error
|
||||||
}
|
}
|
||||||
|
|
||||||
type cli struct{}
|
type cli struct{}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import (
|
|||||||
"github.com/qdm12/golibs/os"
|
"github.com/qdm12/golibs/os"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (c *cli) Update(args []string, os os.OS) error {
|
func (c *cli) Update(ctx context.Context, args []string, os os.OS) error {
|
||||||
options := settings.Updater{CLI: true}
|
options := settings.Updater{CLI: true}
|
||||||
var flushToFile bool
|
var flushToFile bool
|
||||||
flagSet := flag.NewFlagSet("update", flag.ExitOnError)
|
flagSet := flag.NewFlagSet("update", flag.ExitOnError)
|
||||||
@@ -41,7 +41,7 @@ func (c *cli) Update(args []string, os os.OS) error {
|
|||||||
if !flushToFile && !options.Stdout {
|
if !flushToFile && !options.Stdout {
|
||||||
return fmt.Errorf("at least one of -file or -stdout must be specified")
|
return fmt.Errorf("at least one of -file or -stdout must be specified")
|
||||||
}
|
}
|
||||||
ctx := context.Background()
|
|
||||||
const clientTimeout = 10 * time.Second
|
const clientTimeout = 10 * time.Second
|
||||||
httpClient := &http.Client{Timeout: clientTimeout}
|
httpClient := &http.Client{Timeout: clientTimeout}
|
||||||
storage := storage.New(logger, os, constants.ServersData)
|
storage := storage.New(logger, os, constants.ServersData)
|
||||||
|
|||||||
Reference in New Issue
Block a user