diff options
author | Colin Cross <ccross@android.com> | 2019-01-25 22:43:35 -0800 |
---|---|---|
committer | Jaewoong Jung <jungjw@google.com> | 2019-02-13 20:39:26 +0000 |
commit | 7089c27c07afef014b49455e41dc586f6d418b3f (patch) | |
tree | 821ac6eff0bc2f7afb3249f878129acb9ac60b8e /cmd | |
parent | 1b16b0e031e747bbeed103df08f0441ccf342069 (diff) | |
download | build_soong-7089c27c07afef014b49455e41dc586f6d418b3f.tar.gz build_soong-7089c27c07afef014b49455e41dc586f6d418b3f.tar.bz2 build_soong-7089c27c07afef014b49455e41dc586f6d418b3f.zip |
Update Soong docs generator for blueprint changes
bootstrap.ModuleTypeDocs needs a mapping of module types to factories
to support factories that are wrapped in ModuleFactoryAdapter closures.
It also returns ModuleType objects grouped into Package objects.
Bug: 67909957
Test: m soong_docs
Change-Id: I70eac9f0f0e13075580da92d4219792ca0b18fbf
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/soong_build/main.go | 6 | ||||
-rw-r--r-- | cmd/soong_build/writedocs.go | 17 |
2 files changed, 21 insertions, 2 deletions
diff --git a/cmd/soong_build/main.go b/cmd/soong_build/main.go index a4c6898d..1f6002ee 100644 --- a/cmd/soong_build/main.go +++ b/cmd/soong_build/main.go @@ -75,6 +75,10 @@ func main() { bootstrap.Main(ctx.Context, configuration, configuration.ConfigFileName, configuration.ProductVariablesFileName) if docFile != "" { - writeDocs(ctx, docFile) + err := writeDocs(ctx, docFile) + if err != nil { + fmt.Fprintf(os.Stderr, "%s", err) + os.Exit(1) + } } } diff --git a/cmd/soong_build/writedocs.go b/cmd/soong_build/writedocs.go index a6686c0d..8f86b332 100644 --- a/cmd/soong_build/writedocs.go +++ b/cmd/soong_build/writedocs.go @@ -19,18 +19,33 @@ import ( "bytes" "html/template" "io/ioutil" + "reflect" + "sort" "github.com/google/blueprint/bootstrap" + "github.com/google/blueprint/bootstrap/bpdoc" ) func writeDocs(ctx *android.Context, filename string) error { - moduleTypeList, err := bootstrap.ModuleTypeDocs(ctx.Context) + moduleTypeFactories := android.ModuleTypeFactories() + bpModuleTypeFactories := make(map[string]reflect.Value) + for moduleType, factory := range moduleTypeFactories { + bpModuleTypeFactories[moduleType] = reflect.ValueOf(factory) + } + + packages, err := bootstrap.ModuleTypeDocs(ctx.Context, bpModuleTypeFactories) if err != nil { return err } buf := &bytes.Buffer{} + var moduleTypeList []*bpdoc.ModuleType + for _, pkg := range packages { + moduleTypeList = append(moduleTypeList, pkg.ModuleTypes...) + } + sort.Slice(moduleTypeList, func(i, j int) bool { return moduleTypeList[i].Name < moduleTypeList[j].Name }) + unique := 0 tmpl, err := template.New("file").Funcs(map[string]interface{}{ |