UNPKG

molstar

Version:

A comprehensive macromolecular library.

81 lines (80 loc) 2.89 kB
#!/usr/bin/env node "use strict"; /** * Copyright (c) 2017-2019 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal <david.sehnal@gmail.com> * @author Alexander Rose <alexander.rose@weirdbyte.de> */ Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var argparse = tslib_1.__importStar(require("argparse")); var util = tslib_1.__importStar(require("util")); var fs = tslib_1.__importStar(require("fs")); var zlib = tslib_1.__importStar(require("zlib")); var converter_1 = require("./converter"); require('util.promisify').shim(); function process(srcPath, outPath, configPath, filterPath) { return tslib_1.__awaiter(this, void 0, void 0, function () { var config, filter, res; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: config = configPath ? JSON.parse(fs.readFileSync(configPath, 'utf8')) : void 0; filter = filterPath ? fs.readFileSync(filterPath, 'utf8') : void 0; return [4 /*yield*/, (0, converter_1.convert)(srcPath, srcPath.toLowerCase().indexOf('.bcif') > 0, config, filter)]; case 1: res = _a.sent(); return [4 /*yield*/, write(outPath, res)]; case 2: _a.sent(); return [2 /*return*/]; } }); }); } var zipAsync = util.promisify(zlib.gzip); function write(outPath, res) { return tslib_1.__awaiter(this, void 0, void 0, function () { var isGz; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: isGz = /\.gz$/i.test(outPath); if (!isGz) return [3 /*break*/, 2]; return [4 /*yield*/, zipAsync(res)]; case 1: res = _a.sent(); _a.label = 2; case 2: fs.writeFileSync(outPath, res); return [2 /*return*/]; } }); }); } function run(args) { process(args.src, args.out, args.config, args.filter); } var parser = new argparse.ArgumentParser({ add_help: true, description: 'Convert any BCIF file to a CIF file or vice versa' }); parser.add_argument('src', { help: 'Source file path' }); parser.add_argument('out', { help: 'Output file path' }); parser.add_argument('-c', '--config', { help: 'Optional encoding strategy/precision config path', required: false }); parser.add_argument('-f', '--filter', { help: 'Optional filter whitelist/blacklist path', required: false }); var args = parser.parse_args(); if (args) { run(args); }