UNPKG

react-native-integrate

Version:

Automate integration of additional code into React Native projects

39 lines (38 loc) 1.81 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.importAndroidDisplayName = importAndroidDisplayName; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const picocolors_1 = __importDefault(require("picocolors")); const prompter_1 = require("../../../prompter"); const getProjectPath_1 = require("../../getProjectPath"); function importAndroidDisplayName(projectPath) { try { const stringsPath = path_1.default.join(projectPath, 'android/app/src/main/res/values/strings.xml'); const strings = fs_1.default.readFileSync(stringsPath, 'utf8'); const displayNameMatch = strings.match(/<string name="app_name">(.*)<\/string>/); const displayName = displayNameMatch?.[1]; if (!displayName) return null; return { id: 'androidDisplayName', title: 'Android Display Name', value: displayName, apply: () => setAndroidDisplayName(displayName), }; } catch (_e) { return null; } } async function setAndroidDisplayName(name) { const stringsPath = path_1.default.join((0, getProjectPath_1.getProjectPath)(), 'android/app/src/main/res/values/strings.xml'); const strings = fs_1.default.readFileSync(stringsPath, 'utf8'); const newStrings = strings.replace(/<string name="app_name">(.*)<\/string>/, `<string name="app_name">${name}</string>`); fs_1.default.writeFileSync(stringsPath, newStrings); (0, prompter_1.logMessage)(`changed ${picocolors_1.default.yellow('app_name')} to ${picocolors_1.default.yellow(name)}`); return Promise.resolve(); }