UNPKG

chdman

Version:

💿 chdman binaries and wrapper for Node.js.

88 lines • 4.67 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import util from 'node:util'; import fs from 'node:fs'; import ChdmanBin from './chdmanBin.js'; import ChdmanInfo from './chdmanInfo.js'; export default { /** * Create a hard disk CHD. */ createHd(options) { return __awaiter(this, void 0, void 0, function* () { let existedBefore; try { yield util.promisify(fs.stat)(options.outputFilename); existedBefore = true; } catch (_a) { existedBefore = false; } try { yield ChdmanBin.run([ 'createhd', '--output', options.outputFilename, ...(options.outputParentFilename ? ['--outputparent', String(options.outputParentFilename)] : []), ...(options.force === true ? ['--force'] : []), '--input', options.inputFilename, ...(options.inputStartByte === undefined ? [] : ['--inputstartbyte', String(options.inputStartByte)]), ...(options.inputStartHunk === undefined ? [] : ['--inputstarthunk', String(options.inputStartHunk)]), ...(options.inputBytes === undefined ? [] : ['--inputbytes', String(options.inputBytes)]), ...(options.inputHunks === undefined ? [] : ['--inputhunks', String(options.inputHunks)]), ...(options.hunkSize === undefined ? [] : ['--hunksize', String(options.hunkSize)]), ...(options.compression === undefined ? [] : ['--compression', Array.isArray(options.compression) ? options.compression.join(',') : options.compression]), ...(options.template === undefined ? [] : ['--template', String(options.template)]), ...(options.identFilename === undefined ? [] : ['--ident', options.identFilename]), ...(options.cylindersHeadsSectors ? ['--chs', options.cylindersHeadsSectors] : []), ...(options.size === undefined ? [] : ['--size', String(options.size)]), ...(options.sectorSize === undefined ? [] : ['--sectorsize', String(options.sectorSize)]), ...(options.numProcessors === undefined ? [] : ['--numprocessors', String(options.numProcessors)]), ], options); } catch (error) { // chdman can leave cruft when it fails if (!existedBefore) { yield util.promisify(fs.rm)(options.outputFilename, { force: true }); } throw error; } // Test the created file try { yield ChdmanInfo.info({ inputFilename: options.outputFilename, }); } catch (error) { throw new Error(`created CHD is invalid: ${error}`); } }); }, /** * Extract a hard disk CHD. */ extractHd(options) { return __awaiter(this, void 0, void 0, function* () { yield ChdmanBin.run([ 'extracthd', '--output', options.outputFilename, ...(options.force === true ? ['--force'] : []), '--input', options.inputFilename, ...(options.inputParentFilename ? ['--inputparent', options.inputParentFilename] : []), ...(options.inputStartByte === undefined ? [] : ['--inputstartbyte', String(options.inputStartByte)]), ...(options.inputStartHunk === undefined ? [] : ['--inputstarthunk', String(options.inputStartHunk)]), ...(options.inputBytes === undefined ? [] : ['--inputbytes', String(options.inputBytes)]), ...(options.inputHunks === undefined ? [] : ['--inputhunks', String(options.inputHunks)]), ], options); }); }, }; //# sourceMappingURL=chdmanHd.js.map