UNPKG

camstreamerlib

Version:

Helper library for CamStreamer ACAP applications.

110 lines (109 loc) 4.11 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const adm_zip_1 = __importDefault(require("adm-zip")); const path_1 = __importDefault(require("path")); const fs_1 = __importDefault(require("fs")); const child_process_1 = require("child_process"); const productionModulesFolder = 'production_modules'; function isDirectory(path) { const stat = fs_1.default.statSync(path); return stat.isDirectory(); } function getPackageInfo(folder) { try { const manifest = fs_1.default.readFileSync(path_1.default.join(folder, 'manifest.json')); const manifestParsed = JSON.parse(manifest.toString()); return { packageName: manifestParsed.package_name, packageVersion: manifestParsed.package_version.replace(/\./g, '_'), }; } catch (err) { console.error('Get package version:', err); } } function createZipArchive(zip, folder, options) { const zipFileRegex = new RegExp(`${path_1.default.basename(folder)}(_[0-9]){3}\\.zip`); const files = fs_1.default.readdirSync(folder); for (const file of files) { const path = path_1.default.join(folder, file); const isDir = isDirectory(path); if (file[0] === '.' || zipFileRegex.test(file) || file === 'node_modules' || (file === 'src' && options.typeScriptPackage) || options.excludedFileNames.includes(file)) { continue; } else if (file === 'dist' && options.typeScriptPackage) { zip.addLocalFolder(path); } else if (file === productionModulesFolder && options.includeNodeModules) { zip.addLocalFolder(path_1.default.join(productionModulesFolder, 'node_modules'), 'node_modules'); } else if (isDir) { zip.addLocalFolder(path, file); } else { zip.addLocalFile(path); } } } function installDependencies() { if (!fs_1.default.existsSync(productionModulesFolder)) { fs_1.default.mkdirSync(productionModulesFolder, {}); } fs_1.default.cpSync('package.json', path_1.default.join(productionModulesFolder, 'package.json')); fs_1.default.cpSync('package-lock.json', path_1.default.join(productionModulesFolder, 'package-lock.json')); (0, child_process_1.execSync)(`npm ci --omit=dev`, { cwd: path_1.default.join(process.cwd(), productionModulesFolder), }); } function main(args) { const options = { includeNodeModules: false, typeScriptPackage: false, outputFolder: '.', excludedFileNames: [], }; for (const arg of args) { if (arg === '-i' || arg === '-includeNodeModules') { options.includeNodeModules = true; } if (arg.startsWith('-w=') || arg.startsWith('-where=')) { options.outputFolder = arg.substring(arg.indexOf('=') + 1); } if (arg.startsWith('-e=') || arg.startsWith('-exclude=')) { options.excludedFileNames = arg.substring(arg.indexOf('=') + 1).split(','); } } if (options.includeNodeModules) { installDependencies(); } if (fs_1.default.existsSync('dist')) { options.typeScriptPackage = true; } const folder = path_1.default.resolve('.'); const packageInfo = getPackageInfo(folder); if (packageInfo === undefined) { console.error('Package info not found'); process.exit(1); } const zipFile = `${options.outputFolder}/${packageInfo.packageName}_${packageInfo.packageVersion}.zip`; if (fs_1.default.existsSync(zipFile)) { try { fs_1.default.unlinkSync(zipFile); } catch (error) { console.error('An error occured: ', error); process.exit(1); } } const zip = new adm_zip_1.default(); createZipArchive(zip, folder, options); zip.writeZip(zipFile); } main(process.argv.slice(2));