]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - packages/types/generate-package.ts
Don't allow video edition if not enabled
[github/Chocobozzz/PeerTube.git] / packages / types / generate-package.ts
index 0c14514e7fb3b76dabf303be21030657231f663c..125259bb406ce4a2bbe6d29bd7ffd15576dfc24a 100644 (file)
@@ -1,8 +1,16 @@
 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))
@@ -12,14 +20,14 @@ run()
   })
 
 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' })
@@ -27,8 +35,9 @@ async function run () {
 
   const allDependencies = Object.assign(
     mainPackageJson.dependencies,
-    mainPackageJson.devDepencies,
-    clientPackageJson.dependencies
+    mainPackageJson.devDependencies,
+    clientPackageJson.dependencies,
+    clientPackageJson.devDependencies
   ) as PackageDependencies
 
   // https://github.com/depcheck/depcheck#api
@@ -42,7 +51,20 @@ async function run () {
     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)
@@ -52,7 +74,7 @@ async function run () {
       return dependencies
     }, {})
 
-  const { description, version, licence, engines, author, repository } = mainPackageJson
+  const { description, licence, engines, author, repository } = mainPackageJson
   const typesPackageJson = {
     name: '@peertube/peertube-types',
     description,