in internal/pkg/cli/pipeline_deploy.go [119:198]
func newDeployPipelineOpts(vars deployPipelineVars) (*deployPipelineOpts, error) {
sessProvider := sessions.ImmutableProvider(sessions.UserAgentExtras("pipeline deploy"))
defaultSession, err := sessProvider.Default()
if err != nil {
return nil, fmt.Errorf("default session: %w", err)
}
store := config.NewSSMStore(identity.New(defaultSession), ssm.New(defaultSession), aws.StringValue(defaultSession.Config.Region))
prompter := prompt.New()
ws, err := workspace.Use(afero.NewOsFs())
if err != nil {
return nil, err
}
wsAppName := tryReadingAppName()
if vars.appName == "" {
vars.appName = wsAppName
}
opts := &deployPipelineOpts{
ws: ws,
pipelineDeployer: deploycfn.New(defaultSession, deploycfn.WithProgressTracker(os.Stderr)),
region: aws.StringValue(defaultSession.Config.Region),
deployPipelineVars: vars,
store: store,
prog: termprogress.NewSpinner(log.DiagnosticWriter),
prompt: prompter,
diffWriter: os.Stdout,
sessProvider: sessProvider,
sel: selector.NewWsPipelineSelector(prompter, ws),
codestar: cs.New(defaultSession),
templateVersion: version.LatestTemplateVersion(),
pipelineStackConfig: func(in *deploy.CreatePipelineInput) stackConfiguration {
return stack.NewPipelineStackConfig(in)
},
newSvcListCmd: func(w io.Writer, appName string) cmd {
return &listSvcOpts{
listWkldVars: listWkldVars{
appName: appName,
},
sel: selector.NewAppEnvSelector(prompt.New(), store),
list: &list.SvcListWriter{
Ws: ws,
Store: store,
Out: w,
ShowLocalSvcs: true,
OutputJSON: true,
},
}
},
newJobListCmd: func(w io.Writer, appName string) cmd {
return &listJobOpts{
listWkldVars: listWkldVars{
appName: appName,
},
sel: selector.NewAppEnvSelector(prompt.New(), store),
list: &list.JobListWriter{
Ws: ws,
Store: store,
Out: w,
ShowLocalJobs: true,
OutputJSON: true,
},
}
},
wsAppName: wsAppName,
svcBuffer: &bytes.Buffer{},
jobBuffer: &bytes.Buffer{},
}
opts.configureDeployedPipelineLister = func() deployedPipelineLister {
// Initialize the client only after the appName is asked.
return deploy.NewPipelineStore(rg.New(defaultSession))
}
opts.pipelineVersionGetter = func(appName, name string, isLegacy bool) (versionGetter, error) {
return describe.NewPipelineStackDescriber(appName, name, isLegacy)
}
return opts, nil
}