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  }