forked from microsoft/devicescript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuilderrors.mjs
More file actions
30 lines (27 loc) · 806 Bytes
/
builderrors.mjs
File metadata and controls
30 lines (27 loc) · 806 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/env zx
import "zx/globals"
const md = await fs.readFile("./website/docs/developer/errors.mdx", {
encoding: "utf-8",
})
const ts =
(await fs.exists("./interop/src/errors.ts")) &&
(await fs.readFile("./interop/src/errors.ts", { encoding: "utf-8" }))
const errors = {}
md.replace(/##\s+(?<name>.+)\s+\{#(?<id>[^}]+)\}/gi, _ => {
const m = /##\s+(?<name>.+)\s+\{#(?<id>[^}]+)\}/i.exec(_)
const { name, id } = m.groups
errors[name] = id
return ""
})
const fn = "./interop/src/errors.ts"
const newTs = `// generated file, run scripts/builderrors.mjs to update
export const errors: Record<string, string> = ${JSON.stringify(
errors,
null,
2
)};
`
if (ts !== newTs) {
console.log(`writing ${fn}`)
await fs.writeFile(fn, newTs, { encoding: "utf-8" })
}