itk-wasm
Version:
High-performance spatial analysis in a web browser, Node.js, and reproducible execution across programming languages and hardware architectures.
33 lines (24 loc) • 1.08 kB
JavaScript
import path from 'path'
import snakeCase from "../snake-case.js"
import wasmBinaryInterfaceJson from "../wasm-binary-interface-json.js"
import writeIfOverrideNotPresent from '../write-if-override-not-present.js'
function packageDunderInit(outputDir, buildDir, wasmBinaries, packageName, packageDescription, packageDir, pypackage, async, sync) {
const functionNames = []
wasmBinaries.forEach((wasmBinaryName) => {
const { interfaceJson, parsedPath } = wasmBinaryInterfaceJson(outputDir, buildDir, wasmBinaryName)
if (async) {
functionNames.push(snakeCase(interfaceJson.name) + "_async")
}
if (sync) {
functionNames.push(snakeCase(interfaceJson.name))
}
})
const functionImports = functionNames.map(n => `from .${n} import ${n}`).join("\n")
const dunderInit = `"""${packageName}: ${packageDescription}"""
${functionImports}
from ._version import __version__
`
const dunderInitPath = path.join(packageDir, pypackage, '__init__.py')
writeIfOverrideNotPresent(dunderInitPath, dunderInit, "#")
}
export default packageDunderInit