Skip to content

Commit cbc6f2b

Browse files
committed
refactor: rename versions -> monorepo.json
And transpose the packages. This is cleaner.
1 parent b4a1a64 commit cbc6f2b

File tree

5 files changed

+59
-32
lines changed

5 files changed

+59
-32
lines changed

.monorepo.json

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"packages": {
3+
"@_/benchmark": {
4+
"version": "0.0.9",
5+
"hash": "d8f46247086fb87b670c039256b02fa4"
6+
},
7+
"@angular-devkit/build-optimizer": {
8+
"version": "0.0.25",
9+
"hash": "4ad20c668e59d3dc1397dc61722e8a35"
10+
},
11+
"@angular-devkit/core": {
12+
"version": "0.0.17",
13+
"hash": "22ccb2169d795924bc532fedff34b532"
14+
},
15+
"@angular-devkit/schematics": {
16+
"version": "0.0.30",
17+
"hash": "7740fc3b41c4201045695b89d3f36f9f"
18+
},
19+
"@schematics/angular": {
20+
"version": "0.0.41",
21+
"hash": "e9ded458a88d07b5f0b5f4a33ef820cb"
22+
}
23+
}
24+
}

lib/packages.ts

+8
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import * as ts from 'typescript';
1515

1616
const glob = require('glob');
1717
const distRoot = path.join(__dirname, '../dist');
18+
const { packages: monorepoPackages } = require('../.monorepo.json');
1819

1920

2021
export interface PackageInfo {
@@ -30,7 +31,9 @@ export interface PackageInfo {
3031
packageJson: JsonObject;
3132
dependencies: string[];
3233

34+
dirty: boolean;
3335
hash: string;
36+
version: string;
3437
}
3538
export type PackageMap = { [name: string]: PackageInfo };
3639

@@ -190,6 +193,8 @@ export const packages: PackageMap =
190193

191194
dependencies: [],
192195
hash: '',
196+
dirty: false,
197+
version: monorepoPackages[name].version || '0.0.0',
193198
};
194199

