1 | #!/usr/bin/env node
|
2 |
|
3 | 'use strict';
|
4 |
|
5 | const meow = require('meow');
|
6 | const conventionalGithubReleaser = require('./index');
|
7 | const resolve = require('path').resolve;
|
8 |
|
9 | const cli = meow({
|
10 | help: [
|
11 | 'Usage',
|
12 | ' conventional-github-releaser',
|
13 | '',
|
14 | 'Example',
|
15 | ' conventional-github-releaser -p angular',
|
16 | '',
|
17 | 'Options',
|
18 | ' -u, --url URL of your GitHub provider. Defaults to `https://api.github.com`',
|
19 | ' -t, --token Your GitHub auth token',
|
20 | '',
|
21 | ' -p, --preset Name of the preset you want to use. Must be one of the following:',
|
22 | ' angular, atom, codemirror, ember, eslint, express, jquery, jscs or jshint',
|
23 | '',
|
24 | ' -k, --pkg A filepath of where your package.json is located',
|
25 | ' Default is the closest package.json from cwd',
|
26 | '',
|
27 | ' -r, --release-count How many releases to be generated from the latest',
|
28 | ' If 0, the whole changelog will be regenerated and the outfile will be overwritten',
|
29 | ' Default: 1',
|
30 | '',
|
31 | ' -v, --verbose Verbose output. Use this for debugging',
|
32 | ' Default: false',
|
33 | '',
|
34 | ' -n, --config A filepath of your config script',
|
35 | ' Example of a config script: https://github.com/conventional-changelog/conventional-changelog-angular/blob/master/index.js',
|
36 | '',
|
37 | ' -c, --context A filepath of a javascript that is used to define template variables',
|
38 | '',
|
39 | ' -d, --draft Publishes a draft instead of a real release',
|
40 | ' Default: false',
|
41 | ],
|
42 | }, {
|
43 | alias: {
|
44 | u: 'url',
|
45 | t: 'token',
|
46 | p: 'preset',
|
47 | k: 'pkg',
|
48 | r: 'releaseCount',
|
49 | v: 'verbose',
|
50 | n: 'config',
|
51 | c: 'context',
|
52 | d: 'draft',
|
53 | },
|
54 | });
|
55 |
|
56 | let config = {};
|
57 | const flags = cli.flags;
|
58 |
|
59 | let templateContext;
|
60 | let gitRawCommitsOpts;
|
61 | let parserOpts;
|
62 | let writerOpts;
|
63 |
|
64 | try {
|
65 | if (flags.context) {
|
66 | templateContext = require(resolve(process.cwd(), flags.context));
|
67 | }
|
68 |
|
69 | if (flags.config) {
|
70 | config = require(resolve(process.cwd(), flags.config));
|
71 | }
|
72 |
|
73 | if (config.gitRawCommitsOpts) {
|
74 | gitRawCommitsOpts = config.gitRawCommitsOpts;
|
75 | }
|
76 |
|
77 | if (config.parserOpts) {
|
78 | parserOpts = config.parserOpts;
|
79 | }
|
80 |
|
81 | if (config.writerOpts) {
|
82 | writerOpts = config.writerOpts;
|
83 | }
|
84 | } catch (err) {
|
85 | console.error('Failed to get file. ' + err);
|
86 | process.exit(1);
|
87 | }
|
88 |
|
89 | const changelogOpts = {
|
90 | preset: flags.preset,
|
91 | pkg: {
|
92 | path: flags.pkg,
|
93 | },
|
94 | releaseCount: flags.releaseCount,
|
95 | draft: flags.draft,
|
96 | };
|
97 |
|
98 | if (flags.verbose) {
|
99 | changelogOpts.debug = console.info.bind(console);
|
100 | changelogOpts.warn = console.warn.bind(console);
|
101 | }
|
102 |
|
103 | conventionalGithubReleaser({
|
104 | url: flags.url || process.env.CONVENTIONAL_GITHUB_URL,
|
105 | token: flags.token || process.env.CONVENTIONAL_GITHUB_RELEASER_TOKEN,
|
106 | }, changelogOpts, templateContext, gitRawCommitsOpts, parserOpts, writerOpts, function (err, data) {
|
107 | if (err) {
|
108 | console.error(err.toString());
|
109 | process.exit(1);
|
110 | }
|
111 |
|
112 | if (flags.verbose) {
|
113 | console.log(data);
|
114 | }
|
115 | });
|