11package cli
22
33type defaultBuilder struct {
4- app * innerApp
4+ app * innerApp
5+ pipelineSettings * PipelineSettings
56}
67
78func NewBuilder (name string ) AppBuilder {
@@ -20,12 +21,17 @@ func (builder *defaultBuilder) SetUsage(usage string) AppBuilder {
2021 return builder
2122}
2223
24+ func (builder * defaultBuilder ) SetPipeline (settings * PipelineSettings ) AppBuilder {
25+ builder .pipelineSettings = settings
26+ return builder
27+ }
28+
2329func (builder * defaultBuilder ) AddCommand (command Command , opt ... AddCommandOption ) AppBuilder {
2430
2531 innerCommand := NewInnerCommand (command )
2632
2733 if innerCommand .Name == "" {
28- builder .app .Action = innerCommand . Action
34+ builder .app .innerCommand = innerCommand
2935 innerCommand = builder .app .innerCommand
3036
3137 for _ , option := range opt {
@@ -44,15 +50,17 @@ func (builder *defaultBuilder) Build() App {
4450 builder .useHelp ()
4551 builder .useVersion ()
4652
53+ builder .buildPipelines ()
54+
4755 return builder .app
4856}
4957
5058func (builder * defaultBuilder ) useHelp () {
5159
5260 builder .app .GlobalFlags = append (builder .app .GlobalFlags , helpGloblaFlag )
5361
54- innerHelpCmd := newHelp (builder .app )
55- builder .AddCommand (innerHelpCmd )
62+ cmd := newHelp (builder .app )
63+ builder .AddCommand (cmd )
5664}
5765
5866func (builder * defaultBuilder ) useVersion () {
@@ -61,6 +69,27 @@ func (builder *defaultBuilder) useVersion() {
6169
6270 builder .app .GlobalFlags = append (builder .app .GlobalFlags , versionGloblaFlag )
6371
64- innerHelpCmd := newVersion (builder .app )
65- builder .AddCommand (innerHelpCmd )
72+ cmd := newVersion (builder .app )
73+ builder .AddCommand (cmd )
74+ }
75+
76+ func (builder * defaultBuilder ) buildPipelines () {
77+ settings := builder .pipelineSettings
78+ if settings == nil {
79+ settings = & PipelineSettings {}
80+ }
81+
82+ settings .checkGlobalFlags = []PipelineAction {builder .app .checkGlobalFlags }
83+ settings .findCmd = builder .app .findCmdPipelineAction
84+ settings .resolveFlag = builder .app .resolveFlagStruct
85+ settings .runCmd = builder .app .runCmd
86+
87+ pipelines := []PipelineAction {}
88+ pipelines = append (pipelines , settings .BeferCheckGlobalFlags ... )
89+ pipelines = append (pipelines , settings .checkGlobalFlags ... )
90+ pipelines = append (pipelines , settings .findCmd )
91+ pipelines = append (pipelines , settings .resolveFlag )
92+ pipelines = append (pipelines , settings .runCmd )
93+
94+ builder .app .pipelines = pipelines
6695}
0 commit comments