Add version matcher script
This commit is contained in:
		
							
								
								
									
										33
									
								
								packages/monorepo-scripts/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								packages/monorepo-scripts/package.json
									
									
									
									
									
										Normal file
									
								
							@@ -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"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										59
									
								
								packages/monorepo-scripts/src/deps_versions.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								packages/monorepo-scripts/src/deps_versions.ts
									
									
									
									
									
										Normal file
									
								
							@@ -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}`);
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										13
									
								
								packages/monorepo-scripts/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								packages/monorepo-scripts/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
{
 | 
			
		||||
  "compilerOptions": {
 | 
			
		||||
    "module": "commonjs",
 | 
			
		||||
    "target": "es5",
 | 
			
		||||
    "lib": ["es2015", "dom"],
 | 
			
		||||
    "outDir": "lib",
 | 
			
		||||
    "noImplicitAny": true,
 | 
			
		||||
    "strictNullChecks": true
 | 
			
		||||
  },
 | 
			
		||||
  "include": [
 | 
			
		||||
    "./src/**/*"
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										5
									
								
								packages/monorepo-scripts/tslint.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								packages/monorepo-scripts/tslint.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "extends": [
 | 
			
		||||
    "@0xproject/tslint-config"
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user