Skip to content

Commit 3157f68

Browse files
committed
ci: publish --tag flag and changelog feat
If no github token passed to changelog script it will output the markdown to stdout.
1 parent 06589b4 commit 3157f68

File tree

2 files changed

+38
-38
lines changed

2 files changed

+38
-38
lines changed

scripts/changelog.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export default function(args: ChangelogOptions, logger: logging.Logger) {
8888
commits,
8989
});
9090

91-
if (args.stdout) {
91+
if (args.stdout || !githubToken) {
9292
console.log(markdown);
9393
process.exit(0);
9494
}

scripts/publish.ts

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -7,51 +7,51 @@
77
*/
88
// tslint:disable:no-implicit-dependencies
99
import { logging } from '@angular-devkit/core';
10-
import { resolve } from '@angular-devkit/core/node';
11-
import * as stream from 'stream';
10+
import { spawnSync } from 'child_process';
1211
import { packages } from '../lib/packages';
1312
import build from './build';
1413

15-
const npm = require(resolve('npm', { basedir: '/', checkGlobal: true }));
1614

17-
class NullStream extends stream.Writable {
18-
_write() {}
15+
function _exec(command: string, args: string[], opts: { cwd?: string }, logger: logging.Logger) {
16+
const { status, error, stderr, stdout } = spawnSync(command, args, { ...opts });
17+
18+
if (status != 0) {
19+
logger.error(`Command failed: ${command} ${args.map(x => JSON.stringify(x)).join(', ')}`);
20+
if (error) {
21+
logger.error('Error: ' + (error ? error.message : 'undefined'));
22+
} else {
23+
logger.error(`STDERR:\n${stderr}`);
24+
}
25+
throw error;
26+
} else {
27+
return stdout.toString();
28+
}
1929
}
2030

2131

22-
export default function (_: {}, logger: logging.Logger) {
32+
export default function (args: { tag?: string }, logger: logging.Logger) {
2333
logger.info('Building...');
2434
build({}, logger.createChild('build'));
2535

26-
return new Promise<void>((resolve, reject) => {
27-
const loadOptions = { progress: false, logstream: new NullStream() };
28-
npm.load(loadOptions, (err: Error | string) => err ? reject(err) : resolve());
29-
})
30-
.then(() => {
31-
return Object.keys(packages).reduce((acc: Promise<void>, name: string) => {
32-
const pkg = packages[name];
33-
if (pkg.packageJson['private']) {
34-
logger.debug(`${name} (private)`);
35-
36-
return acc;
37-
}
38-
39-
return acc
40-
.then(() => new Promise<void>((resolve, reject) => {
41-
logger.info(name);
42-
process.chdir(pkg.dist);
43-
npm.commands['publish']([], (err: Error) => {
44-
if (err) {
45-
reject(err);
46-
} else {
47-
resolve();
48-
}
49-
});
50-
}))
51-
.catch((err: Error) => {
52-
logger.error(err.message);
53-
});
54-
}, Promise.resolve());
55-
})
56-
.then(() => logger.info('done'), (err: Error) => logger.fatal(err.message));
36+
return Object.keys(packages).reduce((acc: Promise<void>, name: string) => {
37+
const pkg = packages[name];
38+
if (pkg.packageJson['private']) {
39+
logger.debug(`${name} (private)`);
40+
41+
return acc;
42+
}
43+
44+
return acc
45+
.then(() => {
46+
logger.info(name);
47+
48+
return _exec('npm', ['publish'].concat(args.tag ? ['--tag', args.tag] : []), {
49+
cwd: pkg.dist,
50+
}, logger);
51+
})
52+
.then((stdout: string) => {
53+
logger.info(stdout);
54+
});
55+
}, Promise.resolve())
56+
.then(() => logger.info('done'), (err: Error) => logger.fatal(err.message));
5757
}

0 commit comments

Comments
 (0)