monaco-editor-core-prepare.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { mkdir, rm } from 'fs/promises';
  2. import { join, resolve } from 'path';
  3. import { group, gitShallowClone, run, writeJsonFile, getNightlyVersion } from '../lib';
  4. import { PackageJson } from './types';
  5. const selfPath = __dirname;
  6. const rootPath = join(selfPath, '..', '..');
  7. const dependenciesPath = join(rootPath, 'dependencies');
  8. const vscodePath = resolve(dependenciesPath, 'vscode');
  9. const monacoEditorPackageJsonPath = resolve(rootPath, 'package.json');
  10. async function prepareMonacoEditorCoreReleaseStableOrNightly() {
  11. const monacoEditorPackageJson = require(monacoEditorPackageJsonPath) as {
  12. version: string;
  13. vscodeRef: string;
  14. };
  15. let version: string;
  16. let ref: string;
  17. const arg = process.argv[2];
  18. if (arg === 'stable') {
  19. version = monacoEditorPackageJson.version;
  20. ref = monacoEditorPackageJson.vscodeRef;
  21. } else if (arg === 'nightly') {
  22. version = getNightlyVersion(monacoEditorPackageJson.version);
  23. ref = 'main';
  24. } else {
  25. throw new Error('Invalid argument');
  26. }
  27. await prepareMonacoEditorCoreRelease(version, ref);
  28. // npm package is now in dependencies/vscode/out-monaco-editor-core, ready to be published
  29. }
  30. async function prepareMonacoEditorCoreRelease(version: string, vscodeRef: string) {
  31. await mkdir(vscodePath, { recursive: true });
  32. await rm(dependenciesPath, { force: true, recursive: true });
  33. let vscodeCommitId: string;
  34. await group('Checkout vscode', async () => {
  35. const result = await gitShallowClone(
  36. vscodePath,
  37. 'https://github.com/microsoft/vscode.git',
  38. vscodeRef
  39. );
  40. vscodeCommitId = result.commitId;
  41. });
  42. await group('Checkout vscode-loc', async () => {
  43. await gitShallowClone(
  44. // Must be a sibling to the vscode repository
  45. 'dependencies/vscode-loc',
  46. 'https://github.com/microsoft/vscode-loc.git',
  47. 'main'
  48. );
  49. });
  50. await group('Set Version', async () => {
  51. const monacoEditorCorePackageJsonSourcePath = resolve(
  52. vscodePath,
  53. './build/monaco/package.json'
  54. );
  55. const packageJson = require(monacoEditorCorePackageJsonSourcePath) as PackageJson;
  56. packageJson.version = version;
  57. // This ensures we can always figure out which commit monaco-editor-core was built from
  58. packageJson.vscodeCommitId = vscodeCommitId;
  59. await writeJsonFile(monacoEditorCorePackageJsonSourcePath, packageJson);
  60. });
  61. await group('Building & Testing', async () => {
  62. await run(resolve(selfPath, './monaco-editor-core.sh'), { cwd: vscodePath });
  63. });
  64. }
  65. prepareMonacoEditorCoreReleaseStableOrNightly();