UNPKG

15.3 kBJavaScriptView Raw
1"use strict";
2// tslint:disable no-unnecessary-type-annotation
3var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
4 if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
5 return cooked;
6};
7var __assign = (this && this.__assign) || function () {
8 __assign = Object.assign || function(t) {
9 for (var s, i = 1, n = arguments.length; i < n; i++) {
10 s = arguments[i];
11 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
12 t[p] = s[p];
13 }
14 return t;
15 };
16 return __assign.apply(this, arguments);
17};
18var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
19 return new (P || (P = Promise))(function (resolve, reject) {
20 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22 function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
23 step((generator = generator.apply(thisArg, _arguments || [])).next());
24 });
25};
26var __generator = (this && this.__generator) || function (thisArg, body) {
27 var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28 return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29 function verb(n) { return function (v) { return step([n, v]); }; }
30 function step(op) {
31 if (f) throw new TypeError("Generator is already executing.");
32 while (_) try {
33 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34 if (y = 0, t) op = [op[0] & 2, t.value];
35 switch (op[0]) {
36 case 0: case 1: t = op; break;
37 case 4: _.label++; return { value: op[1], done: false };
38 case 5: _.label++; y = op[1]; op = [0]; continue;
39 case 7: op = _.ops.pop(); _.trys.pop(); continue;
40 default:
41 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42 if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43 if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44 if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45 if (t[2]) _.ops.pop();
46 _.trys.pop(); continue;
47 }
48 op = body.call(thisArg, _);
49 } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50 if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51 }
52};
53var __read = (this && this.__read) || function (o, n) {
54 var m = typeof Symbol === "function" && o[Symbol.iterator];
55 if (!m) return o;
56 var i = m.call(o), r, ar = [], e;
57 try {
58 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
59 }
60 catch (error) { e = { error: error }; }
61 finally {
62 try {
63 if (r && !r.done && (m = i["return"])) m.call(i);
64 }
65 finally { if (e) throw e.error; }
66 }
67 return ar;
68};
69var __importDefault = (this && this.__importDefault) || function (mod) {
70 return (mod && mod.__esModule) ? mod : { "default": mod };
71};
72var __importStar = (this && this.__importStar) || function (mod) {
73 if (mod && mod.__esModule) return mod;
74 var result = {};
75 if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
76 result["default"] = mod;
77 return result;
78};
79Object.defineProperty(exports, "__esModule", { value: true });
80var dedent_1 = __importDefault(require("dedent"));
81var enquirer_1 = require("enquirer");
82var fs = __importStar(require("fs"));
83var path = __importStar(require("path"));
84var util_1 = require("util");
85var release_1 = require("./release");
86var writeFile = util_1.promisify(fs.writeFile);
87var isObject = function (value) { return typeof value === 'object' && value !== null; };
88function getFlags() {
89 return __awaiter(this, void 0, void 0, function () {
90 return __generator(this, function (_a) {
91 return [2 /*return*/, enquirer_1.prompt([
92 {
93 type: 'input',
94 name: 'repo',
95 message: 'GitHub Project Repository (press enter to use package definition)'
96 },
97 {
98 type: 'input',
99 name: 'owner',
100 message: 'GitHub Project Owner (press enter to use package definition)'
101 },
102 {
103 type: 'confirm',
104 name: 'noVersionPrefix',
105 message: 'Use the version as the tag without the `v` prefix?',
106 initial: 'no'
107 },
108 {
109 type: 'input',
110 name: 'jira',
111 message: 'Jira base URL (press enter to skip)'
112 },
113 {
114 type: 'input',
115 name: 'githubApi',
116 message: 'GitHub API to use (press enter to use public)'
117 },
118 {
119 type: 'input',
120 name: 'githubGraphqlApi',
121 message: 'GitHub Graphql API base path to use (press enter to use githubApi)'
122 },
123 {
124 type: 'input',
125 name: 'baseBranch',
126 message: 'Branch to treat as the "master" branch (press enter to use "master")'
127 },
128 {
129 type: 'confirm',
130 name: 'onlyPublishWithReleaseLabel',
131 message: 'Only bump version if `release` label is on pull request',
132 initial: 'no'
133 },
134 {
135 type: 'input',
136 name: 'name',
137 message: 'Git name to commit and release with (press enter to use package definition)'
138 },
139 {
140 type: 'input',
141 name: 'email',
142 message: 'Git email to commit with (press enter to use package definition)'
143 }
144 ])];
145 });
146 });
147}
148function getCustomLabels(onlyLabels) {
149 if (onlyLabels === void 0) { onlyLabels = false; }
150 return __awaiter(this, void 0, void 0, function () {
151 var _a, _b, _c, useCustomChangelogTitles, _d, customLabels, labels, i, _e, labelName, labelDef, response, _f, name, title, description, newLabel, getAnotherTitle, response, _g, name, title, description;
152 return __generator(this, function (_h) {
153 switch (_h.label) {
154 case 0:
155 if (!onlyLabels) return [3 /*break*/, 1];
156 _d = { value: onlyLabels };
157 return [3 /*break*/, 3];
158 case 1: return [4 /*yield*/, enquirer_1.prompt({
159 type: 'confirm',
160 name: 'value',
161 message: 'Would you like to use custom labels?',
162 initial: 'no'
163 })];
164 case 2:
165 _d = _h.sent();
166 _h.label = 3;
167 case 3:
168 useCustomChangelogTitles = _d;
169 customLabels = {};
170 if (!useCustomChangelogTitles.value) return [3 /*break*/, 6];
171 labels = Object.entries(release_1.defaultLabelDefinition);
172 i = 0;
173 _h.label = 4;
174 case 4:
175 if (!labels[i]) return [3 /*break*/, 6];
176 _e = __read(labels[i++], 2), labelName = _e[0], labelDef = _e[1];
177 return [4 /*yield*/, enquirer_1.prompt({
178 type: 'snippet',
179 name: 'value',
180 message: "Customize the " + labelName + " label:",
181 initial: labelDef,
182 // @ts-ignore
183 template: labelName === 'release' || labelName === 'skip-release'
184 ? dedent_1.default(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n label: #{name}\n desc: #{description}\n "], ["\n label: #{name}\n desc: #{description}\n "]))) : dedent_1.default(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n label: #{name}\n title: #{title}\n desc: #{description}\n "], ["\n label: #{name}\n title: #{title}\n desc: #{description}\n "])))
185 })];
186 case 5:
187 response = _h.sent();
188 _f = response.value.values, name = _f.name, title = _f.title, description = _f.description;
189 newLabel = {};
190 if (name !== labelDef.name) {
191 newLabel.name = name;
192 }
193 if (title !== labelDef.title) {
194 newLabel.title = title;
195 }
196 if (description !== labelDef.description) {
197 newLabel.description = description;
198 }
199 if (Object.keys(newLabel).length === 1 && newLabel.name) {
200 customLabels = __assign({}, customLabels, (_a = {}, _a[labelName] = name, _a));
201 }
202 else if (Object.keys(newLabel).length !== 0) {
203 customLabels = __assign({}, customLabels, (_b = {}, _b[labelName] = newLabel, _b));
204 }
205 return [3 /*break*/, 4];
206 case 6: return [4 /*yield*/, enquirer_1.prompt({
207 type: 'confirm',
208 name: 'value',
209 message: 'Would you like to add additional labels?',
210 initial: 'no'
211 })];
212 case 7:
213 getAnotherTitle = _h.sent();
214 _h.label = 8;
215 case 8:
216 if (!getAnotherTitle.value) return [3 /*break*/, 11];
217 return [4 /*yield*/, enquirer_1.prompt({
218 type: 'snippet',
219 name: 'value',
220 message: 'Add another label:',
221 // @ts-ignore
222 template: dedent_1.default(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n label: #{name}\n title: #{title}\n desc: #{description}\n "], ["\n label: #{name}\n title: #{title}\n desc: #{description}\n "]))),
223 validate: function (state) {
224 if (!state.values.name) {
225 return 'Label is required for new label';
226 }
227 if (!state.values.title) {
228 return 'Title is required for new label';
229 }
230 if (!state.values.description) {
231 return 'Description is required for new label';
232 }
233 return true;
234 }
235 })];
236 case 9:
237 response = _h.sent();
238 _g = response.value.values, name = _g.name, title = _g.title, description = _g.description;
239 customLabels = __assign({}, customLabels, (_c = {}, _c[name] = { name: name, title: title, description: description }, _c));
240 return [4 /*yield*/, enquirer_1.prompt({
241 type: 'confirm',
242 name: 'value',
243 message: 'Would you like to add another?',
244 initial: 'no'
245 })];
246 case 10:
247 getAnotherTitle = _h.sent();
248 return [3 /*break*/, 8];
249 case 11: return [2 /*return*/, customLabels];
250 }
251 });
252 });
253}
254function init(_a, logger) {
255 var onlyLabels = _a.onlyLabels, dryRun = _a.dryRun;
256 return __awaiter(this, void 0, void 0, function () {
257 var flags, _b, labels, autoRc, jsonString;
258 return __generator(this, function (_c) {
259 switch (_c.label) {
260 case 0:
261 if (!onlyLabels) return [3 /*break*/, 1];
262 _b = {};
263 return [3 /*break*/, 3];
264 case 1: return [4 /*yield*/, getFlags()];
265 case 2:
266 _b = _c.sent();
267 _c.label = 3;
268 case 3:
269 flags = _b;
270 return [4 /*yield*/, getCustomLabels(onlyLabels)];
271 case 4:
272 labels = _c.sent();
273 autoRc = Object.entries(__assign({}, flags, { labels: labels })).reduce(function (all, _a) {
274 var _b = __read(_a, 2), key = _b[0], value = _b[1];
275 var _c;
276 if (value === '' ||
277 value === false ||
278 (isObject(value) && Object.keys(value).length === 0)) {
279 return all;
280 }
281 return __assign({}, all, (_c = {}, _c[key] = value, _c));
282 }, {});
283 if (Object.keys(autoRc).length === 0) {
284 return [2 /*return*/];
285 }
286 jsonString = JSON.stringify(autoRc, undefined, 2);
287 if (!dryRun) return [3 /*break*/, 5];
288 logger.log.note("Initialization options would be:\n" + jsonString);
289 return [3 /*break*/, 7];
290 case 5: return [4 /*yield*/, writeFile(path.join(process.cwd(), '.autorc'), jsonString)];
291 case 6:
292 _c.sent();
293 _c.label = 7;
294 case 7: return [2 /*return*/];
295 }
296 });
297 });
298}
299exports.default = init;
300var templateObject_1, templateObject_2, templateObject_3;
301//# sourceMappingURL=init.js.map
\No newline at end of file