UNPKG

react-native-integrate

Version:

Automate integration of additional code into React Native projects

76 lines (75 loc) 2.89 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.readLockFile = readLockFile; exports.updateIntegrationStatus = updateIntegrationStatus; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const constants_1 = require("../constants"); const getProjectPath_1 = require("./getProjectPath"); function createLockObject() { return { lockfileVersion: constants_1.Constants.CURRENT_LOCK_VERSION, packages: {} }; } function readLockFile() { const projectPath = (0, getProjectPath_1.getProjectPath)(); const lockFilePath = path_1.default.join(projectPath, constants_1.Constants.LOCK_FILE_NAME); try { if (!fs_1.default.existsSync(lockFilePath)) return { lockData: createLockObject(), justCreated: true, }; // Read the file and parse it as JSON const lockFileContent = fs_1.default.readFileSync(lockFilePath, 'utf-8'); if (!lockFileContent) return { lockData: createLockObject(), justCreated: true, }; // compare lock version const lockData = JSON.parse(lockFileContent); if (lockData.lockfileVersion !== constants_1.Constants.CURRENT_LOCK_VERSION) { console.error(`Error reading integrate-lock.json: lockfileVersion is not equal to ${constants_1.Constants.CURRENT_LOCK_VERSION}`); process.exit(0); } return { lockData, justCreated: false, }; } catch (error) { console.error('Error reading integrate-lock.json:', error); process.exit(0); } } function writeLockFile(data) { const projectPath = (0, getProjectPath_1.getProjectPath)(); const lockFilePath = path_1.default.join(projectPath, constants_1.Constants.LOCK_FILE_NAME); try { fs_1.default.writeFileSync(lockFilePath, JSON.stringify(data, null, 2)); } catch (error) { console.error('Error writing integrate-lock.json:', error); process.exit(0); } } function updateIntegrationStatus(packageIntegrations) { const { lockData } = readLockFile(); if (!lockData.packages) lockData.packages = {}; packageIntegrations.forEach(integration => { if (integration.lockProjectData.deleted) delete lockData.packages[integration.packageName]; else lockData.packages[integration.packageName] = integration.lockProjectData; }); lockData.packages = Object.keys(lockData.packages) .sort() .reduce((temp_obj, key) => { temp_obj[key] = lockData.packages[key]; return temp_obj; }, {}); writeLockFile(lockData); }