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