Allow wrapping of PackageContext
Turn PackageContext into an interface so that build systems can wrap it
to add more custom helpers.
This does introduce an API change, though it should be fairly simple.
NewPackageContext used to provide an opaque *PackageContext struct, now it
provides a PackageContext interface.
Change-Id: I383c64a303d857ef5e0dec86ad77f791ba4c9639
diff --git a/singleton_ctx.go b/singleton_ctx.go
index ee96fc6..2ba0199 100644
--- a/singleton_ctx.go
+++ b/singleton_ctx.go
@@ -32,15 +32,15 @@
ModuleErrorf(module Module, format string, args ...interface{})
Errorf(format string, args ...interface{})
- Variable(pctx *PackageContext, name, value string)
- Rule(pctx *PackageContext, name string, params RuleParams, argNames ...string) Rule
- Build(pctx *PackageContext, params BuildParams)
+ Variable(pctx PackageContext, name, value string)
+ Rule(pctx PackageContext, name string, params RuleParams, argNames ...string) Rule
+ Build(pctx PackageContext, params BuildParams)
RequireNinjaVersion(major, minor, micro int)
// SetNinjaBuildDir sets the value of the top-level "builddir" Ninja variable
// that controls where Ninja stores its build log files. This value can be
// set at most one time for a single build, later calls are ignored.
- SetNinjaBuildDir(pctx *PackageContext, value string)
+ SetNinjaBuildDir(pctx PackageContext, value string)
VisitAllModules(visit func(Module))
VisitAllModulesIf(pred func(Module) bool, visit func(Module))
@@ -96,7 +96,7 @@
s.errs = append(s.errs, fmt.Errorf(format, args...))
}
-func (s *singletonContext) Variable(pctx *PackageContext, name, value string) {
+func (s *singletonContext) Variable(pctx PackageContext, name, value string) {
s.scope.ReparentTo(pctx)
v, err := s.scope.AddLocalVariable(name, value)
@@ -107,7 +107,7 @@
s.actionDefs.variables = append(s.actionDefs.variables, v)
}
-func (s *singletonContext) Rule(pctx *PackageContext, name string,
+func (s *singletonContext) Rule(pctx PackageContext, name string,
params RuleParams, argNames ...string) Rule {
s.scope.ReparentTo(pctx)
@@ -122,7 +122,7 @@
return r
}
-func (s *singletonContext) Build(pctx *PackageContext, params BuildParams) {
+func (s *singletonContext) Build(pctx PackageContext, params BuildParams) {
s.scope.ReparentTo(pctx)
def, err := parseBuildParams(s.scope, ¶ms)
@@ -137,7 +137,7 @@
s.context.requireNinjaVersion(major, minor, micro)
}
-func (s *singletonContext) SetNinjaBuildDir(pctx *PackageContext, value string) {
+func (s *singletonContext) SetNinjaBuildDir(pctx PackageContext, value string) {
s.scope.ReparentTo(pctx)
ninjaValue, err := parseNinjaString(s.scope, value)