Skip to content

Commit

Permalink
feat(pluginsdk-peerdeps): Add --no-spinnaker option to sync-versions-…
Browse files Browse the repository at this point in the history
…from-deck.js (#9140)
  • Loading branch information
christopherthielen authored May 6, 2021
1 parent 12d20a0 commit b2f8829
Showing 1 changed file with 12 additions and 9 deletions.
21 changes: 12 additions & 9 deletions packages/pluginsdk-peerdeps/sync-versions-from-deck.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
const fs = require(`fs`);
const path = require(`path`);
const yargs = require('yargs')
.usage(`$0 [--no-dev] [--no-peer] [package.json]`)
.usage(`$0 [--no-dev] [--no-peer] [--no-spinnaker] [--source package.json] [--dest otherpackage.json]`)
.option('source', {
description: 'The source package.json',
default: '../../package.json',
Expand All @@ -16,8 +16,9 @@ const yargs = require('yargs')
description: 'The destination package.json',
default: './package.json',
})
.option('no-dev', { type: 'boolean', description: 'do not sync devDependencies', default: false })
.option('no-peer', { type: 'boolean', description: 'do not sync peerDependencies', default: false });
.option('spinnaker', { type: 'boolean', description: 'include @spinnaker/* dependencies', default: true })
.option('dev', { type: 'boolean', description: 'include devDependencies', default: true })
.option('peer', { type: 'boolean', description: 'include peerDependencies', default: true });

const { argv } = yargs;
const targetPackageJson = path.resolve(argv.dest);
Expand Down Expand Up @@ -46,15 +47,17 @@ const getDesiredVersion = (pkgName) => {
}
};

const packageJson = parse(targetPackageJson);
const shouldSkip = (key) =>
(key === 'devDependencies' && argv['no-dev']) || (key === 'peerDependencies' && argv['no-peer']);

const keys = ['dependencies', 'peerDependencies', 'devDependencies'].filter((key) => !shouldSkip(key));
const shouldSkipType = (key) =>
(key === 'devDependencies' && argv.dev === false) || (key === 'peerDependencies' && argv.peer === false);
const shouldSkipPackage = (packageName) => argv.spinnaker === false && packageName.startsWith('@spinnaker/');

const packageJson = parse(targetPackageJson);
const keys = ['dependencies', 'peerDependencies', 'devDependencies'].filter((key) => !shouldSkipType(key));
keys.forEach((key) => {
Object.keys(packageJson[key] || {}).forEach((pkgName) => {
packageJson[key][pkgName] = getDesiredVersion(pkgName) || packageJson[key][pkgName];
if (!shouldSkipPackage(pkgName)) {
packageJson[key][pkgName] = getDesiredVersion(pkgName) || packageJson[key][pkgName];
}
});
});

Expand Down

0 comments on commit b2f8829

Please sign in to comment.