源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
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
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
This commit is contained in:
commit
7be535059e
3358 files changed
+1306357
No files matched your search
@@ -0,0 +1,94 @@
|
||||
/*
|
||||
* 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()));
|
||||
}
|
||||
Reference in new issue
Block a user