monaco-editor-core-prepare.ts 2.4 KB

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