UNPKG

molstar

Version:

A comprehensive macromolecular library.

51 lines (50 loc) 2.98 kB
#!/usr/bin/env node "use strict"; /** * Copyright (c) 2026 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Adam Midlik <midlik@gmail.com> * * Command-line application for converting MolViewSpec MVSJ into MSVX files * Build: npm run build * Run: node lib/commonjs/cli/mvs/mvs-mvsj-to-mvsx -i examples/mvs/1cbs.mvsj -o tmp/1cbs.mvsx */ Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const argparse_1 = require("argparse"); const fs_1 = tslib_1.__importDefault(require("fs")); const mvs_data_1 = require("../../extensions/mvs/mvs-data.js"); const data_source_1 = require("../../mol-util/data-source.js"); (0, data_source_1.setFSModule)(fs_1.default); /** Return parsed command line arguments for `main` */ function parseArguments() { const parser = new argparse_1.ArgumentParser({ description: 'Command-line application for converting MolViewSpec MVSJ into MSVX files' }); parser.add_argument('-i', '--input', { required: true, nargs: '+', help: 'Input file(s) in .mvsj format.' }); parser.add_argument('-o', '--output', { required: false, nargs: '+', help: 'File path(s) for output files in .mvsx format (one output path for each input file). If ommitted, filenames will be created automatically by replacing file extension.' }); parser.add_argument('--base-uri', { help: 'Base URI/path used to resolve relative URIs in the input file (default: path of the input file itself). Use `--base-uri .` for using the current working directory as base URI.' }); parser.add_argument('--skip-external', { action: 'store_true', help: 'Do not include external resources (i.e. absolute URIs) in the MVSX.' }); const args = parser.parse_args(); if (args.output && args.output.length !== args.input.length) { parser.error(`argument: --output: must specify the same number of input and output file paths (specified ${args.input.length} input path${args.input.length !== 1 ? 's' : ''} but ${args.output.length} output path${args.output.length !== 1 ? 's' : ''})`); } return { ...args }; } /** Main workflow for converting MVSJ to MVSX files. */ async function main(args) { var _a, _b, _c; const cache = {}; for (let i = 0; i < args.input.length; i++) { const input = args.input[i]; const output = (_b = (_a = args.output) === null || _a === void 0 ? void 0 : _a[i]) !== null && _b !== void 0 ? _b : input.replace(/(\.mvsj)?$/i, '.mvsx'); console.log(`Processing ${input} -> ${output}`); const mvsj = fs_1.default.readFileSync(input, { encoding: 'utf8' }); const mvsData = mvs_data_1.MVSData.fromMVSJ(mvsj); const mvsx = await mvs_data_1.MVSData.toMVSX(mvsData, { baseUri: (_c = args.base_uri) !== null && _c !== void 0 ? _c : input, skipExternal: args.skip_external, cache, }); fs_1.default.writeFileSync(output, mvsx); } } main(parseArguments());