diff options
| author | Joerg Bornemann <joerg.bornemann@digia.com> | 2013-03-20 14:20:09 +0100 |
|---|---|---|
| committer | Christian Kandeler <christian.kandeler@digia.com> | 2013-03-25 16:20:10 +0100 |
| commit | e3a652bcf469320b320a3d84e4b476d4dbbe2b5a (patch) | |
| tree | 294fb7d39f8b72676f89bcdba1761970f692b14c /src/lib/buildgraph/rulesapplicator.cpp | |
| parent | 3948dfddca1922ae24ab66a350b54670f55712b0 (diff) | |
| download | qbs-e3a652bcf469320b320a3d84e4b476d4dbbe2b5a.tar.gz | |
remember product properties used in prepare scripts
Preparation for tracking property changes.
Task-number: QBS-6
Change-Id: I2d3852a4aaca116d70d9dbcbe0a202e104765737
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/lib/buildgraph/rulesapplicator.cpp')
| -rw-r--r-- | src/lib/buildgraph/rulesapplicator.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/lib/buildgraph/rulesapplicator.cpp b/src/lib/buildgraph/rulesapplicator.cpp index 57ee72db9..8ac853573 100644 --- a/src/lib/buildgraph/rulesapplicator.cpp +++ b/src/lib/buildgraph/rulesapplicator.cpp @@ -53,6 +53,7 @@ RulesApplicator::RulesApplicator(BuildProduct *product, ArtifactsPerFileTagMap & : m_buildProduct(product) , m_artifactsPerFileTag(artifactsPerFileTag) , m_logger(logger) + , m_productObjectId(-1) { } @@ -66,9 +67,11 @@ void RulesApplicator::applyAllRules() void RulesApplicator::applyRule(const RuleConstPtr &rule) { m_rule = rule; - setupScriptEngineForProduct(engine(), m_buildProduct->rProduct, m_rule, scope()); + QScriptValue scopeValue = scope(); + setupScriptEngineForProduct(engine(), m_buildProduct->rProduct, m_rule, scopeValue, this); Q_ASSERT_X(scope().property("product").strictlyEquals(engine()->evaluate("product")), "BG", "Product object is not in current scope."); + m_productObjectId = scopeValue.property(QLatin1String("product")).objectId(); ArtifactList inputArtifacts; foreach (const FileTag &fileTag, m_rule->inputs) @@ -320,5 +323,12 @@ QScriptValue RulesApplicator::scope() const return evalContext()->scope(); } +void RulesApplicator::onPropertyRead(const QScriptValue &object, const QString &name, + const QScriptValue &value) +{ + if (object.objectId() == m_productObjectId) + engine()->addProperty(Property(QLatin1String("product"), name, value.toVariant())); +} + } // namespace Internal } // namespace qbs |
