@catladder/cli 1.52.2 → 1.53.0

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.
@@ -3,7 +3,8 @@ import type { CommandInstance } from "vorpal";
3
3
  export declare const hasGitlabToken: () => Promise<boolean>;
4
4
  export declare const setupGitlabToken: (vorpal: CommandInstance) => Promise<void>;
5
5
  export declare const getGitlabToken: (vorpal: CommandInstance) => Promise<string>;
6
- export declare const doGitlabRequest: <T = any>(vorpal: CommandInstance, path: string, data?: any, update?: boolean) => Promise<T>;
6
+ declare type Method = "GET" | "PUT" | "POST" | "DELETE";
7
+ export declare const doGitlabRequest: <T = any>(vorpal: CommandInstance, path: string, data?: any, method?: Method) => Promise<T>;
7
8
  export declare const getProjectInfo: (vorpal: CommandInstance) => Promise<{
8
9
  id: string;
9
10
  web_url: string;
@@ -18,5 +19,6 @@ declare type GitlabVariable = {
18
19
  };
19
20
  export declare const getAllVariables: ((vorpal: CommandInstance) => Promise<Array<GitlabVariable>>) & memoizee.Memoized<(vorpal: CommandInstance) => Promise<Array<GitlabVariable>>>;
20
21
  export declare const getVariableValueByRawName: (vorpal: CommandInstance, rawName: string) => Promise<string>;
22
+ export declare const clearBackups: (vorpal: CommandInstance, keep: number) => Promise<void>;
21
23
  export declare const upsertAllVariables: (vorpal: CommandInstance, variables: Record<string, any>, env: string, componentName: string, backup?: boolean, masked?: boolean) => Promise<void>;
22
24
  export {};
@@ -59,7 +59,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
59
59
  return (mod && mod.__esModule) ? mod : { "default": mod };
60
60
  };
61
61
  exports.__esModule = true;
62
- exports.upsertAllVariables = exports.getVariableValueByRawName = exports.getAllVariables = exports.getProjectInfo = exports.doGitlabRequest = exports.getGitlabToken = exports.setupGitlabToken = exports.hasGitlabToken = void 0;
62
+ exports.upsertAllVariables = exports.clearBackups = exports.getVariableValueByRawName = exports.getAllVariables = exports.getProjectInfo = exports.doGitlabRequest = exports.getGitlabToken = exports.setupGitlabToken = exports.hasGitlabToken = void 0;
63
63
  var pipeline_1 = require("@catladder/pipeline");
64
64
  var child_process_promise_1 = require("child-process-promise");
65
65
  var lodash_1 = require("lodash");
@@ -133,28 +133,31 @@ var getGitlabToken = function (vorpal) { return __awaiter(void 0, void 0, void 0
133
133
  });
134
134
  }); };
135
135
  exports.getGitlabToken = getGitlabToken;
136
- var doGitlabRequest = function (vorpal, path, data, update) {
136
+ var doGitlabRequest = function (vorpal, path, data, method) {
137
137
  if (data === void 0) { data = undefined; }
138
+ if (method === void 0) { method = "GET"; }
138
139
  return __awaiter(void 0, void 0, void 0, function () {
139
- var rootToken, method, result, _a, _b, _c, _d, _e;
140
+ var rootToken, result, _a, _b, _c, _d, _e;
140
141
  return __generator(this, function (_f) {
141
142
  switch (_f.label) {
142
143
  case 0: return [4 /*yield*/, (0, exports.getGitlabToken)(vorpal)];
143
144
  case 1:
144
145
  rootToken = _f.sent();
145
- method = data ? (update ? "PUT" : "POST") : "GET";
146
146
  return [4 /*yield*/, (0, node_fetch_1["default"])("https://git.panter.ch/api/v4/".concat(path), {
147
147
  method: method,
148
148
  headers: {
149
149
  "Content-Type": "application/json",
150
150
  "Private-Token": rootToken
151
151
  },
152
- body: JSON.stringify(data)
152
+ body: data ? JSON.stringify(data) : undefined
153
153
  })];
154
154
  case 2:
155
155
  result = _f.sent();
156
156
  if (result.status >= 200 && result.status < 400) {
157
- return [2 /*return*/, result.json()];
157
+ if (result.headers.get("content-type") === "application/json") {
158
+ return [2 /*return*/, result.json()];
159
+ }
160
+ return [2 /*return*/, null];
158
161
  }
159
162
  if (result.status === 404) {
160
163
  throw new Error("not found");
@@ -236,7 +239,7 @@ var createVariable = function (vorpal, projectId, key, value, masked, environmen
236
239
  value: value,
237
240
  masked: masked && isMaskable(value),
238
241
  environment_scope: environment_scope
239
- })];
242
+ }, "POST")];
240
243
  case 1: return [2 /*return*/, _a.sent()];
241
244
  }
242
245
  });
