react-native-integrate
Version:
Automate integration of additional code into React Native projects
43 lines (42 loc) • 2.06 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.importIosDisplayName = importIosDisplayName;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const picocolors_1 = __importDefault(require("picocolors"));
const simple_plist_1 = __importDefault(require("simple-plist"));
const constants_1 = require("../../../constants");
const prompter_1 = require("../../../prompter");
const getIosProjectPath_1 = require("../../getIosProjectPath");
const getProjectPath_1 = require("../../getProjectPath");
function importIosDisplayName(projectPath) {
try {
const target = (0, getIosProjectPath_1.getIosProjectName)(projectPath);
const plistPath = path_1.default.join(projectPath, 'ios', target, constants_1.Constants.PLIST_FILE_NAME);
const content = simple_plist_1.default.parse(fs_1.default.readFileSync(plistPath, 'utf-8'));
const displayName = content.CFBundleDisplayName;
if (!displayName)
return null;
return {
id: 'iosDisplayName',
title: 'Ios Display Name',
value: displayName,
apply: () => setIosDisplayName(displayName),
};
}
catch (_e) {
return null;
}
}
async function setIosDisplayName(name) {
const target = (0, getIosProjectPath_1.getIosProjectName)();
const plistPath = path_1.default.join((0, getProjectPath_1.getProjectPath)(), 'ios', target, constants_1.Constants.PLIST_FILE_NAME);
const content = simple_plist_1.default.parse(fs_1.default.readFileSync(plistPath, 'utf-8'));
content.CFBundleDisplayName = name;
fs_1.default.writeFileSync(plistPath, simple_plist_1.default.stringify(content), 'utf-8');
(0, prompter_1.logMessage)(`changed ${picocolors_1.default.yellow('CFBundleDisplayName')} to ${picocolors_1.default.yellow(name)}`);
return Promise.resolve();
}