func newDeleteAppOpts()

in internal/pkg/cli/app_delete.go [76:157]


func newDeleteAppOpts(vars deleteAppVars) (*deleteAppOpts, error) {
	provider := sessions.ImmutableProvider(sessions.UserAgentExtras("app delete"))
	defaultSession, err := provider.Default()
	if err != nil {
		return nil, fmt.Errorf("default session: %w", err)
	}
	prompter := prompt.New()
	store := config.NewSSMStore(identity.New(defaultSession), ssm.New(defaultSession), aws.StringValue(defaultSession.Config.Region))
	return &deleteAppOpts{
		deleteAppVars: vars,
		spinner:       termprogress.NewSpinner(log.DiagnosticWriter),
		store:         store,
		sessProvider:  provider,
		cfn:           cloudformation.New(defaultSession, cloudformation.WithProgressTracker(os.Stderr)),
		prompt:        prompter,
		s3: func(session *session.Session) bucketEmptier {
			return s3.New(session)
		},
		pipelineLister: deploy.NewPipelineStore(rg.New(defaultSession)),
		sel:            selector.NewAppEnvSelector(prompter, store),
		svcDeleteExecutor: func(appName, svcName string) (executor, error) {
			opts, err := newDeleteSvcOpts(deleteSvcVars{
				skipConfirmation: true, // always skip sub-confirmations
				name:             svcName,
				appName:          appName,
			})
			if err != nil {
				return nil, err
			}
			return opts, nil
		},
		jobDeleteExecutor: func(appName, jobName string) (executor, error) {
			opts, err := newDeleteJobOpts(deleteJobVars{
				skipConfirmation: true,
				name:             jobName,
				appName:          appName,
			})
			if err != nil {
				return nil, err
			}
			return opts, nil
		},
		envDeleteExecutor: func(appName, envName string) (executeAsker, error) {
			opts, err := newDeleteEnvOpts(deleteEnvVars{
				skipConfirmation: true,
				appName:          appName,
				name:             envName,
			})
			if err != nil {
				return nil, err
			}
			return opts, nil
		},
		taskDeleteExecutor: func(appName, envName, taskName string) (executor, error) {
			opts, err := newDeleteTaskOpts(deleteTaskVars{
				app:              appName,
				env:              envName,
				name:             taskName,
				skipConfirmation: true,
			})
			if err != nil {
				return nil, err
			}
			return opts, nil
		},
		pipelineDeleteExecutor: func(appName, pipelineName string) (executor, error) {
			opts, err := newDeletePipelineOpts(deletePipelineVars{
				appName:            appName,
				name:               pipelineName,
				skipConfirmation:   true,
				shouldDeleteSecret: true,
			})
			if err != nil {
				return nil, err
			}
			return opts, nil
		},
		existingWorkSpace: func() (wsAppManagerDeleter, error) {
			return workspace.Use(afero.NewOsFs())
		},
	}, nil
}