rm async from generate constants

This commit is contained in:
Simon Laux
2022-06-20 14:32:58 +02:00
committed by Simon Laux
parent 102f6d9719
commit 6220724bf4

View File

@@ -1,28 +1,25 @@
#!/usr/bin/env node #!/usr/bin/env node
const fs = require('fs/promises') const fs = require('fs')
const path = require('path') const path = require('path')
const data = [] const data = []
const regex = /^#define\s+(\w+)\s+(\w+)/i
const header = path.resolve(__dirname, '../../deltachat-ffi/deltachat.h') const header = path.resolve(__dirname, '../../deltachat-ffi/deltachat.h')
;(async () => { console.log('Generating constants...')
console.log('Generating constants...')
const header_data = await fs.readFile(header, 'utf-8') const header_data = fs.readFileSync(header, 'UTF-8')
for (const line of header_data.split(/\r?\n/g)) { const regex = /^#define\s+(\w+)\s+(\w+)/gm
const match = regex.exec(line) while (null != (match = regex.exec(header_data))) {
if (match) {
const key = match[1] const key = match[1]
const value = parseInt(match[2]) const value = parseInt(match[2])
if (isNaN(value)) continue if (!isNaN(value)) {
data.push({ key, value }) data.push({ key, value })
} }
} }
delete header_data delete header_data
const constants = data const constants = data
.filter( .filter(
({ key }) => key.toUpperCase()[0] === key[0] // check if define name is uppercase ({ key }) => key.toUpperCase()[0] === key[0] // check if define name is uppercase
) )
@@ -36,7 +33,7 @@ const header = path.resolve(__dirname, '../../deltachat-ffi/deltachat.h')
}) })
.join(',\n') .join(',\n')
const events = data const events = data
.sort((lhs, rhs) => { .sort((lhs, rhs) => {
if (lhs.value < rhs.value) return -1 if (lhs.value < rhs.value) return -1
else if (lhs.value > rhs.value) return 1 else if (lhs.value > rhs.value) return 1
@@ -50,20 +47,19 @@ const header = path.resolve(__dirname, '../../deltachat-ffi/deltachat.h')
}) })
.join(',\n') .join(',\n')
// backwards compat // backwards compat
await fs.writeFile( fs.writeFileSync(
path.resolve(__dirname, '../constants.js'), path.resolve(__dirname, '../constants.js'),
`// Generated!\n\nmodule.exports = {\n${constants}\n}\n` `// Generated!\n\nmodule.exports = {\n${constants}\n}\n`
) )
// backwards compat // backwards compat
await fs.writeFile( fs.writeFileSync(
path.resolve(__dirname, '../events.js'), path.resolve(__dirname, '../events.js'),
`/* eslint-disable quotes */\n// Generated!\n\nmodule.exports = {\n${events}\n}\n` `/* eslint-disable quotes */\n// Generated!\n\nmodule.exports = {\n${events}\n}\n`
) )
await fs.writeFile( fs.writeFileSync(
path.resolve(__dirname, '../lib/constants.ts'), path.resolve(__dirname, '../lib/constants.ts'),
`// Generated!\n\nexport enum C {\n${constants.replace(/:/g, ' =')},\n}\n `// Generated!\n\nexport enum C {\n${constants.replace(/:/g, ' =')},\n}\n
// Generated!\n\nexport const EventId2EventName: { [key: number]: string } = {\n${events},\n}\n` // Generated!\n\nexport const EventId2EventName: { [key: number]: string } = {\n${events},\n}\n`
) )
})()