Dependency audit / audit (push) Canceled after 0s
CI / plan (push) Canceled after 0s
Gitoxide helper admission / macos-latest (push) Canceled after 0s
Gitoxide helper admission / ubuntu-latest (push) Canceled after 0s
Gitoxide helper admission / windows-latest (push) Canceled after 0s
Runtime Host peer admission / quality (push) Canceled after 0s
Windows recovery / windows_recovery (push) Canceled after 0s
CI / heavy (push) Canceled after 0s
CI / test (push) Canceled after 0s
95 lines
3.4 KiB
JavaScript
95 lines
3.4 KiB
JavaScript
/*
|
|
* Licensed to the Apache Software Foundation (ASF) under one
|
|
* or more contributor license agreements. See the NOTICE file
|
|
* distributed with this work for additional information
|
|
* regarding copyright ownership. The ASF licenses this file
|
|
* to you under the Apache License, Version 2.0 (the
|
|
* "License"); you may not use this file except in compliance
|
|
* with the License. You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing,
|
|
* software distributed under the License is distributed on an
|
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
* KIND, either express or implied. See the License for the
|
|
* specific language governing permissions and limitations
|
|
* under the License.
|
|
*/
|
|
|
|
import { access, readFile, rm } from 'node:fs/promises';
|
|
import { dirname, join } from 'node:path';
|
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
import {
|
|
bumpedAutoupdateVersion,
|
|
verifyDesktopUpdateArtifacts,
|
|
} from './desktop-update-contract.mjs';
|
|
import { runCommand } from './verify-packaged-app.mjs';
|
|
|
|
const repoRoot = dirname(dirname(fileURLToPath(import.meta.url)));
|
|
const desktopRoot = join(repoRoot, 'apps', 'desktop');
|
|
|
|
/** Builds only the signed ZIP needed to prove the candidate's next update. */
|
|
export async function packageMacosAutoupdateNext({
|
|
platform = process.platform,
|
|
arch = process.arch,
|
|
run = runCommand,
|
|
env = process.env,
|
|
} = {}) {
|
|
if (platform !== 'darwin' || arch !== 'arm64') {
|
|
throw new Error('The macOS auto-update build requires an Apple Silicon macOS host.');
|
|
}
|
|
const manifest = JSON.parse(await readFile(join(desktopRoot, 'package.json'), 'utf8'));
|
|
const nextVersion = bumpedAutoupdateVersion(manifest.version);
|
|
const outputDirectory = join(desktopRoot, 'release-autoupdate-next');
|
|
const zipName = `Maka-${nextVersion}-mac-arm64.zip`;
|
|
|
|
await access(join(desktopRoot, 'dist'));
|
|
await access(join(desktopRoot, 'release', `Maka-${manifest.version}-mac-arm64.zip`));
|
|
await rm(outputDirectory, { recursive: true, force: true });
|
|
|
|
const args = [
|
|
'--workspace',
|
|
'@maka/desktop',
|
|
'exec',
|
|
'--',
|
|
'electron-builder',
|
|
'--config',
|
|
'electron-builder.config.mjs',
|
|
'--mac',
|
|
'zip',
|
|
'--arm64',
|
|
'--publish',
|
|
'never',
|
|
`-c.extraMetadata.version=${nextVersion}`,
|
|
'-c.extraMetadata.makaUpdateTestProfile=true',
|
|
'-c.mac.notarize=false',
|
|
'-c.directories.output=release-autoupdate-next',
|
|
];
|
|
if (env.MAKA_LOCAL_UPDATE_SIGNING_IDENTITY) {
|
|
args.push(`-c.mac.identity=${env.MAKA_LOCAL_UPDATE_SIGNING_IDENTITY}`);
|
|
args.push('-c.mac.timestamp=none');
|
|
args.push('-c.mac.hardenedRuntime=false');
|
|
}
|
|
await run('npm', args, { cwd: repoRoot, env });
|
|
|
|
await verifyDesktopUpdateArtifacts({
|
|
directory: outputDirectory,
|
|
metadataName: 'latest-mac.yml',
|
|
version: nextVersion,
|
|
artifactName: zipName,
|
|
});
|
|
await rm(join(outputDirectory, 'mac-arm64'), { recursive: true, force: true });
|
|
return {
|
|
version: nextVersion,
|
|
zipPath: join(outputDirectory, zipName),
|
|
metadataPath: join(outputDirectory, 'latest-mac.yml'),
|
|
blockmapPath: join(outputDirectory, `${zipName}.blockmap`),
|
|
directory: outputDirectory,
|
|
};
|
|
}
|
|
|
|
if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
|
|
console.log(JSON.stringify(await packageMacosAutoupdateNext()));
|
|
}
|