@electron-forge/maker-zip
Version:
ZIP maker for Electron Forge
58 lines • 6.08 kB
JavaScript
import path from 'node:path';
import { promisify } from 'node:util';
import { writeJson } from '@electron-forge/core-utils';
import { MakerBase } from '@electron-forge/maker-base';
import { zip } from 'cross-zip';
export default class MakerZIP extends MakerBase {
name = 'zip';
defaultPlatforms = ['darwin', 'mas', 'win32', 'linux'];
isSupportedOnCurrentPlatform() {
return true;
}
async make({ dir, makeDir, appName, packageJSON, targetArch, targetPlatform, }) {
const zipDir = ['darwin', 'mas'].includes(targetPlatform)
? path.resolve(dir, `${appName}.app`)
: dir;
const zipName = `${path.basename(dir)}-${packageJSON.version}.zip`;
const zipPath = path.resolve(makeDir, 'zip', targetPlatform, targetArch, zipName);
await this.ensureFile(zipPath);
await promisify(zip)(zipDir, zipPath);
// Only generate RELEASES.json for darwin builds (not MAS)
if (targetPlatform === 'darwin' && this.config.macUpdateManifestBaseUrl) {
const parsed = new URL(this.config.macUpdateManifestBaseUrl);
parsed.pathname += '/RELEASES.json';
const response = await fetch(parsed.toString());
let currentValue = {
currentRelease: '',
releases: [],
};
if (response.status === 200) {
currentValue = (await response.json());
}
const updateUrl = new URL(this.config.macUpdateManifestBaseUrl);
updateUrl.pathname += `/${zipName}`;
// Remove existing release if it is already in the manifest
currentValue.releases = currentValue.releases || [];
currentValue.releases = currentValue.releases.filter((release) => release.version !== packageJSON.version);
// Add the current version as the current release
currentValue.currentRelease = packageJSON.version;
currentValue.releases.push({
version: packageJSON.version,
updateTo: {
name: `${appName} v${packageJSON.version}`,
version: packageJSON.version,
pub_date: new Date().toISOString(),
url: updateUrl.toString(),
notes: this.config.macUpdateReleaseNotes || '',
},
});
const releasesPath = path.resolve(makeDir, 'zip', targetPlatform, targetArch, 'RELEASES.json');
await this.ensureFile(releasesPath);
await writeJson(releasesPath, currentValue);
return [zipPath, releasesPath];
}
return [zipPath];
}
}
export { MakerZIP };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFrZXJaSVAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvTWFrZXJaSVAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sNEJBQTRCLENBQUM7QUFFckUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQW9CaEMsTUFBTSxDQUFDLE9BQU8sT0FBTyxRQUFTLFNBQVEsU0FBeUI7SUFDN0QsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUViLGdCQUFnQixHQUFvQixDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXhFLDRCQUE0QjtRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQ1QsR0FBRyxFQUNILE9BQU8sRUFDUCxPQUFPLEVBQ1AsV0FBVyxFQUNYLFVBQVUsRUFDVixjQUFjLEdBQ0Q7UUFDYixNQUFNLE1BQU0sR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQ3ZELENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sTUFBTSxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFFUixNQUFNLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksV0FBVyxDQUFDLE9BQU8sTUFBTSxDQUFDO1FBQ25FLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQzFCLE9BQU8sRUFDUCxLQUFLLEVBQ0wsY0FBYyxFQUNkLFVBQVUs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