core/generate/image_step_builder.go
core/generate/image_step_builder.goBrowse 1970 files
454 tokens
1,750 bytes
Token encoding: o200k_base
Snapshot 21a254f
← Back to SKILL.md
1package generate2 3import (4 "github.com/railwayapp/railpack/core/plan"5 "github.com/railwayapp/railpack/core/resolver"6)7 8type ImageStepBuilder struct {9 DisplayName string10 Resolver *resolver.Resolver11 Packages []*resolver.PackageRef12 ResolveStepImage func(options *BuildStepOptions) string13 AptPackages []string14}15 16func (c *GenerateContext) NewImageStep(name string, resolveStepImage func(options *BuildStepOptions) string) *ImageStepBuilder {17 step := &ImageStepBuilder{18 DisplayName: c.GetStepName(name),19 Resolver: c.Resolver,20 ResolveStepImage: resolveStepImage,21 }22 23 c.Steps = append(c.Steps, step)24 25 return step26}27 28func (b *ImageStepBuilder) Default(name string, defaultVersion string) resolver.PackageRef {29 for _, pkg := range b.Packages {30 if pkg.Name == name {31 return *pkg32 }33 }34 35 pkg := b.Resolver.Default(name, defaultVersion)36 b.Packages = append(b.Packages, &pkg)37 return pkg38}39 40func (b *ImageStepBuilder) Version(name resolver.PackageRef, version string, source string) {41 b.Resolver.Version(name, version, source)42}43 44func (b *ImageStepBuilder) SetVersionAvailable(ref resolver.PackageRef, isVersionAvailable func(version string) bool) {45 b.Resolver.SetVersionAvailable(ref, isVersionAvailable)46}47 48func (b *ImageStepBuilder) Name() string {49 return b.DisplayName50}51 52func (b *ImageStepBuilder) Build(p *plan.BuildPlan, options *BuildStepOptions) error {53 image := b.ResolveStepImage(options)54 55 step := plan.NewStep(b.DisplayName)56 step.Secrets = []string{}57 step.Inputs = []plan.Layer{58 plan.NewImageLayer(image),59 }60 61 if len(b.AptPackages) > 0 {62 step.Commands = []plan.Command{63 options.NewAptInstallCommand(b.AptPackages),64 }65 }66 67 p.Steps = append(p.Steps, *step)68 69 return nil70}71