function constructProcessor()

in electron-installer/deb.js [88:150]


function constructProcessor(config, buildTarget, buildInfos, packageJson) {
    if (process.platform !== "linux") {
        log.warning(ModuleName, "Target", "Skipping: Publishing RPM must be on linux.");
        return new PassThrough({ objectMode: true });
    }

    if (buildTarget.platform !== "linux") {
        log.error(ModuleName, "Target", "Skipping: BuildTarget.platform must be linux.");
        return new PassThrough({ objectMode: true });
    }

    if (!dd.isModuleInstalled(InstallerDepName)) {
        log.info(ModuleName, "Dependency", `Installing dependency "${InstallerDepName}" ...`);
        dd.installDynamicDependency(
            InstallerDepName,
            {
                depTypes: ["dev"]
            });
    }

    return new Transform({
        objectMode: true,

        /** @param {import("vinyl")} chunk */
        transform(chunk, encoding, callback) {
            if (!chunk.isDirectory()) {
                this.push(chunk);
                callback();
                return;
            }

            const options = {
                src: chunk.path,
                dest: tmp.dirSync({ dir: buildInfos.paths.intermediateDir, unsafeCleanup: true }).name,
                arch: toInstallerArch(buildTarget.arch),
                name: buildInfos.executableName,
                productName: buildInfos.productName,
                genericName: buildInfos.productName,
                homepage: packageJson.homepage,
                version: buildInfos.buildNumber,
                revision: "0",
                section: config.section,
                bin: buildInfos.executableName,
                icon: generateIconOptions(config.icons),
                categories: config.categories
            };

            const installer = require(InstallerDepName);

            installer(options).then(
                () => {
                    glob.sync(path.join(options.dest, "**/*"), { dot: true, onlyFiles: false })
                        .forEach(
                            /** @param {string} fileName */
                            (fileName) => this.push(vinyl(fileName, options.dest)));

                    callback();
                },
                /** @param {*} reason */
                (reason) => callback(reason));
        }
    });
};