Add validations to RuleBuilderCommand
Add RuleBuilderCommand.Validation and RuleBuilderCommand.Validations that propagate to BuildParams.Validations. Test: TestRuleBuilder_build, TestRuleBuilder Change-Id: I9a08bbc073a432fd0b53b87d8948ac0f6afcf637
This commit is contained in:
@@ -283,6 +283,28 @@ func (r *RuleBuilder) OrderOnlys() Paths {
|
||||
return orderOnlyList
|
||||
}
|
||||
|
||||
// Validations returns the list of paths that were passed to RuleBuilderCommand.Validation or
|
||||
// RuleBuilderCommand.Validations. The list is sorted and duplicates removed.
|
||||
func (r *RuleBuilder) Validations() Paths {
|
||||
validations := make(map[string]Path)
|
||||
for _, c := range r.commands {
|
||||
for _, validation := range c.validations {
|
||||
validations[validation.String()] = validation
|
||||
}
|
||||
}
|
||||
|
||||
var validationList Paths
|
||||
for _, validation := range validations {
|
||||
validationList = append(validationList, validation)
|
||||
}
|
||||
|
||||
sort.Slice(validationList, func(i, j int) bool {
|
||||
return validationList[i].String() < validationList[j].String()
|
||||
})
|
||||
|
||||
return validationList
|
||||
}
|
||||
|
||||
func (r *RuleBuilder) outputSet() map[string]WritablePath {
|
||||
outputs := make(map[string]WritablePath)
|
||||
for _, c := range r.commands {
|
||||
@@ -707,6 +729,7 @@ func (r *RuleBuilder) Build(name string, desc string) {
|
||||
Inputs: rspFileInputs,
|
||||
Implicits: inputs,
|
||||
OrderOnly: r.OrderOnlys(),
|
||||
Validations: r.Validations(),
|
||||
Output: output,
|
||||
ImplicitOutputs: implicitOutputs,
|
||||
SymlinkOutputs: r.SymlinkOutputs(),
|
||||
@@ -727,6 +750,7 @@ type RuleBuilderCommand struct {
|
||||
inputs Paths
|
||||
implicits Paths
|
||||
orderOnlys Paths
|
||||
validations Paths
|
||||
outputs WritablePaths
|
||||
symlinkOutputs WritablePaths
|
||||
depFiles WritablePaths
|
||||
@@ -1061,6 +1085,20 @@ func (c *RuleBuilderCommand) OrderOnlys(paths Paths) *RuleBuilderCommand {
|
||||
return c
|
||||
}
|
||||
|
||||
// Validation adds the specified input path to the validation dependencies by
|
||||
// RuleBuilder.Validations without modifying the command line.
|
||||
func (c *RuleBuilderCommand) Validation(path Path) *RuleBuilderCommand {
|
||||
c.validations = append(c.validations, path)
|
||||
return c
|
||||
}
|
||||
|
||||
// Validations adds the specified input paths to the validation dependencies by
|
||||
// RuleBuilder.Validations without modifying the command line.
|
||||
func (c *RuleBuilderCommand) Validations(paths Paths) *RuleBuilderCommand {
|
||||
c.validations = append(c.validations, paths...)
|
||||
return c
|
||||
}
|
||||
|
||||
// Output adds the specified output path to the command line. The path will also be added to the outputs returned by
|
||||
// RuleBuilder.Outputs.
|
||||
func (c *RuleBuilderCommand) Output(path WritablePath) *RuleBuilderCommand {
|
||||
|
Reference in New Issue
Block a user