eae5d8c807
These conflicts will be resolved in the following commits. We do it this way so that PR review is possible.
67 lines
2.1 KiB
TypeScript
67 lines
2.1 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
'use strict';
|
|
|
|
import { makeUniversalApp } from 'vscode-universal';
|
|
import * as fs from 'fs-extra';
|
|
import * as path from 'path';
|
|
import * as plist from 'plist';
|
|
import * as product from '../../product.json';
|
|
|
|
async function main() {
|
|
const buildDir = process.env['AGENT_BUILDDIRECTORY'];
|
|
const arch = process.env['VSCODE_ARCH'];
|
|
|
|
if (!buildDir) {
|
|
throw new Error('$AGENT_BUILDDIRECTORY not set');
|
|
}
|
|
|
|
const appName = product.nameLong + '.app';
|
|
const x64AppPath = path.join(buildDir, 'vscode-x64', appName);
|
|
const arm64AppPath = path.join(buildDir, 'vscode-arm64', appName);
|
|
const x64AsarPath = path.join(x64AppPath, 'Contents', 'Resources', 'app', 'node_modules.asar');
|
|
const arm64AsarPath = path.join(arm64AppPath, 'Contents', 'Resources', 'app', 'node_modules.asar');
|
|
const outAppPath = path.join(buildDir, `VSCode-darwin-${arch}`, appName);
|
|
const productJsonPath = path.resolve(outAppPath, 'Contents', 'Resources', 'app', 'product.json');
|
|
const infoPlistPath = path.resolve(outAppPath, 'Contents', 'Info.plist');
|
|
|
|
await makeUniversalApp({
|
|
x64AppPath,
|
|
arm64AppPath,
|
|
x64AsarPath,
|
|
arm64AsarPath,
|
|
filesToSkip: [
|
|
'product.json',
|
|
'Credits.rtf',
|
|
'CodeResources',
|
|
'fsevents.node',
|
|
'.npmrc'
|
|
],
|
|
outAppPath,
|
|
force: true
|
|
});
|
|
|
|
let productJson = await fs.readJson(productJsonPath);
|
|
Object.assign(productJson, {
|
|
darwinUniversalAssetId: 'darwin-universal'
|
|
});
|
|
await fs.writeJson(productJsonPath, productJson);
|
|
|
|
let infoPlistString = await fs.readFile(infoPlistPath, 'utf8');
|
|
let infoPlistJson = plist.parse(infoPlistString);
|
|
Object.assign(infoPlistJson, {
|
|
LSRequiresNativeExecution: true
|
|
});
|
|
await fs.writeFile(infoPlistPath, plist.build(infoPlistJson), 'utf8');
|
|
}
|
|
|
|
if (require.main === module) {
|
|
main().catch(err => {
|
|
console.error(err);
|
|
process.exit(1);
|
|
});
|
|
}
|