import { execSync } from 'child_process'
import depcheck, { PackageDependencies } from 'depcheck'
import { copyFile, readJson, remove, writeFile, writeJSON } from 'fs-extra'
-import { resolve } from 'path'
-import { cwd } from 'process'
+import { join, resolve } from 'path'
+import { root } from '../../shared/core-utils'
+
+if (!process.argv[2]) {
+ console.error('Need version as argument')
+ process.exit(-1)
+}
+
+const version = process.argv[2]
+console.log('Will generate package version %s.', version)
run()
.then(() => process.exit(0))
})
async function run () {
- const typesPath = resolve(cwd(), './packages/types/')
- const typesDistPath = resolve(cwd(), typesPath, './dist/')
- const typesDistPackageJsonPath = resolve(typesDistPath, './package.json')
- const typesDistGitIgnorePath = resolve(typesDistPath, './.gitignore')
- const mainPackageJson = await readJson(resolve(cwd(), './package.json'))
- const distTsConfigPath = resolve(cwd(), typesPath, './tsconfig.dist.json')
+ const typesPath = __dirname
+ const typesDistPath = join(typesPath, 'dist')
+ const typesDistPackageJsonPath = join(typesDistPath, 'package.json')
+ const typesDistGitIgnorePath = join(typesDistPath, '.gitignore')
+ const mainPackageJson = await readJson(join(root(), 'package.json'))
+ const distTsConfigPath = join(typesPath, 'tsconfig.dist.json')
const distTsConfig = await readJson(distTsConfigPath)
- const clientPackageJson = await readJson(resolve(cwd(), './client/package.json'))
+ const clientPackageJson = await readJson(join(root(), 'client', 'package.json'))
await remove(typesDistPath)
execSync('npm run tsc -- -b --verbose packages/types', { stdio: 'inherit' })
const allDependencies = Object.assign(
mainPackageJson.dependencies,
- mainPackageJson.devDepencies,
- clientPackageJson.dependencies
+ mainPackageJson.devDependencies,
+ clientPackageJson.dependencies,
+ clientPackageJson.devDependencies
) as PackageDependencies
// https://github.com/depcheck/depcheck#api
package: { dependencies: allDependencies }
}
- const { dependencies: unusedDependencies } = await depcheck(resolve(typesPath), depcheckOptions)
+ const result = await depcheck(typesDistPath, depcheckOptions)
+
+ if (Object.keys(result.invalidDirs).length !== 0) {
+ console.error('Invalid directories detected.', { invalidDirs: result.invalidDirs })
+ process.exit(-1)
+ }
+
+ if (Object.keys(result.invalidFiles).length !== 0) {
+ console.error('Invalid files detected.', { invalidFiles: result.invalidFiles })
+ process.exit(-1)
+ }
+
+ const unusedDependencies = result.dependencies
+
console.log(`Removing ${Object.keys(unusedDependencies).length} unused dependencies.`)
const dependencies = Object
.keys(allDependencies)
return dependencies
}, {})
- const { description, version, licence, engines, author, repository } = mainPackageJson
+ const { description, licence, engines, author, repository } = mainPackageJson
const typesPackageJson = {
name: '@peertube/peertube-types',
description,