camstreamerlib
Version:
Helper library for CamStreamer ACAP applications.
133 lines (132 loc) • 4.97 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
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 = __importStar(require("path"));
const fs = __importStar(require("fs"));
const child_process_1 = require("child_process");
const productionModulesFolder = 'production_modules';
function isDirectory(filePath) {
const stat = fs.statSync(filePath);
return stat.isDirectory();
}
function getPackageInfo(folder) {
try {
const manifest = fs.readFileSync(path.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.basename(folder)}(_[0-9]){3}\\.zip`);
const files = fs.readdirSync(folder);
for (const file of files) {
const filePath = path.join(folder, file);
const isDir = isDirectory(filePath);
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(filePath);
}
else if (file === productionModulesFolder && options.includeNodeModules) {
zip.addLocalFolder(path.join(productionModulesFolder, 'node_modules'), 'node_modules');
}
else if (isDir) {
zip.addLocalFolder(filePath, file);
}
else {
zip.addLocalFile(filePath);
}
}
}
function installDependencies() {
if (!fs.existsSync(productionModulesFolder)) {
fs.mkdirSync(productionModulesFolder, {});
}
fs.cpSync('package.json', path.join(productionModulesFolder, 'package.json'));
fs.cpSync('package-lock.json', path.join(productionModulesFolder, 'package-lock.json'));
(0, child_process_1.execSync)(`npm ci --omit=dev`, {
cwd: path.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.existsSync('dist')) {
options.typeScriptPackage = true;
}
const folder = path.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.existsSync(zipFile)) {
try {
fs.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));