aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-08-15 21:40:45 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-08-15 21:40:45 +0000
commitf686738decdb919fefcc8f071151b3aac0423d79 (patch)
treeec0d42c77c1f949b1e828c133280e57e3341186d
parentd586918cebc8d220cb090b9654c0ad334dd5dc2f (diff)
parent7968c52625bd8aece3a55229b5d3da845767eaf6 (diff)
downloadblueprint-android13-mainline-adservices-release.tar.gz
Change-Id: I5a126ee207d53973c35af0647b7fc52fb8998aca
-rw-r--r--proptools/escape.go4
-rw-r--r--singleton_ctx.go27
2 files changed, 31 insertions, 0 deletions
diff --git a/proptools/escape.go b/proptools/escape.go
index 4ef10f0..9443a95 100644
--- a/proptools/escape.go
+++ b/proptools/escape.go
@@ -122,4 +122,8 @@ func NinjaAndShellEscape(s string) string {
return ShellEscape(NinjaEscape(s))
}
+func NinjaAndShellEscapeIncludingSpaces(s string) string {
+ return ShellEscapeIncludingSpaces(NinjaEscape(s))
+}
+
var singleQuoteReplacer = strings.NewReplacer(`'`, `'\''`)
diff --git a/singleton_ctx.go b/singleton_ctx.go
index 455f6fc..d579b8e 100644
--- a/singleton_ctx.go
+++ b/singleton_ctx.go
@@ -157,6 +157,10 @@ type SingletonContext interface {
// Fs returns a pathtools.Filesystem that can be used to interact with files. Using the Filesystem interface allows
// the singleton to be used in build system tests that run against a mock filesystem.
Fs() pathtools.FileSystem
+
+ // ModuleVariantsFromName returns the list of module variants named `name` in the same namespace as `referer`.
+ // Allows generating build actions for `referer` based on the metadata for `name` deferred until the singleton context.
+ ModuleVariantsFromName(referer Module, name string) []Module
}
var _ SingletonContext = (*singletonContext)(nil)
@@ -369,3 +373,26 @@ func (s *singletonContext) GlobWithDeps(pattern string,
func (s *singletonContext) Fs() pathtools.FileSystem {
return s.context.fs
}
+
+func (s *singletonContext) ModuleVariantsFromName(referer Module, name string) []Module {
+ c := s.context
+
+ refererInfo := c.moduleInfo[referer]
+ if refererInfo == nil {
+ s.ModuleErrorf(referer, "could not find module %q", referer.Name())
+ return nil
+ }
+
+ moduleGroup, exists := c.nameInterface.ModuleFromName(name, refererInfo.namespace())
+ if !exists {
+ return nil
+ }
+ result := make([]Module, 0, len(moduleGroup.modules))
+ for _, module := range moduleGroup.modules {
+ moduleInfo := module.module()
+ if moduleInfo != nil {
+ result = append(result, moduleInfo.logicModule)
+ }
+ }
+ return result
+}