From 36b20a7b431aeb57e28201e04fc9cb80143b2943 Mon Sep 17 00:00:00 2001 From: sgrebnov Date: Fri, 19 Sep 2014 15:06:13 +0400 Subject: [PATCH] CB-7601 Build fails due to capabilities with m: prefixes are incorrectly sorted --- windows/template/cordova/lib/prepare.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/windows/template/cordova/lib/prepare.js b/windows/template/cordova/lib/prepare.js index f28ebea7..5e3f533e 100644 --- a/windows/template/cordova/lib/prepare.js +++ b/windows/template/cordova/lib/prepare.js @@ -165,16 +165,25 @@ function applyAccessRules (config, manifest) { } function sortCapabilities(manifest) { + + // removes namespace prefix (m3:Capability -> Capability) + // this is required since elementtree returns qualified name with namespace + function extractLocalName(tag) { + return tag.split(':').pop(); // takes last part of string after ':' + } + var capabilitiesRoot = manifest.find('.//Capabilities'), capabilities = capabilitiesRoot._children || []; // to sort elements we remove them and then add again in the appropriate order capabilities.forEach(function(elem) { // no .clear() method capabilitiesRoot.remove(0, elem); + // CB-7601 we need local name w/o namespace prefix to sort capabilities correctly + elem.localName = extractLocalName(elem.tag); }); capabilities.sort(function(a, b) { - return (a.tag > b.tag) ? 1: -1; + return (a.localName > b.localName) ? 1: -1; }); - capabilities.forEach(function(elem){ + capabilities.forEach(function(elem) { capabilitiesRoot.append(elem); }); }