1"use strict"; 2 3Object.defineProperty(exports, "__esModule", { 4 value: true 5}); 6exports.applyNameSettingsGradle = applyNameSettingsGradle; 7exports.getName = getName; 8exports.sanitizeNameForGradle = sanitizeNameForGradle; 9exports.withNameSettingsGradle = exports.withName = void 0; 10function _Resources() { 11 const data = require("./Resources"); 12 _Resources = function () { 13 return data; 14 }; 15 return data; 16} 17function _Strings() { 18 const data = require("./Strings"); 19 _Strings = function () { 20 return data; 21 }; 22 return data; 23} 24function _androidPlugins() { 25 const data = require("../plugins/android-plugins"); 26 _androidPlugins = function () { 27 return data; 28 }; 29 return data; 30} 31function _warnings() { 32 const data = require("../utils/warnings"); 33 _warnings = function () { 34 return data; 35 }; 36 return data; 37} 38/** 39 * Sanitize a name, this should be used for files and gradle names. 40 * - `[/, \, :, <, >, ", ?, *, |]` are not allowed 41 * https://docs.gradle.org/4.2/release-notes.html#path-separator-characters-in-names-are-deprecated 42 * 43 * @param name 44 */ 45function sanitizeNameForGradle(name) { 46 // Remove escape characters which are valid in XML names but not in gradle. 47 name = name.replace(/[\n\r\t]/g, ''); 48 49 // Gradle disallows these: 50 // The project name 'My-Special Co/ol_Project' must not contain any of the following characters: [/, \, :, <, >, ", ?, *, |]. Set the 'rootProject.name' or adjust the 'include' statement (see https://docs.gradle.org/6.2/dsl/org.gradle.api.initialization.Settings.html#org.gradle.api.initialization.Settings:include(java.lang.String[]) for more details). 51 return name.replace(/(\/|\\|:|<|>|"|\?|\*|\|)/g, ''); 52} 53const withName = (0, _androidPlugins().createStringsXmlPlugin)(applyNameFromConfig, 'withName'); 54exports.withName = withName; 55const withNameSettingsGradle = config => { 56 return (0, _androidPlugins().withSettingsGradle)(config, config => { 57 if (config.modResults.language === 'groovy') { 58 config.modResults.contents = applyNameSettingsGradle(config, config.modResults.contents); 59 } else { 60 (0, _warnings().addWarningAndroid)('name', `Cannot automatically configure settings.gradle if it's not groovy`); 61 } 62 return config; 63 }); 64}; 65exports.withNameSettingsGradle = withNameSettingsGradle; 66function getName(config) { 67 return typeof config.name === 'string' ? config.name : null; 68} 69function applyNameFromConfig(config, stringsJSON) { 70 const name = getName(config); 71 if (name) { 72 return (0, _Strings().setStringItem)([(0, _Resources().buildResourceItem)({ 73 name: 'app_name', 74 value: name 75 })], stringsJSON); 76 } 77 return (0, _Strings().removeStringItem)('app_name', stringsJSON); 78} 79 80/** 81 * Regex a name change -- fragile. 82 * 83 * @param config 84 * @param settingsGradle 85 */ 86function applyNameSettingsGradle(config, settingsGradle) { 87 var _getName; 88 const name = sanitizeNameForGradle((_getName = getName(config)) !== null && _getName !== void 0 ? _getName : ''); 89 90 // Select rootProject.name = '***' and replace the contents between the quotes. 91 return settingsGradle.replace(/rootProject.name\s?=\s?(["'])(?:(?=(\\?))\2.)*?\1/g, `rootProject.name = '${name.replace(/'/g, "\\'")}'`); 92} 93//# sourceMappingURL=Name.js.map