github.com/ablease/cli@v6.37.1-0.20180613014814-3adbb7d7fb19+incompatible/actor/v2v3action/manifest.go (about)

     1  package v2v3action
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/v2action"
     5  	"code.cloudfoundry.org/cli/actor/v3action"
     6  	"code.cloudfoundry.org/cli/actor/versioncheck"
     7  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccversion"
     8  	"code.cloudfoundry.org/cli/util/manifest"
     9  )
    10  
    11  type ManifestV2Actor interface {
    12  	CreateApplicationManifestByNameAndSpace(string, string) (manifest.Application, v2action.Warnings, error)
    13  }
    14  
    15  type ManifestV3Actor interface {
    16  	GetApplicationByNameAndSpace(string, string) (v3action.Application, v3action.Warnings, error)
    17  }
    18  
    19  func (actor *Actor) CreateApplicationManifestByNameAndSpace(appName string, appSpace string) (manifest.Application, Warnings, error) {
    20  	var allWarnings Warnings
    21  
    22  	manifestApp, v2warnings, err := actor.V2Actor.CreateApplicationManifestByNameAndSpace(appName, appSpace)
    23  	allWarnings = append(allWarnings, v2warnings...)
    24  	if err != nil {
    25  		return manifest.Application{}, allWarnings, err
    26  	}
    27  
    28  	currentVersion := actor.V3Actor.CloudControllerAPIVersion()
    29  	minimumVersion := ccversion.MinVersionManifestBuildpacksV3
    30  
    31  	meetsV3Version, err := versioncheck.IsMinimumAPIVersionMet(currentVersion, minimumVersion)
    32  	if err != nil {
    33  		return manifest.Application{}, allWarnings, err
    34  	}
    35  	if meetsV3Version {
    36  		v3App, v3warnings, v3Err := actor.V3Actor.GetApplicationByNameAndSpace(appName, appSpace)
    37  		allWarnings = append(allWarnings, v3warnings...)
    38  		if v3Err != nil {
    39  			return manifest.Application{}, allWarnings, v3Err
    40  		}
    41  
    42  		manifestApp.Buildpacks = v3App.LifecycleBuildpacks
    43  	}
    44  
    45  	return manifestApp, allWarnings, err
    46  }
    47  
    48  func (Actor) WriteApplicationManifest(manifestApp manifest.Application, manifestPath string) error {
    49  	return manifest.WriteApplicationManifest(manifestApp, manifestPath)
    50  }