summaryrefslogtreecommitdiff
path: root/src/lib/buildgraph/rulesapplicator.cpp
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2013-03-20 14:20:09 +0100
committerChristian Kandeler <christian.kandeler@digia.com>2013-03-25 16:20:10 +0100
commite3a652bcf469320b320a3d84e4b476d4dbbe2b5a (patch)
tree294fb7d39f8b72676f89bcdba1761970f692b14c /src/lib/buildgraph/rulesapplicator.cpp
parent3948dfddca1922ae24ab66a350b54670f55712b0 (diff)
downloadqbs-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.cpp12
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