From 22de68205b3ef309222d71e72089c75184365d4a Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Mon, 4 Dec 2017 19:56:06 +0300 Subject: Add version matcher script --- packages/monorepo-scripts/package.json | 33 ++++++++++++++ packages/monorepo-scripts/src/deps_versions.ts | 59 ++++++++++++++++++++++++++ packages/monorepo-scripts/tsconfig.json | 13 ++++++ packages/monorepo-scripts/tslint.json | 5 +++ 4 files changed, 110 insertions(+) create mode 100644 packages/monorepo-scripts/package.json create mode 100644 packages/monorepo-scripts/src/deps_versions.ts create mode 100644 packages/monorepo-scripts/tsconfig.json create mode 100644 packages/monorepo-scripts/tslint.json (limited to 'packages/monorepo-scripts') diff --git a/packages/monorepo-scripts/package.json b/packages/monorepo-scripts/package.json new file mode 100644 index 000000000..57de6581e --- /dev/null +++ b/packages/monorepo-scripts/package.json @@ -0,0 +1,33 @@ +{ + "name": "@0xproject/monorepo-scripts", + "version": "0.0.0", + "description": "Helper scripts for the monorepo", + "scripts": { + "deps_versions": "node ./lib/deps_versions.js", + "lint": "tslint --project . 'src/**/*.ts'", + "clean": "shx rm -rf lib", + "build": "tsc" + }, + "repository": { + "type": "git", + "url": "https://github.com/0xProject/0x.js.git" + }, + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/0xProject/0x.js/issues" + }, + "homepage": "https://github.com/0xProject/0x.js/packages/monorepo-scripts/README.md", + "devDependencies": { + "@0xproject/tslint-config": "^0.2.0", + "@types/glob": "^5.0.33", + "@types/node": "^8.0.53", + "shx": "^0.2.2", + "tslint": "5.8.0", + "typescript": "~2.6.1" + }, + "dependencies": { + "chalk": "^2.3.0", + "glob": "^7.1.2", + "lodash": "^4.17.4" + } +} diff --git a/packages/monorepo-scripts/src/deps_versions.ts b/packages/monorepo-scripts/src/deps_versions.ts new file mode 100644 index 000000000..b07aac995 --- /dev/null +++ b/packages/monorepo-scripts/src/deps_versions.ts @@ -0,0 +1,59 @@ +#!/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; +} + +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; +} + +function getPackageName(path: string): string { + const [dotDot, packageName, packageJSON] = path.split('/'); + return packageName; +} + +const files = globSync('../*/package.json'); +const versionsByDependency: VersionsByDependency = {}; +files.map(path => { + const packageName = getPackageName(path); + 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}`); + }); + } +}); diff --git a/packages/monorepo-scripts/tsconfig.json b/packages/monorepo-scripts/tsconfig.json new file mode 100644 index 000000000..a2d90e5dc --- /dev/null +++ b/packages/monorepo-scripts/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es5", + "lib": ["es2015", "dom"], + "outDir": "lib", + "noImplicitAny": true, + "strictNullChecks": true + }, + "include": [ + "./src/**/*" + ] +} diff --git a/packages/monorepo-scripts/tslint.json b/packages/monorepo-scripts/tslint.json new file mode 100644 index 000000000..a07795151 --- /dev/null +++ b/packages/monorepo-scripts/tslint.json @@ -0,0 +1,5 @@ +{ + "extends": [ + "@0xproject/tslint-config" + ] +} -- cgit v1.2.3 From 1dba4b85d0073d9ae482b1bb3afdafa2278d1a71 Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Tue, 5 Dec 2017 18:14:03 +0300 Subject: Make private --- packages/monorepo-scripts/package.json | 1 + 1 file changed, 1 insertion(+) (limited to 'packages/monorepo-scripts') diff --git a/packages/monorepo-scripts/package.json b/packages/monorepo-scripts/package.json index 57de6581e..3c49429e9 100644 --- a/packages/monorepo-scripts/package.json +++ b/packages/monorepo-scripts/package.json @@ -1,6 +1,7 @@ { "name": "@0xproject/monorepo-scripts", "version": "0.0.0", + "private": true, "description": "Helper scripts for the monorepo", "scripts": { "deps_versions": "node ./lib/deps_versions.js", -- cgit v1.2.3 From 8c87394b2b0cea4c3fc6126c9b22830041fff889 Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Tue, 5 Dec 2017 18:15:37 +0300 Subject: Introduce a const --- packages/monorepo-scripts/src/deps_versions.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'packages/monorepo-scripts') diff --git a/packages/monorepo-scripts/src/deps_versions.ts b/packages/monorepo-scripts/src/deps_versions.ts index b07aac995..c4ee90775 100644 --- a/packages/monorepo-scripts/src/deps_versions.ts +++ b/packages/monorepo-scripts/src/deps_versions.ts @@ -15,6 +15,8 @@ interface VersionsByDependency { [depName: string]: Versions; } +const PACKAGE_JSON_GLOB = '../*/package.json'; + function log(...args: any[]) { console.log(...args); // tslint:disable-line:no-console } @@ -34,7 +36,7 @@ function getPackageName(path: string): string { return packageName; } -const files = globSync('../*/package.json'); +const files = globSync(PACKAGE_JSON_GLOB); const versionsByDependency: VersionsByDependency = {}; files.map(path => { const packageName = getPackageName(path); -- cgit v1.2.3 From 55083316fc7f4bcfbb77470a3f66e621a68ebb95 Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Tue, 5 Dec 2017 18:17:57 +0300 Subject: Inline function --- packages/monorepo-scripts/src/deps_versions.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'packages/monorepo-scripts') diff --git a/packages/monorepo-scripts/src/deps_versions.ts b/packages/monorepo-scripts/src/deps_versions.ts index c4ee90775..84b024427 100644 --- a/packages/monorepo-scripts/src/deps_versions.ts +++ b/packages/monorepo-scripts/src/deps_versions.ts @@ -31,15 +31,10 @@ function getDependencies(path: string): Dependencies { return dependencies; } -function getPackageName(path: string): string { - const [dotDot, packageName, packageJSON] = path.split('/'); - return packageName; -} - const files = globSync(PACKAGE_JSON_GLOB); const versionsByDependency: VersionsByDependency = {}; files.map(path => { - const packageName = getPackageName(path); + const [_1, packageName, _2] = path.split('/'); const dependencies = getDependencies(path); _.map(dependencies, (version: string, depName: string) => { if (_.isUndefined(versionsByDependency[depName])) { -- cgit v1.2.3