From 2411ec83b12fd2457f6f22fe5a4de9122503a2e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20K=C3=A4fer?= Date: Tue, 8 Nov 2016 18:14:46 +0100 Subject: [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 --- scripts/generate-style-code.js | 27 ++++++++++----------------- scripts/style-code.js | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 17 deletions(-) create mode 100644 scripts/style-code.js (limited to 'scripts') 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}'`); +}; -- cgit v1.2.1