commit | 4b793e5798ddfd797bfd8c8534e1e5262c44c7d6 | [log] [tgz] |
---|---|---|
author | Colin Cross <ccross@android.com> | Thu Apr 23 13:29:28 2015 -0700 |
committer | Colin Cross <ccross@android.com> | Fri Apr 24 11:11:15 2015 -0700 |
tree | 51a5f3d06590dc6c3d24b5b7b038becb508d83a5 | |
parent | 63d5d4d9e4fc62b5eefb96c461c2d02349b57ed8 [diff] |
Rewrite pathtools.Glob to track partially-matched directories The directory structure: a/ a b/ b With the glob pattern */a would previously return []string{"a"} for dirs, but it needs to return []string{"a", "b"} in order to re-run the generator if a file called "a" is created inside b/. Rewrite Glob to manually recurse through path elements, only calling filepath.Glob for a pattern with wilds in the last element of the path, and add the globbed directory to the dirs list each time. Also add tests and test data for pathtools.Glob. Change-Id: Ibbdb2f99809ea0826d4fa82066cf84103005ef57
Blueprint is a meta-build system that reads in Blueprints files that describe modules that need to be built, and produces a Ninja manifest describing the commands that need to be run and their dependencies. Where most build systems use built-in rules or a domain-specific language to describe the logic for converting module descriptions to build rules, Blueprint delegates this to per-project build logic written in Go. For large, heterogenous projects this allows the inherent complexity of the build logic to be maintained in a high-level language, while still allowing simple changes to individual modules by modifying easy to understand Blueprints files.