You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

54 lines
1.3 KiB

package config
import (
"gerrit.wikimedia.org/r/blubber/build"
)
// BuilderConfig contains configuration for the definition of an arbitrary
// build command and the files required to successfully execute the command.
//
type BuilderConfig struct {
Command []string `json:"command"`
Requirements []string `json:"requirements"`
}
// Merge takes another BuilderConfig and merges its fields into this one's,
// overwriting the builder command.
//
func (bc *BuilderConfig) Merge(bc2 BuilderConfig) {
if bc2.Command != nil {
bc.Command = bc2.Command
}
if bc2.Requirements != nil {
bc.Requirements = bc2.Requirements
}
}
// InstructionsForPhase injects instructions into the build related to
// builder commands and required files.
//
// PhasePreInstall
//
// Creates directories for requirements files, copies in requirements files,
// and runs the builder command.
//
func (bc BuilderConfig) InstructionsForPhase(phase build.Phase) []build.Instruction {
if len(bc.Command) == 0 {
return []build.Instruction{}
}
switch phase {
case build.PhasePreInstall:
syncs := build.SyncFiles(bc.Requirements, ".")
run := build.Run{Command: bc.Command[0]}
if len(bc.Command) > 1 {
run.Arguments = bc.Command[1:]
}
return append(syncs, run)
}
return []build.Instruction{}
}