@@ -250,12 +253,20 @@ var updateVariable = function (vorpal, projectId, key, value, masked) {
250
253
  case 0: return [4 /*yield*/, (0, exports.doGitlabRequest)(vorpal, "projects/".concat(projectId, "/variables/").concat(key), {
251
254
  value: value,
252
255
  masked: masked && isMaskable(value)
253
- }, true)];
256
+ }, "PUT")];
254
257
  case 1: return [2 /*return*/, _a.sent()];
255
258
  }
256
259
  });
257
260
  });
258
261
  };
262
+ var deleteVariable = function (vorpal, projectId, key) { return __awaiter(void 0, void 0, void 0, function () {
263
+ return __generator(this, function (_a) {
264
+ switch (_a.label) {
265
+ case 0: return [4 /*yield*/, (0, exports.doGitlabRequest)(vorpal, "projects/".concat(projectId, "/variables/").concat(key), undefined, "DELETE")];
266
+ case 1: return [2 /*return*/, _a.sent()];
267
+ }
268
+ });
269
+ }); };
259
270
  var getAllCatladderEnvVarsInGitlab = function (vorpal) { return __awaiter(void 0, void 0, void 0, function () {
260
271
  var allVariables;
261
272
  return __generator(this, function (_a) {
@@ -285,6 +296,46 @@ var getAllCatladderEnvVarsInGitlab = function (vorpal) { return __awaiter(void 0
285
296
  }
286
297
  });
287
298
  }); };
299
+ var getBackupKey = function (fullKey, timestamp) {
300
+ return "".concat(fullKey, "_backup_").concat(timestamp);
301
+ };
302
+ var clearBackups = function (vorpal, keep) { return __awaiter(void 0, void 0, void 0, function () {
303
+ var existingVariables, id, _i, _a, _b, key, backups, backupsSorted, toDelete, _c, toDelete_1, timestamp;
304
+ return __generator(this, function (_d) {
305
+ switch (_d.label) {
306
+ case 0: return [4 /*yield*/, getAllCatladderEnvVarsInGitlab(vorpal)];
307
+ case 1:
308
+ existingVariables = _d.sent();
309
+ return [4 /*yield*/, (0, exports.getProjectInfo)(vorpal)];
310
+ case 2:
311
+ id = (_d.sent()).id;
312
+ _i = 0, _a = Object.entries(existingVariables);
313
+ _d.label = 3;
314
+ case 3:
315
+ if (!(_i < _a.length)) return [3 /*break*/, 8];
316
+ _b = _a[_i], key = _b[0], backups = _b[1].backups;
317
+ backupsSorted = backups.sort(function (a, b) { return b - a; });
318
+ toDelete = backupsSorted.slice(keep);
319
+ _c = 0, toDelete_1 = toDelete;
320
+ _d.label = 4;
321
+ case 4:
322
+ if (!(_c < toDelete_1.length)) return [3 /*break*/, 7];
323
+ timestamp = toDelete_1[_c];
324
+ return [4 /*yield*/, deleteVariable(vorpal, id, getBackupKey(key, timestamp))];
325
+ case 5:
326
+ _d.sent();
327
+ _d.label = 6;
328
+ case 6:
329
+ _c++;
330
+ return [3 /*break*/, 4];
331
+ case 7:
332
+ _i++;
333
+ return [3 /*break*/, 3];
334
+ case 8: return [2 /*return*/];
335
+ }
336
+ });
337
+ }); };
338
+ exports.clearBackups = clearBackups;
288
339
  var upsertAllVariables = function (vorpal, variables, env, componentName, backup, masked // FIXME: would be better to have this per variable
289
340
  ) {
290
341
  if (backup === void 0) { backup = true; }
@@ -317,7 +368,7 @@ var upsertAllVariables = function (vorpal, variables, env, componentName, backup
317
368
  case 4:
318
369
  _d.sent();
319
370
  if (!backup) return [3 /*break*/, 6];
320
- return [4 /*yield*/, createVariable(vorpal, id, fullKey + "_backup_" + new Date().getTime(), oldValue, masked, "_backup")];
371
+ return [4 /*yield*/, createVariable(vorpal, id, getBackupKey(fullKey, new Date().getTime()), oldValue, masked, "_backup")];
321
372
  case 5:
322
373
  _d.sent();
323
374
  _d.label = 6;
@@ -1 +1 @@
1
- {"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../src/utils/gitlab.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../src/utils/gitlab.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -24,7 +24,7 @@
24
24
  "node": ">=12.0.0"
25
25
  },
26
26
  "devDependencies": {
27
- "@catladder/pipeline": "1.52.2",
27
+ "@catladder/pipeline": "1.53.0",
28
28
  "@kubernetes/client-node": "^0.16.2",
29
29
  "@tsconfig/node14": "^1.0.1",
30
30
  "@types/common-tags": "^1.8.0",
@@ -57,5 +57,5 @@
57
57
  "typescript": "^4.5.4",
58
58
  "vorpal": "^1.12.0"
59
59
  },
60
- "version": "1.52.2"
60
+ "version": "1.53.0"
61
61
  }
@@ -0,0 +1,27 @@
1
+ /* eslint-disable no-constant-condition */
2
+ import type Vorpal from "vorpal";
3
+ import type { CommandInstance } from "vorpal";
4
+ import { clearBackups } from "../../../../utils/gitlab";
5
+ import { allEnvsAndAllComponents } from "./utils/autocompletions";
6
+
7
+ export const projectSecretsClearBackups = async (
8
+ vorpal: CommandInstance,
9
+ keep = 3
10
+ ) => {
11
+ await clearBackups(vorpal, keep);
12
+ };
13
+
14
+ export default async (vorpal: Vorpal) => {
15
+ vorpal
16
+ .command("project-secrets-clear-backups", "clears all backups")
17
+ .autocomplete(await allEnvsAndAllComponents())
18
+ .action(async function () {
19
+ const { keep } = await this.prompt({
20
+ type: "number",
21
+ name: "keep",
22
+ default: 1,
23
+ message: "How many backups should we keep? 🤔",
24
+ });
25
+ return await projectSecretsClearBackups(this, keep);
26
+ });
27
+ };
@@ -24,6 +24,7 @@ import commandPortForward from "./commandPortForward";
24
24
  import commandTriggerCronjob from "./commandTriggerCronjob";
25
25
 
26
26
  import commandOpenGrafanaPod from "./commandOpenGrafanaPod";
27
+ import commandSecretsClearBackups from "./commandSecretsClearBackups";
27
28
 
28
29
  export default async (vorpal: Vorpal) => {
29
30
  commandSetup(vorpal);
@@ -48,6 +49,7 @@ export default async (vorpal: Vorpal) => {
48
49
  commandOpenEnv(vorpal);
49
50
  commandTriggerCronjob(vorpal);
50
51
  commandConfigSecrets(vorpal);
52
+ commandSecretsClearBackups(vorpal);
51
53
  commandDeletePods(vorpal);
52
54
  commandCopyDB(vorpal);
53
55
 
@@ -43,11 +43,17 @@ export const setupAccessTokens = async (instance: CommandInstance) => {
43
43
  name: "GL_TOKEN",
44
44
  message: "Access Token: ",
45
45
  });
46
- await doGitlabRequest(instance, `projects/${projectId}/variables`, {
47
- key: "GL_TOKEN",
48
- value: GL_TOKEN,
49
- masked: true,
50
- });
46
+
47
+ await doGitlabRequest(
48
+ instance,
49
+ `projects/${projectId}/variables`,
50
+ {
51
+ key: "GL_TOKEN",
52
+ value: GL_TOKEN,
53
+ masked: true,
54
+ },
55
+ "POST"
56
+ );
51
57
  }
52
58
 
53
59
  const deploy_tokens = await doGitlabRequest(
@@ -64,10 +70,15 @@ export const setupAccessTokens = async (instance: CommandInstance) => {
64
70
  "I will setup the 'GitLab Deploy Token', so Kubernetes can pull images from this project."
65
71
  );
66
72
 
67
- await doGitlabRequest(instance, `projects/${projectId}/deploy_tokens`, {
68
- id: projectId,
69
- name: "gitlab-deploy-token",
70
- scopes: ["read_registry"],
71
- });
73
+ await doGitlabRequest(
74
+ instance,
75
+ `projects/${projectId}/deploy_tokens`,
76
+ {
77
+ id: projectId,
78
+ name: "gitlab-deploy-token",
79
+ scopes: ["read_registry"],
80
+ },
81
+ "POST"
82
+ );
72
83
  }
73
84
  };
@@ -51,15 +51,16 @@ export const getGitlabToken = async (vorpal: CommandInstance) => {
51
51
  return getPreference(TOKEN_KEY);
52
52
  };
53
53
 
54
+ type Method = "GET" | "PUT" | "POST" | "DELETE";
54
55
  export const doGitlabRequest = async <T = any>(
55
56
  vorpal: CommandInstance,
56
57
  path: string,
57
58
  data: any = undefined,
58
- update?: boolean
59
+ method: Method = "GET"
59
60
  ): Promise<T> => {
60
61
  const rootToken = await getGitlabToken(vorpal);
61
62
 
62
- const method = data ? (update ? "PUT" : "POST") : "GET";
63
+ //const method = data ? (update ? "PUT" : "POST") : "GET";
63
64
 
64
65
  const result = await fetch(`https://git.panter.ch/api/v4/${path}`, {
65
66
  method,
@@ -67,11 +68,14 @@ export const doGitlabRequest = async <T = any>(
67
68
  "Content-Type": "application/json",
68
69
  "Private-Token": rootToken,
69
70
  },
70
- body: JSON.stringify(data),
71
+ body: data ? JSON.stringify(data) : undefined,
71
72
  });
72
73
 
73
74
  if (result.status >= 200 && result.status < 400) {
74
- return result.json();
75
+ if (result.headers.get("content-type") === "application/json") {
76
+ return result.json();
77
+ }
78
+ return null;
75
79
  }
76
80
  if (result.status === 404) {
77
81
  throw new Error("not found");
@@ -148,12 +152,17 @@ const createVariable = async (
148
152
  masked = true,
149
153
  environment_scope = "*"
150
154
  ) => {
151
- return await doGitlabRequest(vorpal, `projects/${projectId}/variables`, {
152
- key,
153
- value,
154
- masked: masked && isMaskable(value),
155
- environment_scope,
156
- });
155
+ return await doGitlabRequest(
156
+ vorpal,
157
+ `projects/${projectId}/variables`,
158
+ {
159
+ key,
160
+ value,
161
+ masked: masked && isMaskable(value),
162
+ environment_scope,
163
+ },
164
+ "POST"
165
+ );
157
166
  };
158
167
 
159
168
  const updateVariable = async (
@@ -170,7 +179,20 @@ const updateVariable = async (
170
179
  value,
171
180
  masked: masked && isMaskable(value),
172
181
  },
173
- true
182
+ "PUT"
183
+ );
184
+ };
185
+
186
+ const deleteVariable = async (
187
+ vorpal: CommandInstance,
188
+ projectId: string,
189
+ key: string
190
+ ) => {
191
+ return await doGitlabRequest(
192
+ vorpal,
193
+ `projects/${projectId}/variables/${key}`,
194
+ undefined,
195
+ "DELETE"
174
196
  );
175
197
  };
176
198
 
@@ -216,6 +238,22 @@ const getAllCatladderEnvVarsInGitlab = async (vorpal: CommandInstance) => {
216
238
  return allVariables;
217
239
  };
218
240
 
241
+ const getBackupKey = (fullKey: string, timestamp: number) =>
242
+ `${fullKey}_backup_${timestamp}`;
243
+ export const clearBackups = async (vorpal: CommandInstance, keep: number) => {
244
+ const existingVariables = await getAllCatladderEnvVarsInGitlab(vorpal);
245
+ const { id } = await getProjectInfo(vorpal);
246
+ for (const [key, { backups }] of Object.entries(existingVariables)) {
247
+ const backupsSorted = backups.sort((a, b) => b - a);
248
+ //const toKeep = backupsSorted.slice(0, keep);
249
+ const toDelete = backupsSorted.slice(keep);
250
+
251
+ for (const timestamp of toDelete) {
252
+ await deleteVariable(vorpal, id, getBackupKey(key, timestamp));
253
+ }
254
+ }
255
+ };
256
+
219
257
  export const upsertAllVariables = async (
220
258
  vorpal: CommandInstance,
221
259
  variables: Record<string, any>,
@@ -245,7 +283,7 @@ export const upsertAllVariables = async (
245
283
  await createVariable(
246
284
  vorpal,
247
285
  id,
248
- fullKey + "_backup_" + new Date().getTime(),
286
+ getBackupKey(fullKey, new Date().getTime()),
249
287
  oldValue,
250
288
  masked,
251
289
  "_backup"