-
Notifications
You must be signed in to change notification settings - Fork 108
Expand file tree
/
Copy pathrelease.js
More file actions
104 lines (94 loc) · 2.76 KB
/
release.js
File metadata and controls
104 lines (94 loc) · 2.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
const inquirer = require('inquirer');
const { spawn } = require('child_process');
const runCommand = (command, args) => {
return new Promise((resolve, reject) => {
const executedCommand = spawn(command, args, {
stdio: 'inherit',
shell: true,
});
executedCommand.on('error', (error) => {
reject({
error,
message: null,
code: null,
});
});
executedCommand.on('exit', (code) => {
if (code === 0) {
resolve({
error: null,
message: null,
code,
});
} else {
reject({
error: null,
message: null,
code,
});
}
});
executedCommand.on('message', (message) => {
resolve({
error: null,
message: message,
code: null,
});
});
});
};
function execStandardVersion(res) {
const { bumpType, isPrerelease, prereleaseType, tagPrefix } = res;
let cmd = `standard-version --release-as ${bumpType} `;
if (isPrerelease) {
cmd += ` --prerelease ${prereleaseType} `;
}
cmd += ` --tag-prefix ${tagPrefix} `;
cmd += ' --infile CHANGELOG.md ';
console.info(`Executing: ${cmd} \n`);
runCommand(cmd)
.then(({ message }) => {
console.info('Please checkout recent commit, and then');
console.info('Push branch and new tag to github, publish package to npm');
// message && console.info(message)
})
.catch(({ error, code }) => {
code && console.error('Error: process exit code' + code);
error && console.error(error);
});
}
inquirer
.prompt([
{
type: 'list',
name: 'bumpType',
message: 'Which type you want bump',
choices: ['major', 'minor', 'patch'],
loop: false,
},
{
type: 'confirm',
name: 'isPrerelease',
message: 'Is a prerelease? Default is no',
default: false,
loop: false,
},
{
type: 'list',
name: 'prereleaseType',
message: 'What is the current stage',
choices: ['alpha', 'beta'],
when: (answer) => {
return answer.isPrerelease;
},
loop: false,
},
{
type: 'input',
name: 'tagPrefix',
message: 'Input git tag prefix, default is',
default: 'v',
loop: false,
},
])
.then(execStandardVersion);