Skip to content

Commit

Permalink
Merge pull request #116 from CodinGame/check-before-treemending
Browse files Browse the repository at this point in the history
Don't try to apply tree-mending patch twice
  • Loading branch information
CGNonofr committed May 29, 2023
2 parents 87f7987 + 30cda38 commit a75aa3f
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 7 deletions.
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@
"zx": "^7.2.1"
},
"peerDependencies": {
"monaco-editor": "~0.37.1",
"monaco-editor": "0.37.1",
"vscode-oniguruma": "^1.7.0",
"vscode-textmate": "^9.0.0",
"yauzl": "^2.10.0"
Expand Down
38 changes: 33 additions & 5 deletions src/monaco-treemending.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,32 @@ import { createRequire } from 'node:module'
const require = createRequire(import.meta.url)

async function run () {
const ownPackageJson = JSON.parse((await fs.readFile(require.resolve('../package.json'))).toString('utf-8'))
const expectedMonacoVersion = ownPackageJson.peerDependencies['monaco-editor']

const patchContent = await fs.readFile(require.resolve('../monaco-editor-treemending.patch'))

const monacoDirectory = path.resolve(path.dirname(require.resolve('monaco-editor/monaco.d.ts', { paths: [process.cwd()] })), 'esm')
const monacoDirectory = path.dirname(require.resolve('monaco-editor/monaco.d.ts', { paths: [process.cwd()] }))
const monacoEsmDirectory = path.resolve(monacoDirectory, 'esm')
const monacoPackageJsonFile = path.resolve(monacoDirectory, 'package.json')

const monacoPackageJson = JSON.parse((await fs.readFile(monacoPackageJsonFile)).toString('utf-8'))
const monacoVersion = monacoPackageJson.version

if (expectedMonacoVersion !== monacoVersion) {
console.error(`Wrong monaco-editor version: expecting ${expectedMonacoVersion}, got ${monacoVersion}`)
process.exit(1)
}

const alreadyPatched: boolean = monacoPackageJson.treemended ?? false
if (alreadyPatched) {
// eslint-disable-next-line no-console
console.info('Monaco-editor has already been tree-mended, ignoring')
process.exit(0)
}

function getMonacoFile (diff: ParsedDiff) {
return path.resolve(monacoDirectory, diff.oldFileName!.slice('a/'.length))
return path.resolve(monacoEsmDirectory, diff.oldFileName!.slice('a/'.length))
}

await new Promise<void>((resolve, reject) => {
Expand Down Expand Up @@ -46,11 +66,19 @@ async function run () {
}
})
})
}

run().then(() => {
// Mark monaco as treemended
await fs.writeFile(monacoPackageJsonFile, JSON.stringify({
...monacoPackageJson,
treemended: true
}, null, 2))

// eslint-disable-next-line no-console
console.info('Monaco-editor was tree-mended')
}, err => {
process.exit(0)
}

run().catch(err => {
console.error(err)
process.exit(1)
})

0 comments on commit a75aa3f

Please sign in to comment.