Browse Source

check that the pull policy provided is a valid one
or is not missing when --pull is used

Signed-off-by: Guillaume Lours <[email protected]>

Guillaume Lours 2 years ago
parent
commit
b92981015e
1 changed files with 10 additions and 0 deletions
  1. 10 0
      cmd/compose/create.go

+ 10 - 0
cmd/compose/create.go

@@ -19,6 +19,7 @@ package compose
 import (
 	"context"
 	"fmt"
+	"slices"
 	"strconv"
 	"strings"
 	"time"
@@ -138,6 +139,9 @@ func (opts createOptions) GetTimeout() *time.Duration {
 
 func (opts createOptions) Apply(project *types.Project) error {
 	if opts.pullChanged {
+		if !opts.isPullPolicyValid() {
+			return fmt.Errorf("invalid --pull option %q", opts.Pull)
+		}
 		for i, service := range project.Services {
 			service.PullPolicy = opts.Pull
 			project.Services[i] = service
@@ -187,3 +191,9 @@ func (opts createOptions) Apply(project *types.Project) error {
 	}
 	return nil
 }
+
+func (opts createOptions) isPullPolicyValid() bool {
+	pullPolicies := []string{types.PullPolicyAlways, types.PullPolicyNever, types.PullPolicyBuild,
+		types.PullPolicyMissing, types.PullPolicyIfNotPresent}
+	return slices.Contains(pullPolicies, opts.Pull)
+}