func()

in internal/pkg/cli/task_run.go [351:448]


func (o *runTaskOpts) Validate() error {
	if o.generateCommandTarget != "" {
		if o.nFlag >= 2 {
			return errors.New("cannot specify `--generate-cmd` with any other flag")
		}
	}

	if o.count <= 0 {
		return errNumNotPositive
	}

	if o.groupName != "" {
		if err := basicNameValidation(o.groupName); err != nil {
			return err
		}
	}

	if o.image != "" && o.isDockerfileSet {
		return errors.New("cannot specify both `--image` and `--dockerfile`")
	}

	if o.image != "" && o.dockerfileContextPath != "" {
		return errors.New("cannot specify both `--image` and `--build-context`")
	}

	if o.image != "" && o.dockerfileBuildArgs != nil {
		return errors.New("cannot specify both `--image` and `--build-args`")
	}

	if o.isDockerfileSet {
		if _, err := o.fs.Stat(o.dockerfilePath); err != nil {
			return fmt.Errorf("invalid `--dockerfile` path: %w", err)
		}
	}

	if o.dockerfileContextPath != "" {
		if _, err := o.fs.Stat(o.dockerfileContextPath); err != nil {
			return fmt.Errorf("invalid `--build-context` path: %w", err)
		}
	}

	if noOS, noArch := o.os == "", o.arch == ""; noOS != noArch {
		return fmt.Errorf("must specify either both `--%s` and `--%s` or neither", osFlag, archFlag)
	}
	if err := o.validatePlatform(); err != nil {
		return err
	}

	if o.cpu <= 0 {
		return errCPUNotPositive
	}

	if o.memory <= 0 {
		return errMemNotPositive
	}

	if err := o.validateFlagsWithCluster(); err != nil {
		return err
	}

	if err := o.validateFlagsWithDefaultCluster(); err != nil {
		return err
	}

	if err := o.validateFlagsWithSubnets(); err != nil {
		return err
	}

	if err := o.validateFlagsWithWindows(); err != nil {
		return err
	}

	if o.appName != "" {
		if err := o.validateAppName(); err != nil {
			return err
		}
	}

	if o.env != "" {
		if err := o.validateEnvName(); err != nil {
			return err
		}
	}

	for _, value := range o.secrets {
		if !isSSM(value) && !isSecretsManager(value) {
			return fmt.Errorf("must specify a valid secrets ARN")
		}
	}

	if o.envFile != "" {
		if filepath.Ext(o.envFile) != envFileExt {
			return fmt.Errorf("environment file %s specified in --%s must have a %s file extension", o.envFile, envFileFlag, envFileExt)
		}
	}

	return nil
}