func()

in internal/pkg/cli/svc_package.go [198:258]


func (o *packageSvcOpts) Execute() error {
	if !o.clientConfigured {
		if err := o.configureClients(); err != nil {
			return err
		}
	}
	if !o.allowWkldDowngrade {
		if err := validateWkldVersion(o.svcVersionGetter, o.name, o.templateVersion); err != nil {
			return err
		}
	}
	if o.outputDir != "" {
		if err := o.setOutputFileWriters(); err != nil {
			return err
		}
	}
	targetEnv, err := o.getTargetEnv()
	if err != nil {
		return nil
	}
	gen, err := o.getStackGenerator(targetEnv)
	if err != nil {
		return err
	}
	stack, err := o.getWorkloadStack(gen)
	if err != nil {
		return err
	}
	if o.showDiff {
		if err := diff(gen, stack.template, o.diffWriter); err != nil {
			var errHasDiff *errHasDiff
			if errors.As(err, &errHasDiff) {
				return err
			}
			return &errDiffNotAvailable{
				parentErr: err,
			}
		}
		return nil
	}
	if err := o.writeAndClose(o.templateWriter, stack.template); err != nil {
		return err
	}
	if err := o.writeAndClose(o.paramsWriter, stack.parameters); err != nil {
		return err
	}
	addonsTemplate, err := gen.AddonsTemplate()
	switch {
	case err != nil:
		return fmt.Errorf("retrieve addons template: %w", err)
	case addonsTemplate == "":
		return nil
	}
	// Addons template won't show up without setting --output-dir flag.
	if o.outputDir != "" {
		if err := o.setAddonsFileWriter(); err != nil {
			return err
		}
	}
	return o.writeAndClose(o.addonsWriter, addonsTemplate)
}