Files
xen-orchestra/scripts/normalize-packages
2017-12-15 14:45:53 +01:00

79 lines
2.0 KiB
JavaScript
Executable File

#!/usr/bin/env node
const isEmpty = require('lodash/isEmpty')
const sortedObject = require('sorted-object')
const { getPackages, writeFile, unlink } = require('./utils')
const deleteProperties = (object, property, properties) => {
const nestedObject = object[property]
if (nestedObject === undefined) {
return
}
properties.forEach(property => {
delete nestedObject[property]
})
if (isEmpty(object[property])) {
delete object[property]
}
}
require('exec-promise')(() =>
getPackages(true).map(({ dir, name, package: pkg }) => {
pkg.name = name
pkg.homepage = `https://github.com/vatesfr/xen-orchestra/tree/master/packages/${name}`
pkg.bugs = `https://github.com/vatesfr/xo-web/issues`
pkg.repository = {
type: 'git',
url: 'https://github.com/vatesfr/xen-orchestra.git',
}
delete pkg.jest
delete pkg.standard
deleteProperties(pkg, 'config', [ 'commitizen' ])
deleteProperties(pkg, 'devDependencies', [
'babel-eslint',
'commitizen',
'cz-conventional-changelog',
'dependency-check',
'eslint',
'eslint-config-standard',
'eslint-plugin-import',
'eslint-plugin-node',
'eslint-plugin-promise',
'eslint-plugin-standard',
'ghooks',
'husky',
'jest',
'standard',
])
deleteProperties(pkg, 'scripts', [ 'commitmsg', 'cz' ])
const { scripts } = pkg
if (scripts !== undefined) {
const prepublish = scripts.prepublish
if (
prepublish !== undefined &&
!('prepublishOnly' in scripts)
) {
delete scripts.prepublish
scripts.prepublishOnly = prepublish
pkg.scripts = sortedObject(scripts)
}
}
return Promise.all([
writeFile(
`${dir}/package.json`,
JSON.stringify(pkg, null, 2) + '\n'
),
unlink(`${dir}/.editorconfig`),
unlink(`${dir}/.eslintrc`),
unlink(`${dir}/.gitignore`),
unlink(`${dir}/.jshintrc`),
unlink(`${dir}/.travis.yml`),
unlink(`${dir}/yarn.lock`),
])
})
)