Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 477c7b4

Browse files
committedMar 19, 2019
fix(@angular/cli): add packageGroup for @angular/cli
This should add ng-update support to updating ALL the packages that are published from this repo. Fixes #13581
1 parent cdda1c3 commit 477c7b4

File tree

1 file changed

+76
-41
lines changed

1 file changed

+76
-41
lines changed
 

‎scripts/build.ts

Lines changed: 76 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,79 @@ async function _bazel(logger: logging.Logger) {
203203
// _exec('bazel', ['build', '//packages/...'], {}, logger);
204204
}
205205

206+
async function _setVersions(
207+
sortedPackages: string[],
208+
argv: { local?: boolean, snapshot?: boolean },
209+
logger: logging.Logger,
210+
) {
211+
for (const packageName of sortedPackages) {
212+
logger.info(packageName);
213+
const pkg = packages[packageName];
214+
const packageJsonPath = path.join(pkg.dist, 'package.json');
215+
const packageJson = pkg.packageJson;
216+
const version = pkg.version;
217+
218+
if (version) {
219+
packageJson['version'] = version;
220+
} else {
221+
logger.error('No version found... Only updating dependencies.');
222+
}
223+
224+
for (const depName of Object.keys(packages)) {
225+
const v = packages[depName].version;
226+
for (const depKey of ['dependencies', 'peerDependencies', 'devDependencies']) {
227+
const obj = packageJson[depKey] as JsonObject | null;
228+
if (obj && obj[depName]) {
229+
if (argv.local) {
230+
obj[depName] = packages[depName].tar;
231+
} else if (argv.snapshot) {
232+
const pkg = packages[depName];
233+
if (!pkg.snapshotRepo) {
234+
logger.error(
235+
`Package ${JSON.stringify(depName)} is not published as a snapshot. `
236+
+ `Fixing to current version ${v}.`,
237+
);
238+
obj[depName] = v;
239+
} else {
240+
obj[depName] = `github:${pkg.snapshotRepo}#${pkg.snapshotHash}`;
241+
}
242+
} else if ((obj[depName] as string).match(/\b0\.0\.0\b/)) {
243+
obj[depName] = (obj[depName] as string).replace(/\b0\.0\.0\b/, v);
244+
}
245+
}
246+
}
247+
}
248+
249+
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n');
250+
}
251+
}
252+
253+
async function _setPackageGroups(sortedPackages: string[], logger: logging.Logger) {
254+
for (const packageName of sortedPackages) {
255+
logger.info(packageName);
256+
const pkg = packages[packageName];
257+
if (pkg.private) {
258+
continue;
259+
}
260+
261+
const packageJsonPath = path.join(pkg.dist, 'package.json');
262+
const packageJson = pkg.packageJson;
263+
// tslint:disable-next-line:no-any
264+
const ngUpdateJson: any = packageJson['ng-update'] || (packageJson['ng-update'] = {});
265+
const packageGroup = ngUpdateJson['packageGroup'] || (ngUpdateJson['packageGroup'] = {});
266+
267+
for (const subPackageName of sortedPackages) {
268+
const subpkg = packages[subPackageName];
269+
if (subpkg.private) {
270+
continue;
271+
}
272+
packageGroup[subPackageName] = subpkg.version;
273+
}
274+
275+
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n');
276+
}
277+
}
278+
206279
export default async function(
207280
argv: { local?: boolean, snapshot?: boolean },
208281
logger: logging.Logger,
@@ -350,48 +423,10 @@ export default async function(
350423
}
351424

352425
logger.info('Setting versions...');
426+
await _setVersions(sortedPackages, argv, logger.createChild('versions'));
353427

354-
const versionLogger = logger.createChild('versions');
355-
for (const packageName of sortedPackages) {
356-
versionLogger.info(packageName);
357-
const pkg = packages[packageName];
358-
const packageJsonPath = path.join(pkg.dist, 'package.json');
359-
const packageJson = pkg.packageJson;
360-
const version = pkg.version;
361-
362-
if (version) {
363-
packageJson['version'] = version;
364-
} else {
365-
versionLogger.error('No version found... Only updating dependencies.');
366-
}
367-
368-
for (const depName of Object.keys(packages)) {
369-
const v = packages[depName].version;
370-
for (const depKey of ['dependencies', 'peerDependencies', 'devDependencies']) {
371-
const obj = packageJson[depKey] as JsonObject | null;
372-
if (obj && obj[depName]) {
373-
if (argv.local) {
374-
obj[depName] = packages[depName].tar;
375-
} else if (argv.snapshot) {
376-
const pkg = packages[depName];
377-
if (!pkg.snapshotRepo) {
378-
versionLogger.error(
379-
`Package ${JSON.stringify(depName)} is not published as a snapshot. `
380-
+ `Fixing to current version ${v}.`,
381-
);
382-
obj[depName] = v;
383-
} else {
384-
obj[depName] = `github:${pkg.snapshotRepo}#${pkg.snapshotHash}`;
385-
}
386-
} else if ((obj[depName] as string).match(/\b0\.0\.0\b/)) {
387-
obj[depName] = (obj[depName] as string).replace(/\b0\.0\.0\b/, v);
388-
}
389-
}
390-
}
391-
}
392-
393-
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n');
394-
}
428+
logger.info('Setting packageGroups...');
429+
await _setPackageGroups(sortedPackages, logger.createChild('packageGroups'));
395430

396431
logger.info('Tarring all packages...');
397432
const tarLogger = logger.createChild('license');

0 commit comments

Comments
 (0)
Please sign in to comment.