195200
return packages;
@@ -211,4 +216,7 @@ for (const pkgName of Object.keys(packages)) {
211216
// Update the hash values of each.
212217
for (const pkgName of Object.keys(packages)) {
213218
packages[pkgName].hash = _getHashOf(packages[pkgName]);
219+
if (packages[pkgName].hash != monorepoPackages[pkgName].hash) {
220+
packages[pkgName].dirty = true;
221+
}
214222
}

scripts/build.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -257,22 +257,22 @@ export default function(argv: { local?: boolean }, logger: Logger) {
257257

258258
logger.info('Setting versions...');
259259

260-
const { versions } = require(path.join(__dirname, '../versions.json'));
261260
const versionLogger = new Logger('versions', logger);
262261
for (const packageName of sortedPackages) {
263262
versionLogger.info(packageName);
264263
const pkg = packages[packageName];
265264
const packageJsonPath = path.join(pkg.dist, 'package.json');
266265
const packageJson = pkg.packageJson;
266+
const version = pkg.version;
267267

268-
if (versions[packageName]) {
269-
packageJson['version'] = versions[packageName];
268+
if (version) {
269+
packageJson['version'] = version;
270270
} else {
271271
versionLogger.error('No version found... Only updating dependencies.');
272272
}
273273

274-
for (const depName of Object.keys(versions)) {
275-
const v = versions[depName];
274+
for (const depName of Object.keys(packages)) {
275+
const v = packages[depName].version;
276276
for (const depKey of ['dependencies', 'peerDependencies', 'devDependencies']) {
277277
const obj = packageJson[depKey] as JsonObject | null;
278278
if (obj && obj[depName]) {

scripts/release.ts

+21-25
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,22 @@ import * as semver from 'semver';
1212
import { ReleaseType } from 'semver';
1313
import { packages } from '../lib/packages';
1414

15-
const { hashes, versions } = require('../versions.json');
15+
16+
const { packages: monorepo } = require('../.monorepo.json');
1617

1718

1819
function _showVersions(logger: Logger) {
19-
for (const pkg of Object.keys(versions)) {
20-
if (!(pkg in packages)) {
21-
logger.fatal(`"${pkg}" not an official package...`);
22-
}
20+
for (const pkgName of Object.keys(packages)) {
21+
const pkg = packages[pkgName];
2322

24-
const version = versions[pkg] || '???';
25-
const hash = packages[pkg].hash;
26-
const diff = hashes[pkg] !== hash ? '!' : '';
23+
const version = pkg.version || '???';
24+
const hash = pkg.hash;
25+
const diff = pkg.dirty ? '!' : '';
2726

28-
const pad1 = ' '.slice(pkg.length);
27+
const pad1 = ' '.slice(pkgName.length);
2928
const pad2 = ' '.slice(version.length);
30-
const message = `${pkg} ${pad1}v${version}${pad2}${hash} ${diff}`;
31-
if (packages[pkg].private) {
29+
const message = `${pkgName} ${pad1}v${version}${pad2}${hash} ${diff}`;
30+
if (pkg.private) {
3231
logger.debug(message);
3332
} else {
3433
logger.info(message);
@@ -39,24 +38,21 @@ function _showVersions(logger: Logger) {
3938

4039
function _upgrade(release: string, logger: Logger) {
4140
for (const pkg of Object.keys(packages)) {
42-
if (!(pkg in versions)) {
43-
versions[pkg] = '0.0.0';
44-
}
45-
4641
const hash = packages[pkg].hash;
47-
const version = versions[pkg] || '0.0.0';
42+
const version = packages[pkg].version;
43+
const dirty = packages[pkg].dirty;
4844
let newVersion: string | null = version;
4945

5046
if (release == 'minor-beta') {
51-
if (hash !== hashes[pkg]) {
47+
if (dirty) {
5248
if (version.match(/-beta\.\d+$/)) {
5349
newVersion = semver.inc(version, 'prerelease');
5450
} else {
5551
newVersion = semver.inc(version, 'minor') + '-beta.0';
5652
}
5753
}
5854
} else if (release == 'minor-rc') {
59-
if (hash !== hashes[pkg]) {
55+
if (dirty) {
6056
if (version.match(/-rc/)) {
6157
newVersion = semver.inc(version, 'prerelease');
6258
} else if (version.match(/-beta\.\d+$/)) {
@@ -66,15 +62,15 @@ function _upgrade(release: string, logger: Logger) {
6662
}
6763
}
6864
} else if (release == 'major-beta') {
69-
if (hash !== hashes[pkg]) {
65+
if (dirty) {
7066
if (version.match(/-beta\.\d+$/)) {
7167
newVersion = semver.inc(version, 'prerelease');
7268
} else {
7369
newVersion = semver.inc(version, 'major') + '-beta.0';
7470
}
7571
}
7672
} else if (release == 'major-rc') {
77-
if (hash !== hashes[pkg]) {
73+
if (dirty) {
7874
if (version.match(/-rc/)) {
7975
newVersion = semver.inc(version, 'prerelease');
8076
} else if (version.match(/-beta\.\d+$/)) {
@@ -83,15 +79,15 @@ function _upgrade(release: string, logger: Logger) {
8379
newVersion = semver.inc(version, 'major') + '-rc.0';
8480
}
8581
}
86-
} else if (hash !== hashes[pkg] || release !== 'patch') {
82+
} else if (dirty || release !== 'patch') {
8783
newVersion = semver.inc(version, release as ReleaseType);
8884
}
8985

9086
let message = '';
9187
if (newVersion && version !== newVersion) {
9288
message = `${pkg} changed... updating v${version} => v${newVersion}`;
93-
versions[pkg] = newVersion;
94-
hashes[pkg] = hash;
89+
monorepo[pkg].version = newVersion;
90+
monorepo[pkg].hash = hash;
9591
} else {
9692
message = `${pkg} SAME: v${version}`;
9793
}
@@ -123,8 +119,8 @@ export default function(args: { _: string[], 'dry-run'?: boolean }, logger: Logg
123119
case 'patch':
124120
_upgrade(maybeRelease, logger);
125121
if (!dryRun) {
126-
fs.writeFileSync(path.join(__dirname, '../versions.json'),
127-
JSON.stringify({ versions, hashes }, null, 2) + '\n');
122+
fs.writeFileSync(path.join(__dirname, '../.monorepo.json'),
123+
JSON.stringify({ packages: monorepo }, null, 2) + '\n');
128124
}
129125
process.exit(0);
130126
break;

scripts/test.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import { packages } from '../lib/packages';
1818

1919

2020
const Jasmine = require('jasmine');
21-
const { versions } = require('../versions.json');
2221

2322
const projectBaseDir = join(__dirname, '..');
2423
require('source-map-support').install({
@@ -243,7 +242,7 @@ export default function (args: ParsedArgs, logger: Logger) {
243242
.filter(p => Object.keys(packages).some(name => {
244243
const relativeRoot = relative(projectBaseDir, packages[name].root);
245244

246-
return p.startsWith(relativeRoot) && packages[name].hash !== versions[name];
245+
return p.startsWith(relativeRoot) && packages[name].dirty;
247246
}));
248247

249248
logger.info(`Found ${tests.length} spec files, out of ${allTests.length}.`);

0 commit comments

Comments
 (0)