diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-08-15 21:40:45 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-08-15 21:40:45 +0000 |
commit | f686738decdb919fefcc8f071151b3aac0423d79 (patch) | |
tree | ec0d42c77c1f949b1e828c133280e57e3341186d | |
parent | d586918cebc8d220cb090b9654c0ad334dd5dc2f (diff) | |
parent | 7968c52625bd8aece3a55229b5d3da845767eaf6 (diff) | |
download | blueprint-android13-mainline-adservices-release.tar.gz |
Snap for 8947676 from 7968c52625bd8aece3a55229b5d3da845767eaf6 to mainline-adservices-releaseaml_ads_331920180aml_ads_331814200aml_ads_331710270aml_ads_331611190aml_ads_331511020aml_ads_331418080aml_ads_331131000android13-mainline-adservices-release
Change-Id: I5a126ee207d53973c35af0647b7fc52fb8998aca
-rw-r--r-- | proptools/escape.go | 4 | ||||
-rw-r--r-- | singleton_ctx.go | 27 |
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 +} |