react-native-integrate
Version:
Automate integration of additional code into React Native projects
38 lines (37 loc) • 1.76 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.importIntegrateLockJson = importIntegrateLockJson;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const picocolors_1 = __importDefault(require("picocolors"));
const constants_1 = require("../../../constants");
const prompter_1 = require("../../../prompter");
const getProjectPath_1 = require("../../getProjectPath");
function importIntegrateLockJson(projectPath) {
try {
const lockFilePath = path_1.default.join(projectPath, constants_1.Constants.LOCK_FILE_NAME);
if (!fs_1.default.existsSync(lockFilePath))
return null;
const lockFile = fs_1.default.readFileSync(lockFilePath, 'utf-8');
// parse json file to object type
const lockData = JSON.parse(lockFile);
return {
id: 'integrateLockJson',
title: 'Integrate Lock File',
value: `${Object.keys(lockData.packages).length} total, ${Object.values(lockData.packages).filter(x => x.integrated).length} integrated packages`,
apply: () => setIntegrateLockJson(lockData),
};
}
catch (_e) {
return null;
}
}
async function setIntegrateLockJson(oldLockJson) {
const lockFilePath = path_1.default.join((0, getProjectPath_1.getProjectPath)(), constants_1.Constants.LOCK_FILE_NAME);
fs_1.default.writeFileSync(lockFilePath, JSON.stringify(oldLockJson, null, 2), 'utf-8');
(0, prompter_1.logMessage)(`imported ${picocolors_1.default.yellow('integrate-lock.json')}`);
return Promise.resolve();
}