43 lines
1.2 KiB
JavaScript
Executable File
43 lines
1.2 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
const fs = require("fs")
|
|
const { resolve } = require("path")
|
|
|
|
const root = resolve(__dirname, "../../..")
|
|
const packages = [
|
|
root,
|
|
resolve(root, "packages/web"),
|
|
resolve(root, "packages/opvault.js"),
|
|
]
|
|
|
|
const readJSON = path => JSON.parse(fs.readFileSync(path, "utf-8"))
|
|
const infoMap = Object.fromEntries(
|
|
packages.flatMap(dir => {
|
|
const rootPkg = readJSON(resolve(dir, "package.json"))
|
|
const dependencies = Object.keys(rootPkg.dependencies || {})
|
|
return dependencies.map(dependency => {
|
|
const pkgDir = resolve(dir, "node_modules", dependency)
|
|
const pkg = readJSON(resolve(pkgDir, "package.json"))
|
|
const licenseFile = fs
|
|
.readdirSync(pkgDir)
|
|
.filter(x => x.toLowerCase().startsWith("license"))
|
|
if (licenseFile.length !== 1) {
|
|
console.error(fs.readdirSync(pkgDir))
|
|
throw new Error(`Cannot determine license file for ${pkg.name}`)
|
|
}
|
|
return [
|
|
pkg.name,
|
|
{
|
|
name: pkg.name,
|
|
author: pkg.author?.name ?? pkg.author,
|
|
license: fs.readFileSync(resolve(pkgDir, licenseFile[0]), "utf-8"),
|
|
},
|
|
]
|
|
})
|
|
})
|
|
)
|
|
|
|
fs.writeFileSync(
|
|
resolve(__dirname, "../src/third-party-licenses.json"),
|
|
JSON.stringify(infoMap, null, 2)
|
|
)
|