Custom zip script for macOS update package
This commit is contained in:
parent
5c6a474ec9
commit
4678f076eb
|
@ -46,13 +46,14 @@
|
||||||
"dev:webpack": "NODE_ENV=development webpack-dev-server --hot",
|
"dev:webpack": "NODE_ENV=development webpack-dev-server --hot",
|
||||||
"dev:typed-scss": "yarn build:typed-scss -w",
|
"dev:typed-scss": "yarn build:typed-scss -w",
|
||||||
"dev:storybook": "SIGNAL_ENV=storybook start-storybook -p 6006 -s ./",
|
"dev:storybook": "SIGNAL_ENV=storybook start-storybook -p 6006 -s ./",
|
||||||
"build": "run-s --print-label build:grunt build:typed-scss build:webpack build:release",
|
"build": "run-s --print-label build:grunt build:typed-scss build:webpack build:release build:zip",
|
||||||
"build:dev": "run-s --print-label build:grunt build:typed-scss build:webpack",
|
"build:dev": "run-s --print-label build:grunt build:typed-scss build:webpack",
|
||||||
"build:grunt": "yarn grunt",
|
"build:grunt": "yarn grunt",
|
||||||
"build:typed-scss": "tsm sticker-creator",
|
"build:typed-scss": "tsm sticker-creator",
|
||||||
"build:webpack": "cross-env NODE_ENV=production webpack",
|
"build:webpack": "cross-env NODE_ENV=production webpack",
|
||||||
"build:electron": "electron-builder --config.extraMetadata.environment=$SIGNAL_ENV",
|
"build:electron": "electron-builder --config.extraMetadata.environment=$SIGNAL_ENV",
|
||||||
"build:release": "cross-env SIGNAL_ENV=production npm run build:electron -- --config.directories.output=release",
|
"build:release": "cross-env SIGNAL_ENV=production npm run build:electron -- --config.directories.output=release",
|
||||||
|
"build:zip": "node scripts/zip-macos-release.js",
|
||||||
"preverify:ts": "yarn build:typed-scss",
|
"preverify:ts": "yarn build:typed-scss",
|
||||||
"verify": "run-p --print-label verify:*",
|
"verify": "run-p --print-label verify:*",
|
||||||
"verify:ts": "tsc --noEmit"
|
"verify:ts": "tsc --noEmit"
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
const { zipMacOSRelease } = require('../ts/scripts/zip-macos-release');
|
||||||
|
|
||||||
|
zipMacOSRelease();
|
|
@ -0,0 +1,78 @@
|
||||||
|
/* tslint:disable no-console non-literal-fs-path */
|
||||||
|
import fs from 'fs';
|
||||||
|
import path from 'path';
|
||||||
|
import rimraf from 'rimraf';
|
||||||
|
import { execSync } from 'child_process';
|
||||||
|
import packageJSON from '../../package.json';
|
||||||
|
|
||||||
|
export function zipMacOSRelease() {
|
||||||
|
if (process.platform !== 'darwin') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const files = fs
|
||||||
|
.readdirSync('release')
|
||||||
|
.filter(file => path.extname(file) === '.zip');
|
||||||
|
if (!files.length) {
|
||||||
|
throw new Error(
|
||||||
|
'No zip file found. Maybe the release did not complete properly?'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (files.length > 1) {
|
||||||
|
throw new Error(
|
||||||
|
'More than one zip file found, release directory was not cleared.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
const zipFile = files[0];
|
||||||
|
const zipPath = path.join('release', zipFile);
|
||||||
|
|
||||||
|
console.log('Removing current zip file');
|
||||||
|
rimraf.sync(zipPath);
|
||||||
|
|
||||||
|
const appName = `${packageJSON.productName}.app`;
|
||||||
|
const appPath = path.join('release', 'mac', appName);
|
||||||
|
|
||||||
|
const tmpPath = path.join('release', 'tmp');
|
||||||
|
const appDir = path.dirname(appPath);
|
||||||
|
const tmpZip = path.join(appDir, zipFile);
|
||||||
|
console.log('Creating temporary zip file at', tmpZip);
|
||||||
|
try {
|
||||||
|
execSync(`cd ${appDir} && zip -ro ${zipFile} "${appName}"`);
|
||||||
|
console.log(
|
||||||
|
'Unzipping to remove duplicate electron references from',
|
||||||
|
tmpZip
|
||||||
|
);
|
||||||
|
execSync(`unzip ${tmpZip} -d ${tmpPath}`);
|
||||||
|
} catch (err) {
|
||||||
|
console.log('stdout:', String(err.stdout));
|
||||||
|
console.log('stderr:', String(err.stderr));
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
console.log('Removing temporary zip file');
|
||||||
|
rimraf.sync(tmpZip);
|
||||||
|
|
||||||
|
const electronFrameworkPath = path.join(
|
||||||
|
tmpPath,
|
||||||
|
appName,
|
||||||
|
'Contents',
|
||||||
|
'Frameworks',
|
||||||
|
'Electron Framework.framework',
|
||||||
|
'Versions'
|
||||||
|
);
|
||||||
|
console.log('Removing duplicate electron framework', electronFrameworkPath);
|
||||||
|
rimraf.sync(electronFrameworkPath);
|
||||||
|
|
||||||
|
try {
|
||||||
|
console.log('Creating final zip');
|
||||||
|
execSync(`cd ${tmpPath} && zip -ro ${zipFile} "${appName}"`);
|
||||||
|
} catch (err) {
|
||||||
|
console.log('stdout:', String(err.stdout));
|
||||||
|
console.log('stderr:', String(err.stderr));
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
console.log('Moving into the final destination', zipPath);
|
||||||
|
fs.renameSync(path.join(tmpPath, zipFile), zipPath);
|
||||||
|
rimraf.sync(tmpPath);
|
||||||
|
|
||||||
|
console.log('zip-macos-release is done');
|
||||||
|
}
|
Loading…
Reference in New Issue