napi-rs/generate-triplelist.js

40 lines
1,012 B
JavaScript

const { readFileSync, writeFileSync } = require('fs')
const { join } = require('path')
const { groupBy, mapValues } = require('lodash')
const prettier = require('prettier')
const { parseTriple } = require('./cli/scripts/parse-triple')
const rawLists = readFileSync(join(__dirname, 'triples', 'target-list'), 'utf8')
const tripleLists = rawLists
.trim()
.split('\n')
.filter((line) => !line.startsWith('wasm') && line.trim().length)
.map(parseTriple)
.reduce((acc, cur) => {
acc[cur.raw] = cur
return acc
}, {})
const platformArchTriples = mapValues(
groupBy([...Object.values(tripleLists)], 'platform'),
(v) => groupBy(v, 'arch'),
)
const fileContent = `
module.exports = ${JSON.stringify(tripleLists, null, 2)}
module.exports.platformArchTriples = ${JSON.stringify(platformArchTriples)}
`
writeFileSync(
join(__dirname, 'triples', 'index.js'),
prettier.format(fileContent, {
semi: false,
singleQuote: true,
trailingComma: 'es5',
parser: 'typescript',
}),
)