(args: Args)
| 74 | } |
| 75 | |
| 76 | export function main(args: Args) { |
| 77 | const { |
| 78 | out, |
| 79 | packages: packagePaths, |
| 80 | releaseDependencies: releaseDependencyPaths, |
| 81 | } = validateArgs(args) |
| 82 | const releaseDependenciesByPath = new Map<string, string[]>() |
| 83 | |
| 84 | for (const value of releaseDependencyPaths) { |
| 85 | const {path, releaseDependency} = parseReleaseDependencyArg(value) |
| 86 | const releaseDependencies = releaseDependenciesByPath.get(path) || [] |
| 87 | releaseDependencies.push(releaseDependency) |
| 88 | releaseDependenciesByPath.set(path, releaseDependencies) |
| 89 | } |
| 90 | |
| 91 | const packages = packagePaths.map(value => { |
| 92 | const {path, packageJson} = parsePackageArg(value) |
| 93 | const manifest = JSON.parse(readFileSync(packageJson, 'utf8')) |
| 94 | return normalizePackage({ |
| 95 | path, |
| 96 | name: manifest.name, |
| 97 | version: manifest.version, |
| 98 | dependencies: manifest.dependencies, |
| 99 | optionalDependencies: manifest.optionalDependencies, |
| 100 | peerDependencies: manifest.peerDependencies, |
| 101 | releaseDependencies: releaseDependenciesByPath.get(path)?.sort(), |
| 102 | }) |
| 103 | }) |
| 104 | |
| 105 | mkdirSync(dirname(out), {recursive: true}) |
| 106 | writeFileSync(out, `${JSON.stringify({packages}, null, 2)}\n`) |
| 107 | } |
| 108 | |
| 109 | if (import.meta.filename === process.argv[1]) { |
| 110 | main(minimist<Args>(process.argv.slice(2))) |
no test coverage detected