UNPKG

3.22 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3'use strict';
4
5const meow = require('meow');
6const conventionalGithubReleaser = require('./index');
7const resolve = require('path').resolve;
8
9const 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
56let config = {};
57const flags = cli.flags;
58
59let templateContext;
60let gitRawCommitsOpts;
61let parserOpts;
62let writerOpts;
63
64try {
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
89const changelogOpts = {
90 preset: flags.preset,
91 pkg: {
92 path: flags.pkg,
93 },
94 releaseCount: flags.releaseCount,
95 draft: flags.draft,
96};
97
98if (flags.verbose) {
99 changelogOpts.debug = console.info.bind(console);
100 changelogOpts.warn = console.warn.bind(console);
101}
102
103conventionalGithubReleaser({
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});