chore: workflow
This commit is contained in:
70
packages/desktop/scripts/fixMacZip.js
Normal file
70
packages/desktop/scripts/fixMacZip.js
Normal file
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* There is an issue with electron-builder generating invalid zip files for Catalina.
|
||||
* This is a script implementation of the following workaround:
|
||||
* https://snippets.cacher.io/snippet/354a3eb7b0dcbe711383
|
||||
*/
|
||||
|
||||
const fs = require('fs')
|
||||
const childProcess = require('child_process')
|
||||
const yaml = require('js-yaml')
|
||||
const assert = require('assert').strict
|
||||
const os = require('os')
|
||||
|
||||
function exec(command) {
|
||||
console.log(command)
|
||||
return new Promise((resolve, reject) => {
|
||||
childProcess.exec(command, (err, stdout, stderr) => {
|
||||
if (err) reject(err)
|
||||
else if (stderr) reject(Error(stderr))
|
||||
else resolve(stdout)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
async function getBlockMapInfo(fileName) {
|
||||
return JSON.parse(
|
||||
await exec(
|
||||
'./node_modules/app-builder-bin/mac/app-builder_amd64 blockmap' + ` -i ${fileName}` + ` -o ${os.tmpdir()}/a.zip`,
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
;(async () => {
|
||||
try {
|
||||
const { version } = JSON.parse(await fs.promises.readFile('app/package.json'))
|
||||
const zipName = `standard-notes-${version}-mac-x64.zip`
|
||||
const zipPath = `dist/${zipName}`
|
||||
console.log(`Removing ${zipPath}`)
|
||||
await fs.promises.unlink(zipPath)
|
||||
|
||||
process.chdir('dist/mac')
|
||||
const appName = process.argv.includes('--beta') ? 'Standard\\ Notes\\ \\(Beta\\).app' : 'Standard\\ Notes.app'
|
||||
|
||||
/** @see https://superuser.com/questions/574032/what-is-the-equivalent-unix-command-to-a-mac-osx-compress-menu-action */
|
||||
await exec(`ditto -c -k --sequesterRsrc --keepParent ${appName} ../${zipName}`)
|
||||
process.chdir('../..')
|
||||
|
||||
const [blockMapInfo, latestVersionInfo] = await Promise.all([
|
||||
getBlockMapInfo(zipPath),
|
||||
fs.promises.readFile('dist/latest-mac.yml').then(yaml.load),
|
||||
])
|
||||
const index = latestVersionInfo.files.findIndex((file) => file.url === zipName)
|
||||
assert(index >= 0)
|
||||
latestVersionInfo.files[index] = {
|
||||
...latestVersionInfo.files[index],
|
||||
...blockMapInfo,
|
||||
}
|
||||
latestVersionInfo.sha512 = blockMapInfo.sha512
|
||||
console.log('Writing new size, hash and blockMap size to dist/latest-mac.yml')
|
||||
await fs.promises.writeFile(
|
||||
'dist/latest-mac.yml',
|
||||
yaml.dump(latestVersionInfo, {
|
||||
lineWidth: Infinity,
|
||||
}),
|
||||
'utf8',
|
||||
)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
process.exitCode = 1
|
||||
}
|
||||
})()
|
||||
Reference in New Issue
Block a user