diff options
author | Colin Cross <ccross@android.com> | 2019-02-11 14:11:09 -0800 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2019-02-13 08:03:29 -0800 |
commit | deabb94380ad37d89e164946f8076adf433bfa22 (patch) | |
tree | 9e385ba01c2fbce9e629579f1ea5933e33bec102 /android | |
parent | bd907cb12bad59f35bdb73476c9a785d7be06b7d (diff) | |
download | build_soong-deabb94380ad37d89e164946f8076adf433bfa22.tar.gz build_soong-deabb94380ad37d89e164946f8076adf433bfa22.tar.bz2 build_soong-deabb94380ad37d89e164946f8076adf433bfa22.zip |
Add RuleBuilder.Installs().String()
Add a RuleBuilderInstalls type for a slice of RuleBuilderInstalls,
and give it a String() method that returns the list of installs
in the format that is convenient for passing to Make.
Test: rule_builder_test.go
Change-Id: I2e9cd9abf4dfb0ad312d0a6662f1567baf9cd222
Diffstat (limited to 'android')
-rw-r--r-- | android/rule_builder.go | 23 | ||||
-rw-r--r-- | android/rule_builder_test.go | 13 |
2 files changed, 33 insertions, 3 deletions
diff --git a/android/rule_builder.go b/android/rule_builder.go index 468b617b..3b869470 100644 --- a/android/rule_builder.go +++ b/android/rule_builder.go @@ -28,7 +28,7 @@ import ( // graph. type RuleBuilder struct { commands []*RuleBuilderCommand - installs []RuleBuilderInstall + installs RuleBuilderInstalls temporariesSet map[string]bool restat bool missingDeps []string @@ -46,6 +46,23 @@ type RuleBuilderInstall struct { From, To string } +type RuleBuilderInstalls []RuleBuilderInstall + +// String returns the RuleBuilderInstalls in the form used by $(call copy-many-files) in Make, a space separated +// list of from:to tuples. +func (installs RuleBuilderInstalls) String() string { + sb := strings.Builder{} + for i, install := range installs { + if i != 0 { + sb.WriteRune(' ') + } + sb.WriteString(install.From) + sb.WriteRune(':') + sb.WriteString(install.To) + } + return sb.String() +} + // MissingDeps adds modules to the list of missing dependencies. If MissingDeps // is called with a non-empty input, any call to Build will result in a rule // that will print an error listing the missing dependencies and fail. @@ -145,8 +162,8 @@ func (r *RuleBuilder) Outputs() []string { } // Installs returns the list of tuples passed to Install. -func (r *RuleBuilder) Installs() []RuleBuilderInstall { - return append([]RuleBuilderInstall(nil), r.installs...) +func (r *RuleBuilder) Installs() RuleBuilderInstalls { + return append(RuleBuilderInstalls(nil), r.installs...) } func (r *RuleBuilder) toolsSet() map[string]bool { diff --git a/android/rule_builder_test.go b/android/rule_builder_test.go index 53a5b489..f9473489 100644 --- a/android/rule_builder_test.go +++ b/android/rule_builder_test.go @@ -84,6 +84,19 @@ func ExampleRuleBuilder_DeleteTemporaryFiles() { // outputs: ["c"] } +func ExampleRuleBuilder_Installs() { + rule := NewRuleBuilder() + + rule.Command().Tool("ld").Inputs([]string{"a.o", "b.o"}).FlagWithOutput("-o ", "linked") + rule.Install("linked", "/bin/linked") + rule.Install("linked", "/sbin/linked") + + fmt.Printf("rule.Installs().String() = %q\n", rule.Installs().String()) + + // Output: + // rule.Installs().String() = "linked:/bin/linked linked:/sbin/linked" +} + func ExampleRuleBuilderCommand() { rule := NewRuleBuilder() |