OverviewFilesCommitsIssuesDocsReleasesPeers

mirall-cli / node_modules / electron-windows-msix / lib / bin.js

102 lines · javascript ref:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.sign = exports.make = exports.pri = exports.priConfig = exports.getCertPublisher = void 0;
const windows_sign_1 = require("@electron/windows-sign");
const child_process_1 = require("child_process");
const logger_1 = require("./logger");
const run = async (executable, args) => {
    return new Promise((resolve, reject) => {
        const proc = (0, child_process_1.spawn)(executable, args, {});
        logger_1.log.debug(`Calling ${executable} with args`, args);
        const cleanOutData = (data) => {
            return data
                .toString()
                .replace(/\r/g, '')
                .replace(/\\\\/g, '\\')
                .split('\n');
        };
        let stdout = "";
        proc.stdout.on('data', (data) => {
            stdout += data;
        });
        let stderr = "";
        proc.stderr.on('data', (data) => {
            stderr += data;
        });
        proc.on('exit', (code) => {
            logger_1.log.debug(`stdout of ${executable}`, cleanOutData(stdout));
            if (code !== 0) {
                logger_1.log.error(`stderr of ${executable}`, false, cleanOutData(stderr));
                return reject(new Error(`Failed running ${executable} Exit Code: ${code} See previous errors for details`));
            }
            return resolve(stdout);
        });
        proc.stdin.end();
    });
};
const getCertPublisher = async (cert, cert_pass) => {
    const args = [];
    args.push('-p', cert_pass);
    args.push('-dump', cert);
    const certDump = await run('certutil', args);
    const subjectRegex = /Subject:\s*(.*)/;
    const match = certDump.match(subjectRegex);
    const publisher = match ? match[1].trim() : null;
    if (!publisher) {
        logger_1.log.error('Unable to find publisher in Cert');
    }
    return publisher;
};
exports.getCertPublisher = getCertPublisher;
const priConfig = async (program) => {
    const { makePri, priConfig, createPri } = program;
    if (createPri) {
        const args = ['createconfig', '/cf', priConfig, '/dq', 'en-US'];
        logger_1.log.debug('Creating pri config.');
        await run(makePri, args);
    }
    else {
        logger_1.log.debug('Skipping making pri config.');
    }
};
exports.priConfig = priConfig;
const pri = async (program) => {
    const { makePri, priConfig, layoutDir, priFile, appManifestLayout, createPri } = program;
    if (createPri) {
        logger_1.log.debug('Making pri.');
        const args = ['new', '/pr', layoutDir, '/cf', priConfig, '/mn', appManifestLayout, '/of', priFile, '/v'];
        await run(makePri, args);
    }
    else {
        logger_1.log.debug('Skipping making pri.');
    }
};
exports.pri = pri;
const make = async (program) => {
    const { makeMsix, layoutDir, msix, isSparsePackage } = program;
    const args = [
        'pack',
        '/d',
        layoutDir,
        '/p',
        msix,
        '/o',
    ];
    if (isSparsePackage) {
        args.push('/nv');
    }
    await run(makeMsix, args);
};
exports.make = make;
const sign = async (program) => {
    if (program.sign) {
        const signOptions = program.windowsSignOptions;
        logger_1.log.debug('Signing with options', signOptions);
        await (0, windows_sign_1.sign)(signOptions);
    }
    else {
        logger_1.log.debug('Skipping signing.');
    }
};
exports.sign = sign;
//# sourceMappingURL=bin.js.map