github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/cnbutils/project/v02/project.go (about) 1 // Source: https://github.com/buildpacks/pack/blob/main/pkg/project/v02/project.go 2 package v02 3 4 import ( 5 "github.com/BurntSushi/toml" 6 "github.com/SAP/jenkins-library/pkg/cnbutils/project/types" 7 "github.com/buildpacks/lifecycle/api" 8 ) 9 10 type Buildpacks struct { 11 Include []string `toml:"include"` 12 Exclude []string `toml:"exclude"` 13 Group []types.Buildpack `toml:"group"` 14 Env Env `toml:"env"` 15 Build Build `toml:"build"` 16 Builder string `toml:"builder"` 17 Pre types.GroupAddition `toml:"pre"` 18 Post types.GroupAddition `toml:"post"` 19 } 20 21 type Build struct { 22 Env []types.EnvVar `toml:"env"` 23 } 24 25 // Env is deprecated: use `[[io.buildpacks.build.env]]` instead. see https://github.com/buildpacks/pack/pull/1479 26 type Env struct { 27 Build []types.EnvVar `toml:"build"` 28 } 29 30 type Project struct { 31 ID string `toml:"id"` 32 Name string `toml:"name"` 33 Licenses []types.License `toml:"licenses"` 34 Metadata map[string]interface{} `toml:"metadata"` 35 SchemaVersion string `toml:"schema-version"` 36 } 37 38 type IO struct { 39 Buildpacks Buildpacks `toml:"buildpacks"` 40 } 41 42 type Descriptor struct { 43 Project Project `toml:"_"` 44 IO IO `toml:"io"` 45 } 46 47 func NewDescriptor(projectTomlContents string) (types.Descriptor, error) { 48 versionedDescriptor := &Descriptor{} 49 _, err := toml.Decode(projectTomlContents, &versionedDescriptor) 50 if err != nil { 51 return types.Descriptor{}, err 52 } 53 54 // backward compatibility for incorrect key 55 env := versionedDescriptor.IO.Buildpacks.Build.Env 56 if env == nil { 57 env = versionedDescriptor.IO.Buildpacks.Env.Build 58 } 59 60 return types.Descriptor{ 61 Project: types.Project{ 62 ID: versionedDescriptor.Project.ID, 63 Name: versionedDescriptor.Project.Name, 64 Licenses: versionedDescriptor.Project.Licenses, 65 }, 66 Build: types.Build{ 67 Include: versionedDescriptor.IO.Buildpacks.Include, 68 Exclude: versionedDescriptor.IO.Buildpacks.Exclude, 69 Buildpacks: versionedDescriptor.IO.Buildpacks.Group, 70 Env: env, 71 Builder: versionedDescriptor.IO.Buildpacks.Builder, 72 Pre: versionedDescriptor.IO.Buildpacks.Pre, 73 Post: versionedDescriptor.IO.Buildpacks.Post, 74 }, 75 Metadata: versionedDescriptor.Project.Metadata, 76 SchemaVersion: api.MustParse("0.2"), 77 }, nil 78 }