Add RuleBuilderCommand.FlagForEachArg()

Add an analog to FlagForEachInput that takes non-path arguments.

Test: rule_builder_test.go
Change-Id: Ifdf5a16079018bfff9b06ce48b13b104a93fddd7
This commit is contained in:
Colin Cross
2019-02-11 14:11:09 -08:00
parent 74ba962d29
commit c7ed004dd3
2 changed files with 17 additions and 0 deletions

View File

@@ -294,6 +294,15 @@ func (c *RuleBuilderCommand) FlagWithArg(flag, arg string) *RuleBuilderCommand {
return c.Text(flag + arg)
}
// FlagForEachArg adds the specified flag joined with each argument to the command line. The result is identical to
// calling FlagWithArg for argument.
func (c *RuleBuilderCommand) FlagForEachArg(flag string, args []string) *RuleBuilderCommand {
for _, arg := range args {
c.FlagWithArg(flag, arg)
}
return c
}
// FlagWithArg adds the specified flag and list of arguments to the command line, with the arguments joined by sep
// and no separator between the flag and arguments. The flag and arguments should not contain input or output paths or
// the rule will not have them listed in its dependencies or outputs.

View File

@@ -117,6 +117,14 @@ func ExampleRuleBuilderCommand_FlagWithArg() {
// ls --sort=time
}
func ExampleRuleBuilderCommand_FlagForEachArg() {
fmt.Println(NewRuleBuilder().Command().
Tool("ls").
FlagForEachArg("--sort=", []string{"time", "size"}))
// Output:
// ls --sort=time --sort=size
}
func ExampleRuleBuilderCommand_FlagForEachInput() {
fmt.Println(NewRuleBuilder().Command().
Tool("turbine").