diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2016-11-08 18:14:46 +0100 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2016-11-09 11:10:22 +0100 |
commit | 2411ec83b12fd2457f6f22fe5a4de9122503a2e2 (patch) | |
tree | 285d63d836d3f888c75175a72af619095947c98a /scripts | |
parent | 4030e86c33c8863c4c255201e6a7f3ff447000ed (diff) | |
download | qtlocation-mapboxgl-2411ec83b12fd2457f6f22fe5a4de9122503a2e2.tar.gz |
[build] don't rewrite style code for every build
revert of 93166aef482ea5835d87231f88d369449398ccdf
On Android, we always rewrote the style code files, which lead to gratuitous recompiles
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/generate-style-code.js | 27 | ||||
-rw-r--r-- | scripts/style-code.js | 36 |
2 files changed, 46 insertions, 17 deletions
diff --git a/scripts/generate-style-code.js b/scripts/generate-style-code.js index dcb527e8c9..005bc022df 100644 --- a/scripts/generate-style-code.js +++ b/scripts/generate-style-code.js @@ -5,6 +5,8 @@ const ejs = require('ejs'); const spec = require('mapbox-gl-style-spec').latest; var colorParser = require('csscolorparser'); +require('./style-code'); + function parseCSSColor(str) { var color = colorParser.parseCSSColor(str); return [ @@ -12,18 +14,6 @@ function parseCSSColor(str) { ]; } -global.camelize = function (str) { - return str.replace(/(?:^|-)(.)/g, function (_, x) { - return x.toUpperCase(); - }); -} - -global.camelizeWithLeadingLowercase = function (str) { - return str.replace(/-(.)/g, function (_, x) { - return x.toUpperCase(); - }); -} - global.propertyType = function (property) { if (/-translate-anchor$/.test(property.name)) { return 'TranslateAnchorType'; @@ -121,16 +111,19 @@ const layers = Object.keys(spec.layer.type.values).map((type) => { type: type, layoutProperties: layoutProperties, paintProperties: paintProperties, + doc: spec.layer.type.values[type].doc, + layoutPropertiesByName: spec[`layout_${type}`], + paintPropertiesByName: spec[`paint_${type}`], }; }); for (const layer of layers) { - fs.writeFileSync(`include/mbgl/style/layers/${layer.type}_layer.hpp`, layerHpp(layer)); - fs.writeFileSync(`src/mbgl/style/layers/${layer.type}_layer.cpp`, layerCpp(layer)); + writeIfModified(`include/mbgl/style/layers/${layer.type}_layer.hpp`, layerHpp(layer)); + writeIfModified(`src/mbgl/style/layers/${layer.type}_layer.cpp`, layerCpp(layer)); - fs.writeFileSync(`src/mbgl/style/layers/${layer.type}_layer_properties.hpp`, propertiesHpp(layer)); - fs.writeFileSync(`src/mbgl/style/layers/${layer.type}_layer_properties.cpp`, propertiesCpp(layer)); + writeIfModified(`src/mbgl/style/layers/${layer.type}_layer_properties.hpp`, propertiesHpp(layer)); + writeIfModified(`src/mbgl/style/layers/${layer.type}_layer_properties.cpp`, propertiesCpp(layer)); } const propertySettersHpp = ejs.compile(fs.readFileSync('include/mbgl/style/conversion/make_property_setters.hpp.ejs', 'utf8'), {strict: true}); -fs.writeFileSync('include/mbgl/style/conversion/make_property_setters.hpp', propertySettersHpp({layers: layers})); +writeIfModified('include/mbgl/style/conversion/make_property_setters.hpp', propertySettersHpp({layers: layers})); diff --git a/scripts/style-code.js b/scripts/style-code.js new file mode 100644 index 0000000000..156934a240 --- /dev/null +++ b/scripts/style-code.js @@ -0,0 +1,36 @@ +// Global functions // + +const fs = require('fs'); + +global.iff = function (condition, val) { + return condition() ? val : ""; +}; + +global.camelize = function (str) { + return str.replace(/(?:^|-)(.)/g, function (_, x) { + return x.toUpperCase(); + }); +}; + +global.camelizeWithLeadingLowercase = function (str) { + return str.replace(/-(.)/g, function (_, x) { + return x.toUpperCase(); + }); +}; + +global.snakeCaseUpper = function snakeCaseUpper(str) { + return str.replace(/-/g, "_").toUpperCase(); +}; + +global.writeIfModified = function(filename, newContent) { + try { + const oldContent = fs.readFileSync(filename, 'utf8'); + if (oldContent == newContent) { + console.warn(`* Skipping current file '${filename}'`); + return; + } + } catch(err) { + } + fs.writeFileSync(filename, newContent); + console.warn(`* Updating outdated file '${filename}'`); +}; |