aboutsummaryrefslogtreecommitdiffstats
path: root/packages/monorepo-scripts/src
diff options
context:
space:
mode:
authorLeonid <logvinov.leon@gmail.com>2017-12-06 20:52:38 +0800
committerGitHub <noreply@github.com>2017-12-06 20:52:38 +0800
commit598f1dd2d8a89b0e3ab04b2917138997031bafc6 (patch)
treeb623eb0ed7698b2f0076871fa8bd2bb12298c5c7 /packages/monorepo-scripts/src
parentf0c27f98b809afda3c750e77dbd3f35ccd29ec01 (diff)
parent594bd2de1ccb41e34729834d67eba617baf1aa80 (diff)
downloaddexon-sol-tools-598f1dd2d8a89b0e3ab04b2917138997031bafc6.tar
dexon-sol-tools-598f1dd2d8a89b0e3ab04b2917138997031bafc6.tar.gz
dexon-sol-tools-598f1dd2d8a89b0e3ab04b2917138997031bafc6.tar.bz2
dexon-sol-tools-598f1dd2d8a89b0e3ab04b2917138997031bafc6.tar.lz
dexon-sol-tools-598f1dd2d8a89b0e3ab04b2917138997031bafc6.tar.xz
dexon-sol-tools-598f1dd2d8a89b0e3ab04b2917138997031bafc6.tar.zst
dexon-sol-tools-598f1dd2d8a89b0e3ab04b2917138997031bafc6.zip
Merge pull request #250 from 0xProject/feature/airport-experiments
Compare versions script
Diffstat (limited to 'packages/monorepo-scripts/src')
-rw-r--r--packages/monorepo-scripts/src/deps_versions.ts56
1 files changed, 56 insertions, 0 deletions
diff --git a/packages/monorepo-scripts/src/deps_versions.ts b/packages/monorepo-scripts/src/deps_versions.ts
new file mode 100644
index 000000000..84b024427
--- /dev/null
+++ b/packages/monorepo-scripts/src/deps_versions.ts
@@ -0,0 +1,56 @@
+#!/usr/bin/env node
+
+import chalk from 'chalk';
+import * as fs from 'fs';
+import {sync as globSync} from 'glob';
+import * as _ from 'lodash';
+
+interface Dependencies {
+ [depName: string]: string;
+}
+interface Versions {
+ [packageName: string]: string;
+}
+interface VersionsByDependency {
+ [depName: string]: Versions;
+}
+
+const PACKAGE_JSON_GLOB = '../*/package.json';
+
+function log(...args: any[]) {
+ console.log(...args); // tslint:disable-line:no-console
+}
+
+function getDependencies(path: string): Dependencies {
+ const file = fs.readFileSync(path).toString();
+ const parsed = JSON.parse(file);
+ const dependencies = {
+ ...parsed.dependencies,
+ ...parsed.devDependencies,
+ };
+ return dependencies;
+}
+
+const files = globSync(PACKAGE_JSON_GLOB);
+const versionsByDependency: VersionsByDependency = {};
+files.map(path => {
+ const [_1, packageName, _2] = path.split('/');
+ const dependencies = getDependencies(path);
+ _.map(dependencies, (version: string, depName: string) => {
+ if (_.isUndefined(versionsByDependency[depName])) {
+ versionsByDependency[depName] = {};
+ }
+ versionsByDependency[depName][packageName] = version;
+ });
+});
+
+_.map(versionsByDependency, (versions: Versions, depName: string) => {
+ if (_.uniq(_.values(versions)).length === 1) {
+ delete versionsByDependency[depName];
+ } else {
+ log(chalk.bold(depName));
+ _.map(versions, (version: string, packageName: string) => {
+ log(`├── ${packageName} -> ${version}`);
+ });
+ }
+});