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 }