core/providers/cpp/cpp.go
core/providers/cpp/cpp.goBrowse 1970 files
334 tokens
1,262 bytes
Token encoding: o200k_base
Snapshot 21a254f
← Back to SKILL.md
1package cpp2 3import (4 "fmt"5 "path/filepath"6 7 "github.com/railwayapp/railpack/core/generate"8 "github.com/railwayapp/railpack/core/plan"9)10 11type CppProvider struct{}12 13func (p *CppProvider) Name() string {14 return "cpp"15}16 17func (p *CppProvider) CleansePlan(buildPlan *plan.BuildPlan) {}18 19func (p *CppProvider) Detect(ctx *generate.GenerateContext) (bool, error) {20 _, c := p.DetectCmake(ctx)21 _, m := p.DetectMeson(ctx)22 return c || m, nil23}24 25func (p *CppProvider) Initialize(ctx *generate.GenerateContext) error {26 return nil27}28 29func (p *CppProvider) StartCommandHelp() string {30 return ""31}32 33func (p *CppProvider) Plan(ctx *generate.GenerateContext) error {34 35 packages := ctx.GetMiseStepBuilder()36 37 buildsystem, found := p.DetectCmake(ctx)38 if !found {39 buildsystem, _ = p.DetectMeson(ctx)40 }41 42 buildsystem.Install(ctx, packages)43 44 build := ctx.NewCommandStep("build")45 build.AddInput(plan.NewStepLayer(packages.Name()))46 build.AddInput(plan.NewLocalLayer())47 build.AddCommand(plan.NewExecCommand("mkdir /build"))48 buildsystem.Build(build)49 50 ctx.Deploy.StartCmd = fmt.Sprintf("/build/%s", filepath.Base(ctx.GetAppSource()))51 ctx.Deploy.AddInputs([]plan.Layer{52 plan.NewStepLayer(build.Name(), plan.NewIncludeFilter([]string{"/build/"})),53 })54 55 return nil56}57