github.com/arunkumar7540/cli@v6.45.0+incompatible/actor/v7pushaction/create_push_plans.go (about)

     1  package v7pushaction
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/util/manifestparser"
     5  )
     6  
     7  // CreatePushPlans returns a set of PushPlan objects based off the inputs
     8  // provided. It's assumed that all flag and argument and manifest combinations
     9  // have been validated prior to calling this function.
    10  func (actor Actor) CreatePushPlans(appNameArg string, spaceGUID string, orgGUID string, parser ManifestParser, overrides FlagOverrides) ([]PushPlan, error) {
    11  	var pushPlans []PushPlan
    12  
    13  	eligibleApps, err := actor.getEligibleApplications(parser, appNameArg)
    14  	if err != nil {
    15  		return nil, err
    16  	}
    17  
    18  	for _, manifestApplication := range eligibleApps {
    19  		plan := PushPlan{
    20  			OrgGUID:   orgGUID,
    21  			SpaceGUID: spaceGUID,
    22  		}
    23  
    24  		// List of PreparePushPlanSequence is defined in NewActor
    25  		for _, updatePlan := range actor.PreparePushPlanSequence {
    26  			var err error
    27  			plan, err = updatePlan(plan, overrides, manifestApplication)
    28  			if err != nil {
    29  				return nil, err
    30  			}
    31  		}
    32  
    33  		pushPlans = append(pushPlans, plan)
    34  	}
    35  
    36  	return pushPlans, nil
    37  }
    38  
    39  func (Actor) getEligibleApplications(parser ManifestParser, appNameArg string) ([]manifestparser.Application, error) {
    40  	if parser.ContainsManifest() {
    41  		return parser.Apps(appNameArg)
    42  	}
    43  	manifestApp := manifestparser.Application{}
    44  	manifestApp.Name = appNameArg
    45  	return []manifestparser.Application{manifestApp}, nil
    46  }