@catladder/cli 0.0.0-main-d0a1e9f1 → 0.0.0-main-67fbbdf8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/apps/cli/cli.js +8 -4
- package/dist/apps/cli/cli.js.map +1 -1
- package/dist/apps/cli/commands/project/commandConfigSecrets.js +20 -1
- package/dist/apps/cli/commands/project/commandConfigSecrets.js.map +1 -1
- package/dist/apps/cli/config/writeConfig.d.ts +5 -0
- package/dist/apps/cli/config/writeConfig.js +95 -0
- package/dist/apps/cli/config/writeConfig.js.map +1 -0
- package/dist/apps/cli/verify/index.d.ts +2 -0
- package/dist/apps/cli/verify/index.js +71 -0
- package/dist/apps/cli/verify/index.js.map +1 -0
- package/dist/apps/cli/verify/migration/fromv2.d.ts +3 -0
- package/dist/apps/cli/verify/migration/fromv2.js +240 -0
- package/dist/apps/cli/verify/migration/fromv2.js.map +1 -0
- package/dist/apps/cli/verify/migration/migrateSecrets.d.ts +4 -0
- package/dist/apps/cli/verify/migration/migrateSecrets.js +75 -0
- package/dist/apps/cli/verify/migration/migrateSecrets.js.map +1 -0
- package/dist/apps/cli/verify/migration/oldGitlabCi.d.ts +16 -0
- package/dist/apps/cli/verify/migration/oldGitlabCi.js +24 -0
- package/dist/apps/cli/verify/migration/oldGitlabCi.js.map +1 -0
- package/dist/config/getProjectConfig.d.ts +2 -0
- package/dist/config/getProjectConfig.js +36 -3
- package/dist/config/getProjectConfig.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/files.js +6 -1
- package/dist/utils/files.js.map +1 -1
- package/dist/utils/gitlab.d.ts +1 -1
- package/dist/utils/gitlab.js +30 -6
- package/dist/utils/gitlab.js.map +1 -1
- package/dist/utils/passwordstore/index.d.ts +1 -1
- package/dist/utils/passwordstore/index.js +17 -20
- package/dist/utils/passwordstore/index.js.map +1 -1
- package/dist/utils/projects/index.d.ts +1 -1
- package/package.json +2 -2
- package/src/apps/cli/cli.ts +5 -3
- package/src/apps/cli/commands/project/commandConfigSecrets.ts +22 -2
- package/src/apps/cli/config/writeConfig.ts +61 -0
- package/src/apps/cli/verify/index.ts +24 -0
- package/src/apps/cli/verify/migration/fromv2.ts +157 -0
- package/src/apps/cli/verify/migration/migrateSecrets.ts +32 -0
- package/src/apps/cli/verify/migration/oldGitlabCi.ts +40 -0
- package/src/config/getProjectConfig.ts +17 -1
- package/src/utils/editAsFile.ts +1 -1
- package/src/utils/files.ts +5 -1
- package/src/utils/gitlab.ts +18 -5
- package/src/utils/passwordstore/index.ts +19 -21
- package/src/utils/projects/index.ts +1 -1
package/dist/utils/files.js
CHANGED
|
@@ -64,13 +64,18 @@ var readFileOrError = function (filePath) { return __awaiter(void 0, void 0, voi
|
|
|
64
64
|
}); };
|
|
65
65
|
exports.readFileOrError = readFileOrError;
|
|
66
66
|
var readYaml = function (filename) { return __awaiter(void 0, void 0, void 0, function () {
|
|
67
|
-
var _a, _b;
|
|
67
|
+
var _a, _b, e_2;
|
|
68
68
|
return __generator(this, function (_c) {
|
|
69
69
|
switch (_c.label) {
|
|
70
70
|
case 0:
|
|
71
|
+
_c.trys.push([0, 2, , 3]);
|
|
71
72
|
_b = (_a = js_yaml_1["default"]).load;
|
|
72
73
|
return [4 /*yield*/, readFile(filename)];
|
|
73
74
|
case 1: return [2 /*return*/, _b.apply(_a, [_c.sent()])];
|
|
75
|
+
case 2:
|
|
76
|
+
e_2 = _c.sent();
|
|
77
|
+
return [2 /*return*/, null];
|
|
78
|
+
case 3: return [2 /*return*/];
|
|
74
79
|
}
|
|
75
80
|
});
|
|
76
81
|
}); };
|
package/dist/utils/files.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/utils/files.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAA0B;AAC1B,oDAA2B;AAE3B,IAAM,QAAQ,GAAG,UAAO,IAAY;IAClC,sBAAA,qBAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAA;SAAA,CAAC;AAEpC,IAAM,eAAe,GAAG,UAAO,QAAgB;;;;;;gBAErC,qBAAM,QAAQ,CAAC,QAAQ,CAAC,EAAA;;gBAA/B,IAAI,GAAG,SAAwB;gBACrC,sBAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;;;gBAEpB,sBAAO,CAAC,GAAC,CAAC,EAAC;;;;KAEd,CAAC;AAPW,QAAA,eAAe,mBAO1B;AAEK,IAAM,QAAQ,GAAG,UAAO,QAAgB
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/utils/files.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAA0B;AAC1B,oDAA2B;AAE3B,IAAM,QAAQ,GAAG,UAAO,IAAY;IAClC,sBAAA,qBAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAA;SAAA,CAAC;AAEpC,IAAM,eAAe,GAAG,UAAO,QAAgB;;;;;;gBAErC,qBAAM,QAAQ,CAAC,QAAQ,CAAC,EAAA;;gBAA/B,IAAI,GAAG,SAAwB;gBACrC,sBAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;;;gBAEpB,sBAAO,CAAC,GAAC,CAAC,EAAC;;;;KAEd,CAAC;AAPW,QAAA,eAAe,mBAO1B;AAEK,IAAM,QAAQ,GAAG,UAAO,QAAgB;;;;;;gBAEpC,KAAA,CAAA,KAAA,oBAAI,CAAA,CAAC,IAAI,CAAA;gBAAC,qBAAM,QAAQ,CAAC,QAAQ,CAAC,EAAA;oBAAzC,sBAAO,cAAU,SAAwB,EAAC,EAAC;;;gBAE3C,sBAAO,IAAI,EAAC;;;;KAEf,CAAC;AANW,QAAA,QAAQ,YAMnB"}
|
package/dist/utils/gitlab.d.ts
CHANGED
|
@@ -15,5 +15,5 @@ declare type GitlabVariable = {
|
|
|
15
15
|
environment_scope: string;
|
|
16
16
|
};
|
|
17
17
|
export declare const getAllVariables: ((vorpal: CommandInstance) => Promise<Array<GitlabVariable>>) & memoizee.Memoized<(vorpal: CommandInstance) => Promise<Array<GitlabVariable>>>;
|
|
18
|
-
export declare const upsertAllVariables: (vorpal: CommandInstance, variables: Record<string,
|
|
18
|
+
export declare const upsertAllVariables: (vorpal: CommandInstance, variables: Record<string, any>, env: string, componentName: string) => Promise<void>;
|
|
19
19
|
export {};
|
package/dist/utils/gitlab.js
CHANGED
|
@@ -35,12 +35,22 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
35
35
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
39
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
40
|
+
if (ar || !(i in from)) {
|
|
41
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
42
|
+
ar[i] = from[i];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
46
|
+
};
|
|
38
47
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
48
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
49
|
};
|
|
41
50
|
exports.__esModule = true;
|
|
42
51
|
exports.upsertAllVariables = exports.getAllVariables = exports.getProjectInfo = exports.doGitlabRequest = exports.getGitlabToken = void 0;
|
|
43
52
|
var child_process_promise_1 = require("child-process-promise");
|
|
53
|
+
var lodash_1 = require("lodash");
|
|
44
54
|
var memoizee_1 = __importDefault(require("memoizee"));
|
|
45
55
|
var node_fetch_1 = __importDefault(require("node-fetch"));
|
|
46
56
|
var open_1 = __importDefault(require("open"));
|
|
@@ -138,14 +148,27 @@ var getProjectInfo = function (vorpal) { return __awaiter(void 0, void 0, void 0
|
|
|
138
148
|
}); };
|
|
139
149
|
exports.getProjectInfo = getProjectInfo;
|
|
140
150
|
exports.getAllVariables = (0, memoizee_1["default"])(function (vorpal) { return __awaiter(void 0, void 0, void 0, function () {
|
|
141
|
-
var id;
|
|
151
|
+
var id, all, result, page;
|
|
142
152
|
return __generator(this, function (_a) {
|
|
143
153
|
switch (_a.label) {
|
|
144
154
|
case 0: return [4 /*yield*/, (0, exports.getProjectInfo)(vorpal)];
|
|
145
155
|
case 1:
|
|
146
156
|
id = (_a.sent()).id;
|
|
147
|
-
|
|
148
|
-
|
|
157
|
+
all = [];
|
|
158
|
+
page = 1;
|
|
159
|
+
_a.label = 2;
|
|
160
|
+
case 2: return [4 /*yield*/, (0, exports.doGitlabRequest)(vorpal,
|
|
161
|
+
// 100 is max page size
|
|
162
|
+
"projects/".concat(id, "/variables?per_page=100&page=").concat(page))];
|
|
163
|
+
case 3:
|
|
164
|
+
result = _a.sent();
|
|
165
|
+
page++;
|
|
166
|
+
all = __spreadArray(__spreadArray([], all, true), result, true);
|
|
167
|
+
_a.label = 4;
|
|
168
|
+
case 4:
|
|
169
|
+
if ((result === null || result === void 0 ? void 0 : result.length) > 0) return [3 /*break*/, 2];
|
|
170
|
+
_a.label = 5;
|
|
171
|
+
case 5: return [2 /*return*/, all];
|
|
149
172
|
}
|
|
150
173
|
});
|
|
151
174
|
}); }, { promise: true });
|
|
@@ -171,7 +194,7 @@ var updateVariable = function (vorpal, projectId, key, value) { return __awaiter
|
|
|
171
194
|
});
|
|
172
195
|
}); };
|
|
173
196
|
var upsertAllVariables = function (vorpal, variables, env, componentName) { return __awaiter(void 0, void 0, void 0, function () {
|
|
174
|
-
var id, _i, _a, _b, key, value, fullKey, e_1;
|
|
197
|
+
var id, _i, _a, _b, key, value, fullKey, valueSanitized, e_1;
|
|
175
198
|
return __generator(this, function (_c) {
|
|
176
199
|
switch (_c.label) {
|
|
177
200
|
case 0: return [4 /*yield*/, (0, exports.getProjectInfo)(vorpal)];
|
|
@@ -183,16 +206,17 @@ var upsertAllVariables = function (vorpal, variables, env, componentName) { retu
|
|
|
183
206
|
if (!(_i < _a.length)) return [3 /*break*/, 9];
|
|
184
207
|
_b = _a[_i], key = _b[0], value = _b[1];
|
|
185
208
|
fullKey = "CL_" + env + "_" + componentName + "_" + key;
|
|
209
|
+
valueSanitized = (0, lodash_1.isObject)(value) ? JSON.stringify(value) : "".concat(value);
|
|
186
210
|
_c.label = 3;
|
|
187
211
|
case 3:
|
|
188
212
|
_c.trys.push([3, 5, 7, 8]);
|
|
189
|
-
return [4 /*yield*/, updateVariable(vorpal, id, fullKey,
|
|
213
|
+
return [4 /*yield*/, updateVariable(vorpal, id, fullKey, valueSanitized)];
|
|
190
214
|
case 4:
|
|
191
215
|
_c.sent();
|
|
192
216
|
return [3 /*break*/, 8];
|
|
193
217
|
case 5:
|
|
194
218
|
e_1 = _c.sent();
|
|
195
|
-
return [4 /*yield*/, createVariable(vorpal, id, fullKey,
|
|
219
|
+
return [4 /*yield*/, createVariable(vorpal, id, fullKey, valueSanitized)];
|
|
196
220
|
case 6:
|
|
197
221
|
_c.sent();
|
|
198
222
|
return [3 /*break*/, 8];
|
package/dist/utils/gitlab.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../src/utils/gitlab.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../src/utils/gitlab.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,5 +4,5 @@ export declare const hasBitwarden: () => any;
|
|
|
4
4
|
export declare const readPass: (path: string) => Promise<any>;
|
|
5
5
|
export declare const syncBitwarden: (force?: boolean) => Promise<void>;
|
|
6
6
|
export declare const insertPass: (path: string, content: string) => Promise<void>;
|
|
7
|
+
export declare const trashItem: (path: string) => Promise<any>;
|
|
7
8
|
export declare const editPass: (path: string) => Promise<void>;
|
|
8
|
-
export declare const readPassEnvVars: (path: string) => Promise<{}>;
|
|
@@ -50,14 +50,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
50
50
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
51
51
|
};
|
|
52
52
|
exports.__esModule = true;
|
|
53
|
-
exports.
|
|
53
|
+
exports.editPass = exports.trashItem = exports.insertPass = exports.syncBitwarden = exports.readPass = exports.hasBitwarden = exports.getOrganization = exports.getCollection = void 0;
|
|
54
54
|
var child_process_promise_1 = require("child-process-promise");
|
|
55
55
|
var command_exists_promise_1 = __importDefault(require("command-exists-promise"));
|
|
56
56
|
var dayjs_1 = __importDefault(require("dayjs"));
|
|
57
57
|
var fs_extra_1 = require("fs-extra");
|
|
58
|
-
var js_yaml_1 = __importDefault(require("js-yaml"));
|
|
59
58
|
var tmp_promise_1 = require("tmp-promise");
|
|
60
|
-
var formatEnvVars_1 = __importDefault(require("../formatEnvVars"));
|
|
61
59
|
var getEditor_1 = __importDefault(require("../getEditor"));
|
|
62
60
|
var preferences_1 = require("../preferences");
|
|
63
61
|
var DEBUG = false;
|
|
@@ -164,10 +162,7 @@ var execBitwardenCommand = function (command) { return __awaiter(void 0, void 0,
|
|
|
164
162
|
case 10:
|
|
165
163
|
_a.sent();
|
|
166
164
|
return [2 /*return*/, execBitwardenCommand(command)];
|
|
167
|
-
case 11:
|
|
168
|
-
console.error(e_1);
|
|
169
|
-
console.log("wooops", e_1.message);
|
|
170
|
-
_a.label = 12;
|
|
165
|
+
case 11: throw e_1;
|
|
171
166
|
case 12: return [3 /*break*/, 13];
|
|
172
167
|
case 13: return [2 /*return*/];
|
|
173
168
|
}
|
|
@@ -327,6 +322,21 @@ var share = function (itemId) { return __awaiter(void 0, void 0, void 0, functio
|
|
|
327
322
|
}
|
|
328
323
|
});
|
|
329
324
|
}); };
|
|
325
|
+
var trashItem = function (path) { return __awaiter(void 0, void 0, void 0, function () {
|
|
326
|
+
var item, result;
|
|
327
|
+
return __generator(this, function (_a) {
|
|
328
|
+
switch (_a.label) {
|
|
329
|
+
case 0: return [4 /*yield*/, getItem(path)];
|
|
330
|
+
case 1:
|
|
331
|
+
item = _a.sent();
|
|
332
|
+
return [4 /*yield*/, execBitwardenCommand("delete item ".concat(item.id))];
|
|
333
|
+
case 2:
|
|
334
|
+
result = _a.sent();
|
|
335
|
+
return [2 /*return*/, result];
|
|
336
|
+
}
|
|
337
|
+
});
|
|
338
|
+
}); };
|
|
339
|
+
exports.trashItem = trashItem;
|
|
330
340
|
var editPass = function (path) { return __awaiter(void 0, void 0, void 0, function () {
|
|
331
341
|
var item;
|
|
332
342
|
return __generator(this, function (_a) {
|
|
@@ -365,17 +375,4 @@ var editPass = function (path) { return __awaiter(void 0, void 0, void 0, functi
|
|
|
365
375
|
});
|
|
366
376
|
}); };
|
|
367
377
|
exports.editPass = editPass;
|
|
368
|
-
var readPassEnvVars = function (path) { return __awaiter(void 0, void 0, void 0, function () {
|
|
369
|
-
var yamlstring;
|
|
370
|
-
return __generator(this, function (_a) {
|
|
371
|
-
switch (_a.label) {
|
|
372
|
-
case 0: return [4 /*yield*/, (0, exports.readPass)(path)];
|
|
373
|
-
case 1:
|
|
374
|
-
yamlstring = _a.sent();
|
|
375
|
-
// if a value is an object, we convert it to strings
|
|
376
|
-
return [2 /*return*/, (0, formatEnvVars_1["default"])(js_yaml_1["default"].load(yamlstring))];
|
|
377
|
-
}
|
|
378
|
-
});
|
|
379
|
-
}); };
|
|
380
|
-
exports.readPassEnvVars = readPassEnvVars;
|
|
381
378
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/passwordstore/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAAoD;AACpD,kFAAmD;AACnD,gDAA0B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/passwordstore/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const getGitRoot: () => Promise<
|
|
1
|
+
export declare const getGitRoot: () => Promise<string>;
|
|
2
2
|
export declare const getRootGitlabCiFile: () => Promise<string>;
|
|
3
3
|
export declare const readRootGitlabCiFile: () => Promise<any[]>;
|
|
4
4
|
export declare const hasGitlabCiFile: () => Promise<boolean>;
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@bitwarden/cli": "^1.8.0",
|
|
20
|
-
"@catladder/pipeline": "0.0.0
|
|
20
|
+
"@catladder/pipeline": "0.0.0",
|
|
21
21
|
"@kubernetes/client-node": "^0.16.1",
|
|
22
22
|
"child-process-promise": "^2.2.1",
|
|
23
23
|
"clipboardy": "^2.2.0",
|
|
@@ -60,5 +60,5 @@
|
|
|
60
60
|
"eslint": "^8.7.0",
|
|
61
61
|
"typescript": "^4.5.4"
|
|
62
62
|
},
|
|
63
|
-
"version": "0.0.0-main-
|
|
63
|
+
"version": "0.0.0-main-67fbbdf8"
|
|
64
64
|
}
|
package/src/apps/cli/cli.ts
CHANGED
|
@@ -9,12 +9,13 @@ import project from "./commands/project";
|
|
|
9
9
|
import theStuffThatReallyMatters from "./commands/theStuffThatReallyMatters";
|
|
10
10
|
|
|
11
11
|
import { getProjectConfig } from "../../config/getProjectConfig";
|
|
12
|
+
import { verify } from "./verify";
|
|
12
13
|
|
|
13
14
|
export default async () => {
|
|
14
|
-
const projectConfig = await getProjectConfig();
|
|
15
|
-
const welcomeMessage = `catladder 2022 😻 version ${packageInfos.version}`;
|
|
16
|
-
|
|
17
15
|
const vorpal = new Vorpal();
|
|
16
|
+
verify(vorpal);
|
|
17
|
+
const welcomeMessage = `catladder 2022 😻 version ${packageInfos.version}`;
|
|
18
|
+
const projectConfig = await getProjectConfig();
|
|
18
19
|
|
|
19
20
|
vorpal
|
|
20
21
|
.delimiter("catladder $") // emoji messes with cursor :-( https://github.com/dthree/vorpal/issues/332
|
|
@@ -26,6 +27,7 @@ export default async () => {
|
|
|
26
27
|
if (projectConfig) {
|
|
27
28
|
vorpal.log("project: " + projectConfig.appName);
|
|
28
29
|
vorpal.log("customer: " + projectConfig.customerName);
|
|
30
|
+
vorpal.log("");
|
|
29
31
|
}
|
|
30
32
|
|
|
31
33
|
general(vorpal);
|
|
@@ -13,6 +13,24 @@ import { upsertAllVariables } from "../../../../utils/gitlab";
|
|
|
13
13
|
import { delay } from "../../../../utils/promise";
|
|
14
14
|
import { allEnvsAndAllComponents } from "./utils/autocompletions";
|
|
15
15
|
|
|
16
|
+
/* for convenience, parse json objects. that makes it easier to edit secrets that are object */
|
|
17
|
+
const resolveJson = (v: Record<string, Record<string, string>>) =>
|
|
18
|
+
Object.fromEntries(
|
|
19
|
+
Object.entries(v).map(([c, secrets]) => {
|
|
20
|
+
return [
|
|
21
|
+
c,
|
|
22
|
+
Object.fromEntries(
|
|
23
|
+
Object.entries(secrets).map(([key, value]) => {
|
|
24
|
+
try {
|
|
25
|
+
return [key, JSON.parse(value)];
|
|
26
|
+
} catch (e) {
|
|
27
|
+
return [key, value];
|
|
28
|
+
}
|
|
29
|
+
})
|
|
30
|
+
),
|
|
31
|
+
];
|
|
32
|
+
})
|
|
33
|
+
);
|
|
16
34
|
const getEnvVarsToEdit = async (env: string, componentName: string) => {
|
|
17
35
|
const { secretEnvVarKeys } = await getEnvironment(env, componentName);
|
|
18
36
|
|
|
@@ -26,7 +44,7 @@ const doItFor = async (
|
|
|
26
44
|
env: string,
|
|
27
45
|
components: string[]
|
|
28
46
|
) => {
|
|
29
|
-
let valuesToEdit = Object.fromEntries(
|
|
47
|
+
let valuesToEdit: Record<string, Record<string, string>> = Object.fromEntries(
|
|
30
48
|
await Promise.all(
|
|
31
49
|
components.map(async (componentName) => [
|
|
32
50
|
componentName,
|
|
@@ -37,7 +55,7 @@ const doItFor = async (
|
|
|
37
55
|
let hasErrors = true;
|
|
38
56
|
while (hasErrors) {
|
|
39
57
|
valuesToEdit = await editAsFile(
|
|
40
|
-
valuesToEdit,
|
|
58
|
+
resolveJson(valuesToEdit),
|
|
41
59
|
stripIndents`
|
|
42
60
|
Please fill in all secrets for: ${components.join(", ")}
|
|
43
61
|
|
|
@@ -87,6 +105,8 @@ const doItFor = async (
|
|
|
87
105
|
}
|
|
88
106
|
}
|
|
89
107
|
|
|
108
|
+
console.log(JSON.stringify(valuesToEdit, null, 2));
|
|
109
|
+
|
|
90
110
|
for (const componentName of components) {
|
|
91
111
|
await upsertAllVariables(
|
|
92
112
|
this,
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Config } from "@catladder/pipeline";
|
|
2
|
+
import { spawn } from "child-process-promise";
|
|
3
|
+
import { writeFile } from "fs-extra";
|
|
4
|
+
import { safeDump } from "js-yaml";
|
|
5
|
+
import { format } from "prettier";
|
|
6
|
+
import { CommandInstance } from "vorpal";
|
|
7
|
+
import { getGitRoot } from "../../../utils/projects";
|
|
8
|
+
|
|
9
|
+
export const writeConfig = async (
|
|
10
|
+
vorpal: CommandInstance,
|
|
11
|
+
config: Config,
|
|
12
|
+
options?: {
|
|
13
|
+
endComment?: string;
|
|
14
|
+
}
|
|
15
|
+
) => {
|
|
16
|
+
const gitRoot = await getGitRoot();
|
|
17
|
+
const TS = "typescript (recommended)";
|
|
18
|
+
const { configType } = await vorpal.prompt({
|
|
19
|
+
type: "list",
|
|
20
|
+
name: "configType",
|
|
21
|
+
choices: [TS, "yaml"],
|
|
22
|
+
message: "In which format do you want the config? 🤔",
|
|
23
|
+
});
|
|
24
|
+
if (configType === TS) {
|
|
25
|
+
const content = format(`
|
|
26
|
+
import type { Config } from "@catladder/pipeline";
|
|
27
|
+
|
|
28
|
+
const config: Config = ${JSON.stringify(config)};
|
|
29
|
+
|
|
30
|
+
export default config;
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
${options?.endComment ? `/*${options.endComment}*/` : ""}
|
|
34
|
+
|
|
35
|
+
`);
|
|
36
|
+
|
|
37
|
+
await writeFile(gitRoot + "/catladder.ts", content, {
|
|
38
|
+
encoding: "utf-8",
|
|
39
|
+
});
|
|
40
|
+
vorpal.log("adding type @catladder/pipeline....");
|
|
41
|
+
await spawn("yarn add @catladder/pipeline -D", {
|
|
42
|
+
shell: true,
|
|
43
|
+
});
|
|
44
|
+
} else {
|
|
45
|
+
const content = safeDump(config);
|
|
46
|
+
|
|
47
|
+
await writeFile(
|
|
48
|
+
gitRoot + "/catladder.yml",
|
|
49
|
+
content +
|
|
50
|
+
"\n\n" +
|
|
51
|
+
(options.endComment
|
|
52
|
+
? "# " + options.endComment.split("\n").join("\n# ")
|
|
53
|
+
: ""),
|
|
54
|
+
{
|
|
55
|
+
encoding: "utf-8",
|
|
56
|
+
}
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
vorpal.log("done!");
|
|
60
|
+
vorpal.log("");
|
|
61
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import Vorpal from "vorpal";
|
|
2
|
+
import {
|
|
3
|
+
getGitlabCi,
|
|
4
|
+
getProjectConfig,
|
|
5
|
+
} from "../../../config/getProjectConfig";
|
|
6
|
+
import { migrateV2 } from "./migration/fromv2";
|
|
7
|
+
|
|
8
|
+
export const verify = async (vorpal: Vorpal) => {
|
|
9
|
+
const projectConfig = await getProjectConfig();
|
|
10
|
+
try {
|
|
11
|
+
const gitlabCi = getGitlabCi();
|
|
12
|
+
|
|
13
|
+
if (!gitlabCi) {
|
|
14
|
+
vorpal.log("not initialized");
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (!projectConfig) {
|
|
18
|
+
vorpal.log("no project config, needs migration");
|
|
19
|
+
await migrateV2(vorpal);
|
|
20
|
+
}
|
|
21
|
+
} catch (e) {
|
|
22
|
+
// no gitroot, ignore
|
|
23
|
+
}
|
|
24
|
+
};
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BuildConfig,
|
|
3
|
+
Config,
|
|
4
|
+
DeployConfigKubernetes,
|
|
5
|
+
Env,
|
|
6
|
+
} from "@catladder/pipeline";
|
|
7
|
+
import { readFile, writeFile } from "fs-extra";
|
|
8
|
+
import { isEmpty } from "lodash";
|
|
9
|
+
import Vorpal from "vorpal";
|
|
10
|
+
import {
|
|
11
|
+
getGitlabCi,
|
|
12
|
+
getGitlabCiFilePath,
|
|
13
|
+
} from "../../../../config/getProjectConfig";
|
|
14
|
+
import { readYaml } from "../../../../utils/files";
|
|
15
|
+
import { getGitRoot } from "../../../../utils/projects";
|
|
16
|
+
import { writeConfig } from "../../config/writeConfig";
|
|
17
|
+
import { migrateSecrets } from "./migrateSecrets";
|
|
18
|
+
import { detectBuildConfig, OldGitlabCiFile } from "./oldGitlabCi";
|
|
19
|
+
export const LEGACY_ENVS = [
|
|
20
|
+
"dev-local",
|
|
21
|
+
"dev",
|
|
22
|
+
"review",
|
|
23
|
+
"stage",
|
|
24
|
+
"prod",
|
|
25
|
+
] as const;
|
|
26
|
+
|
|
27
|
+
const arrayToRecord = (arr: { name: string }[]): Record<string, any> => {
|
|
28
|
+
if (!arr) return undefined;
|
|
29
|
+
return Object.fromEntries(arr.map(({ name, ...rest }) => [name, rest]));
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const transformVars = (rawVars: {
|
|
33
|
+
public: Record<string, any>;
|
|
34
|
+
secret: Record<string, any>;
|
|
35
|
+
fromCommponents: any;
|
|
36
|
+
}) => {
|
|
37
|
+
if (rawVars.fromCommponents) {
|
|
38
|
+
console.warn("cant transform legacy fromCommponents");
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return {
|
|
42
|
+
public: rawVars.public,
|
|
43
|
+
secret: rawVars.secret ? Object.keys(rawVars.secret) : undefined,
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const transformValues = (
|
|
48
|
+
valuesIn: Record<string, any>
|
|
49
|
+
): DeployConfigKubernetes["values"] => {
|
|
50
|
+
if (isEmpty(valuesIn)) {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
delete valuesIn?.application?.hostname;
|
|
54
|
+
delete valuesIn?.application?.command;
|
|
55
|
+
|
|
56
|
+
return {
|
|
57
|
+
...valuesIn,
|
|
58
|
+
jobs: arrayToRecord(valuesIn?.jobs),
|
|
59
|
+
cronjobs: arrayToRecord(valuesIn?.cronjobs),
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
export const migrateV2 = async (vorpal: Vorpal) => {
|
|
63
|
+
const gitlabCi: OldGitlabCiFile = await getGitlabCi();
|
|
64
|
+
const gitRoot = await getGitRoot();
|
|
65
|
+
|
|
66
|
+
const { CUSTOMER_NAME, APP_NAME, COMPONENT_NAME, APP_DIR, CLUSTER_NAME } =
|
|
67
|
+
gitlabCi.variables;
|
|
68
|
+
|
|
69
|
+
vorpal
|
|
70
|
+
.command("migrate")
|
|
71
|
+
|
|
72
|
+
.action(async function () {
|
|
73
|
+
this.log("⚠️ this project uses legacy catladder (v2)");
|
|
74
|
+
this.log("migrate project?");
|
|
75
|
+
const { shouldContinue } = await this.prompt({
|
|
76
|
+
default: true,
|
|
77
|
+
message: "Migrate? 🤔",
|
|
78
|
+
name: "shouldContinue",
|
|
79
|
+
type: "confirm",
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
if (shouldContinue) {
|
|
83
|
+
const { env, ...baseValues } =
|
|
84
|
+
(await readYaml(gitRoot + "/values.yml")) ?? {};
|
|
85
|
+
|
|
86
|
+
const startCommand = baseValues?.application?.command?.join(" ");
|
|
87
|
+
|
|
88
|
+
// we only have one component
|
|
89
|
+
const config: Config = {
|
|
90
|
+
customerName: CUSTOMER_NAME,
|
|
91
|
+
appName: APP_NAME,
|
|
92
|
+
components: {
|
|
93
|
+
[COMPONENT_NAME]: {
|
|
94
|
+
vars: env ? transformVars(env) : undefined,
|
|
95
|
+
dir: APP_DIR ?? ".",
|
|
96
|
+
build: {
|
|
97
|
+
type: detectBuildConfig(gitlabCi),
|
|
98
|
+
startCommand: startCommand,
|
|
99
|
+
} as BuildConfig,
|
|
100
|
+
deploy: {
|
|
101
|
+
type: "kubernetes",
|
|
102
|
+
values: transformValues(baseValues),
|
|
103
|
+
cluster: CLUSTER_NAME,
|
|
104
|
+
},
|
|
105
|
+
env: await LEGACY_ENVS.reduce<Promise<Env>>(
|
|
106
|
+
async (acc, envName) => {
|
|
107
|
+
const newEnvName =
|
|
108
|
+
envName === "dev-local" ? "local" : envName;
|
|
109
|
+
|
|
110
|
+
const envValues =
|
|
111
|
+
(await readYaml(gitRoot + `/values-${envName}.yml`)) ?? {};
|
|
112
|
+
const { env, ...rest } = envValues;
|
|
113
|
+
const hostname = rest?.application?.hostname;
|
|
114
|
+
const values = transformValues(rest);
|
|
115
|
+
return {
|
|
116
|
+
...(await acc),
|
|
117
|
+
[newEnvName]: {
|
|
118
|
+
hostname: hostname,
|
|
119
|
+
vars: env ? transformVars(env) : undefined,
|
|
120
|
+
deploy: values
|
|
121
|
+
? {
|
|
122
|
+
values: values,
|
|
123
|
+
}
|
|
124
|
+
: undefined,
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
},
|
|
128
|
+
Promise.resolve({})
|
|
129
|
+
),
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
this.log("migrate secrets");
|
|
134
|
+
for (const env of LEGACY_ENVS) {
|
|
135
|
+
await migrateSecrets(this, gitlabCi, env);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const comment =
|
|
139
|
+
"Old migrated config:\n\n" +
|
|
140
|
+
(await readFile(await getGitlabCiFilePath(), {
|
|
141
|
+
encoding: "utf-8",
|
|
142
|
+
}));
|
|
143
|
+
this.log("write config");
|
|
144
|
+
await writeConfig(this, config, {
|
|
145
|
+
endComment: comment,
|
|
146
|
+
});
|
|
147
|
+
this.log("write gitlab-ci.yml");
|
|
148
|
+
await writeFile(
|
|
149
|
+
await getGitlabCiFilePath(),
|
|
150
|
+
"include: https://git.panter.ch/api/v4/projects/catladder%2Fcatladder/packages/generic/ci-includes/main/gitlab-ci.yml",
|
|
151
|
+
{ encoding: "utf-8" }
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
vorpal.exec("migrate");
|
|
157
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { load } from "js-yaml";
|
|
2
|
+
import { CommandInstance } from "vorpal";
|
|
3
|
+
import { upsertAllVariables } from "../../../../utils/gitlab";
|
|
4
|
+
import { readPass, trashItem } from "../../../../utils/passwordstore";
|
|
5
|
+
import { LEGACY_ENVS } from "./fromv2";
|
|
6
|
+
import { OldGitlabCiFile } from "./oldGitlabCi";
|
|
7
|
+
|
|
8
|
+
const getPassPath = (gitlabCi: OldGitlabCiFile, env: string) => {
|
|
9
|
+
return `${gitlabCi.variables.CUSTOMER_NAME}/${gitlabCi.variables.APP_NAME}/${env}/secrets.yml`;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export const migrateSecrets = async (
|
|
13
|
+
vorpal: CommandInstance,
|
|
14
|
+
gitlabCi: OldGitlabCiFile,
|
|
15
|
+
env: typeof LEGACY_ENVS[number]
|
|
16
|
+
) => {
|
|
17
|
+
const path = getPassPath(gitlabCi, env);
|
|
18
|
+
try {
|
|
19
|
+
const yamlstring = await readPass(path);
|
|
20
|
+
const secrets = load(yamlstring);
|
|
21
|
+
|
|
22
|
+
await upsertAllVariables(
|
|
23
|
+
vorpal,
|
|
24
|
+
secrets,
|
|
25
|
+
env === "dev-local" ? "local" : env,
|
|
26
|
+
gitlabCi.variables.COMPONENT_NAME
|
|
27
|
+
);
|
|
28
|
+
await trashItem(path);
|
|
29
|
+
} catch (e) {
|
|
30
|
+
console.warn(`could not migrate secrets for env '${env}': ${e}`);
|
|
31
|
+
}
|
|
32
|
+
};
|