func newDeleteAppOpts()

in internal/pkg/cli/app_delete.go [66:151]


func newDeleteAppOpts(vars deleteAppVars) (*deleteAppOpts, error) {
	store, err := config.NewStore()
	if err != nil {
		return nil, fmt.Errorf("new config store: %w", err)
	}

	ws, err := workspace.New()
	if err != nil {
		return nil, fmt.Errorf("new workspace: %w", err)
	}

	provider := sessions.NewProvider()
	defaultSession, err := provider.Default()
	if err != nil {
		return nil, fmt.Errorf("default session: %w", err)
	}

	return &deleteAppOpts{
		deleteAppVars: vars,
		spinner:       termprogress.NewSpinner(log.DiagnosticWriter),
		store:         store,
		ws:            ws,
		sessProvider:  provider,
		cfn:           cloudformation.New(defaultSession),
		prompt:        prompt.New(),
		s3: func(session *session.Session) bucketEmptier {
			return s3.New(session)
		},
		svcDeleteExecutor: func(svcName string) (executor, error) {
			opts, err := newDeleteSvcOpts(deleteSvcVars{
				skipConfirmation: true, // always skip sub-confirmations
				name:             svcName,
				appName:          vars.name,
			})
			if err != nil {
				return nil, err
			}
			return opts, nil
		},
		jobDeleteExecutor: func(jobName string) (executor, error) {
			opts, err := newDeleteJobOpts(deleteJobVars{
				skipConfirmation: true,
				name:             jobName,
				appName:          vars.name,
			})
			if err != nil {
				return nil, err
			}
			return opts, nil
		},
		envDeleteExecutor: func(envName string) (executeAsker, error) {
			opts, err := newDeleteEnvOpts(deleteEnvVars{
				skipConfirmation: true,
				appName:          vars.name,
				name:             envName,
			})
			if err != nil {
				return nil, err
			}
			return opts, nil
		},
		taskDeleteExecutor: func(envName, taskName string) (executor, error) {
			opts, err := newDeleteTaskOpts(deleteTaskVars{
				app:              vars.name,
				env:              envName,
				name:             taskName,
				skipConfirmation: true,
			})
			if err != nil {
				return nil, err
			}
			return opts, nil
		},
		deletePipelineRunner: func() (cmd, error) {
			opts, err := newDeletePipelineOpts(deletePipelineVars{
				appName:            vars.name,
				skipConfirmation:   true,
				shouldDeleteSecret: true,
			})
			if err != nil {
				return nil, err
			}
			return opts, nil
		},
	}, nil
}