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.
 
 
 

36 lines
1.2 KiB

package build
// Phase enum type
type Phase int
// Distinct build phases that each compiler implementation should pass to
// PhaseCompileable configuration (in the order they are defined here) to
// allow for dependency injection during compilation.
//
const (
PhasePrivileged Phase = iota // first, copies/execution done as root
PhasePrivilegeDropped // second, copies/execution done as unprivileged user from here on
PhasePreInstall // third, before application files and artifacts are copied
PhaseInstall // fourth, application files and artifacts are copied
PhasePostInstall // fifth, after application files and artifacts are copied
)
// PhaseCompileable defines and interface that all configuration types should
// implement if they want to inject build instructions into any of the defined
// build phases.
//
type PhaseCompileable interface {
InstructionsForPhase(phase Phase) []Instruction
}
// Phases returns all build phases in the order to be compiled.
//
func Phases() []Phase {
return []Phase{
PhasePrivileged,
PhasePrivilegeDropped,
PhasePreInstall,
PhaseInstall,
PhasePostInstall,
}
}