github.com/buildpacks/pack@v0.33.3-0.20240516162812-884dd1837311/pkg/project/v02/project.go (about) 1 package v02 2 3 import ( 4 "github.com/BurntSushi/toml" 5 "github.com/buildpacks/lifecycle/api" 6 7 "github.com/buildpacks/pack/pkg/project/types" 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 // 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 Name string `toml:"name"` 32 Licenses []types.License `toml:"licenses"` 33 Metadata map[string]interface{} `toml:"metadata"` 34 SchemaVersion string `toml:"schema-version"` 35 } 36 37 type IO struct { 38 Buildpacks Buildpacks `toml:"buildpacks"` 39 } 40 41 type Descriptor struct { 42 Project Project `toml:"_"` 43 IO IO `toml:"io"` 44 } 45 46 func NewDescriptor(projectTomlContents string) (types.Descriptor, toml.MetaData, error) { 47 versionedDescriptor := &Descriptor{} 48 tomlMetaData, err := toml.Decode(projectTomlContents, &versionedDescriptor) 49 if err != nil { 50 return types.Descriptor{}, tomlMetaData, err 51 } 52 53 // backward compatibility for incorrect key 54 env := versionedDescriptor.IO.Buildpacks.Build.Env 55 if env == nil { 56 env = versionedDescriptor.IO.Buildpacks.Env.Build 57 } 58 59 return types.Descriptor{ 60 Project: types.Project{ 61 Name: versionedDescriptor.Project.Name, 62 Licenses: versionedDescriptor.Project.Licenses, 63 }, 64 Build: types.Build{ 65 Include: versionedDescriptor.IO.Buildpacks.Include, 66 Exclude: versionedDescriptor.IO.Buildpacks.Exclude, 67 Buildpacks: versionedDescriptor.IO.Buildpacks.Group, 68 Env: env, 69 Builder: versionedDescriptor.IO.Buildpacks.Builder, 70 Pre: versionedDescriptor.IO.Buildpacks.Pre, 71 Post: versionedDescriptor.IO.Buildpacks.Post, 72 }, 73 Metadata: versionedDescriptor.Project.Metadata, 74 SchemaVersion: api.MustParse("0.2"), 75 }, tomlMetaData, nil 76 }