@catladder/cli 1.1.2 → 1.2.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.
Files changed (71) hide show
  1. package/dist/apps/cli/commands/general/index.js +0 -66
  2. package/dist/apps/cli/commands/general/index.js.map +1 -1
  3. package/dist/apps/cli/commands/project/commandCloudSqlProxy.js +15 -14
  4. package/dist/apps/cli/commands/project/commandCloudSqlProxy.js.map +1 -1
  5. package/dist/apps/cli/commands/project/commandCopyDB.js +3 -3
  6. package/dist/apps/cli/commands/project/commandCopyDB.js.map +1 -1
  7. package/dist/apps/cli/commands/project/commandInitGitlab.js +64 -172
  8. package/dist/apps/cli/commands/project/commandInitGitlab.js.map +1 -1
  9. package/dist/apps/cli/commands/project/commandOpenDashboard.js +7 -14
  10. package/dist/apps/cli/commands/project/commandOpenDashboard.js.map +1 -1
  11. package/dist/apps/cli/commands/project/commandOpenGit.js +7 -2
  12. package/dist/apps/cli/commands/project/commandOpenGit.js.map +1 -1
  13. package/dist/apps/cli/commands/project/commandOpenLogs.js +21 -21
  14. package/dist/apps/cli/commands/project/commandOpenLogs.js.map +1 -1
  15. package/dist/apps/cli/commands/project/utils/ensureCluster.js +1 -1
  16. package/dist/apps/cli/commands/project/utils/ensureCluster.js.map +1 -1
  17. package/dist/apps/cli/commands/project/utils/ensureNamespace.d.ts +1 -1
  18. package/dist/apps/cli/commands/project/utils/ensureNamespace.js +18 -34
  19. package/dist/apps/cli/commands/project/utils/ensureNamespace.js.map +1 -1
  20. package/dist/apps/cli/commands/shared/index.d.ts +3 -2
  21. package/dist/apps/cli/commands/shared/index.js +7 -9
  22. package/dist/apps/cli/commands/shared/index.js.map +1 -1
  23. package/dist/apps/cli/commands/theStuffThatReallyMatters/index.js +0 -30
  24. package/dist/apps/cli/commands/theStuffThatReallyMatters/index.js.map +1 -1
  25. package/dist/apps/cli/verify/migration/fromv2.js +9 -3
  26. package/dist/apps/cli/verify/migration/fromv2.js.map +1 -1
  27. package/dist/catenv.js +2 -0
  28. package/dist/catenv.js.map +1 -1
  29. package/dist/cli.js +2 -0
  30. package/dist/cli.js.map +1 -1
  31. package/dist/config/constants.d.ts +0 -1
  32. package/dist/config/constants.js +1 -2
  33. package/dist/config/constants.js.map +1 -1
  34. package/dist/config/getProjectConfig.js +3 -1
  35. package/dist/config/getProjectConfig.js.map +1 -1
  36. package/dist/k8sApi/index.d.ts +1 -0
  37. package/dist/k8sApi/index.js +6 -2
  38. package/dist/k8sApi/index.js.map +1 -1
  39. package/dist/tsconfig.tsbuildinfo +1 -1
  40. package/dist/utils/cluster.d.ts +2 -11
  41. package/dist/utils/cluster.js +13 -38
  42. package/dist/utils/cluster.js.map +1 -1
  43. package/dist/utils/gitlab.js +6 -2
  44. package/dist/utils/gitlab.js.map +1 -1
  45. package/dist/utils/projects/index.js +10 -6
  46. package/dist/utils/projects/index.js.map +1 -1
  47. package/package.json +5 -4
  48. package/src/apps/cli/commands/general/index.ts +1 -39
  49. package/src/apps/cli/commands/project/commandCloudSqlProxy.ts +4 -5
  50. package/src/apps/cli/commands/project/commandCopyDB.ts +4 -5
  51. package/src/apps/cli/commands/project/commandInitGitlab.ts +123 -74
  52. package/src/apps/cli/commands/project/commandOpenDashboard.ts +10 -7
  53. package/src/apps/cli/commands/project/commandOpenGit.ts +2 -2
  54. package/src/apps/cli/commands/project/commandOpenLogs.ts +33 -4
  55. package/src/apps/cli/commands/project/utils/ensureCluster.ts +7 -2
  56. package/src/apps/cli/commands/project/utils/ensureNamespace.ts +2 -14
  57. package/src/apps/cli/commands/shared/index.ts +19 -16
  58. package/src/apps/cli/commands/theStuffThatReallyMatters/index.ts +0 -19
  59. package/src/apps/cli/verify/migration/fromv2.ts +7 -2
  60. package/src/catenv.ts +2 -1
  61. package/src/cli.ts +2 -1
  62. package/src/config/constants.ts +0 -1
  63. package/src/config/getProjectConfig.ts +5 -3
  64. package/src/k8sApi/index.ts +5 -1
  65. package/src/utils/cluster.ts +8 -28
  66. package/src/utils/gitlab.ts +5 -0
  67. package/src/utils/projects/index.ts +2 -3
  68. package/dist/config/clusters.d.ts +0 -14
  69. package/dist/config/clusters.js +0 -72
  70. package/dist/config/clusters.js.map +0 -1
  71. package/src/config/clusters.ts +0 -45
@@ -1,12 +1,3 @@
1
- export declare const getCurrentContext: () => Promise<any>;
1
+ export declare const getCurrentContext: () => Promise<string>;
2
2
  export declare const getCurrentConnectedClusterName: () => Promise<string>;
3
- export declare const getClusterByFullName: (fullName: string) => {
4
- name: string;
5
- cluster: import("../config/clusters").Cluster;
6
- };
7
- export declare const getClusterByName: (name: string) => import("../config/clusters").Cluster;
8
- export declare const getAllClusters: () => {
9
- [clustername: string]: import("../config/clusters").Cluster;
10
- };
11
- export declare const getAllClusterNames: () => string[];
12
- export declare const connectToCluster: (clusterName: string) => Promise<void>;
3
+ export declare const connectToCluster: (fullname: string) => Promise<void>;
@@ -1,4 +1,8 @@
1
1
  "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
2
6
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
7
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
8
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -35,66 +39,37 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
39
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
40
  }
37
41
  };
38
- var __importDefault = (this && this.__importDefault) || function (mod) {
39
- return (mod && mod.__esModule) ? mod : { "default": mod };
40
- };
41
42
  exports.__esModule = true;
42
- exports.connectToCluster = exports.getAllClusterNames = exports.getAllClusters = exports.getClusterByName = exports.getClusterByFullName = exports.getCurrentConnectedClusterName = exports.getCurrentContext = void 0;
43
- var child_process_promise_1 = require("child-process-promise");
44
- var lodash_1 = require("lodash");
45
- var clusters_1 = __importDefault(require("../config/clusters"));
43
+ exports.connectToCluster = exports.getCurrentConnectedClusterName = exports.getCurrentContext = void 0;
44
+ var zx_1 = require("zx");
45
+ var k8sApi_1 = require("../k8sApi");
46
46
  var getCurrentContext = function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
47
47
  switch (_a.label) {
48
- case 0: return [4 /*yield*/, (0, child_process_promise_1.exec)("kubectl config current-context")];
48
+ case 0: return [4 /*yield*/, (0, zx_1.$)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["kubectl config current-context"], ["kubectl config current-context"])))];
49
49
  case 1: return [2 /*return*/, (_a.sent()).stdout.trim()];
50
50
  }
51
51
  }); }); };
52
52
  exports.getCurrentContext = getCurrentContext;
53
53
  var getCurrentConnectedClusterName = function () { return __awaiter(void 0, void 0, void 0, function () {
54
- var currentContext;
55
54
  return __generator(this, function (_a) {
56
55
  switch (_a.label) {
57
56
  case 0: return [4 /*yield*/, (0, exports.getCurrentContext)()];
58
- case 1:
59
- currentContext = _a.sent();
60
- return [2 /*return*/, (0, lodash_1.findKey)(clusters_1["default"], { fullName: currentContext })];
57
+ case 1: return [2 /*return*/, _a.sent()];
61
58
  }
62
59
  });
63
60
  }); };
64
61
  exports.getCurrentConnectedClusterName = getCurrentConnectedClusterName;
65
- var getClusterByFullName = function (fullName) {
66
- var found = Object.entries((0, exports.getAllClusters)()).find(function (_a) {
67
- var config = _a[1];
68
- return config.fullName === fullName;
69
- });
70
- if (found) {
71
- return { name: found[0], cluster: found[1] };
72
- }
73
- else {
74
- return null;
75
- }
76
- };
77
- exports.getClusterByFullName = getClusterByFullName;
78
- var getClusterByName = function (name) { return (0, exports.getAllClusters)()[name]; };
79
- exports.getClusterByName = getClusterByName;
80
- var getAllClusters = function () {
81
- return clusters_1["default"];
82
- };
83
- exports.getAllClusters = getAllClusters;
84
- var getAllClusterNames = function () { return Object.keys(clusters_1["default"]); };
85
- exports.getAllClusterNames = getAllClusterNames;
86
- var connectToCluster = function (clusterName) { return __awaiter(void 0, void 0, void 0, function () {
87
- var connect;
62
+ var connectToCluster = function (fullname) { return __awaiter(void 0, void 0, void 0, function () {
88
63
  return __generator(this, function (_a) {
89
64
  switch (_a.label) {
90
- case 0:
91
- connect = (0, exports.getClusterByName)(clusterName).connect;
92
- return [4 /*yield*/, connect()];
65
+ case 0: return [4 /*yield*/, (0, zx_1.$)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["kubectl config use-context ", ""], ["kubectl config use-context ", ""])), fullname)];
93
66
  case 1:
94
67
  _a.sent();
68
+ (0, k8sApi_1.reload)();
95
69
  return [2 /*return*/];
96
70
  }
97
71
  });
98
72
  }); };
99
73
  exports.connectToCluster = connectToCluster;
74
+ var templateObject_1, templateObject_2;
100
75
  //# sourceMappingURL=cluster.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cluster.js","sourceRoot":"","sources":["../../src/utils/cluster.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,iCAAiC;AACjC,gEAA0C;AACnC,IAAM,iBAAiB,GAAG;;gBAC9B,qBAAM,IAAA,4BAAI,EAAC,gCAAgC,CAAC,EAAA;gBAA7C,sBAAA,CAAC,SAA4C,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAA;;SAAA,CAAC;AADlD,QAAA,iBAAiB,qBACiC;AAExD,IAAM,8BAA8B,GAAG;;;;oBACrB,qBAAM,IAAA,yBAAiB,GAAE,EAAA;;gBAA1C,cAAc,GAAG,SAAyB;gBAChD,sBAAO,IAAA,gBAAO,EAAC,qBAAQ,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,EAAC;;;KACxD,CAAC;AAHW,QAAA,8BAA8B,kCAGzC;AAEK,IAAM,oBAAoB,GAAG,UAAC,QAAgB;IACnD,IAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAA,sBAAc,GAAE,CAAC,CAAC,IAAI,CACjD,UAAC,EAAU;YAAP,MAAM,QAAA;QAAM,OAAA,MAAM,CAAC,QAAQ,KAAK,QAAQ;IAA5B,CAA4B,CAC7C,CAAC;IACF,IAAI,KAAK,EAAE;QACT,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9C;SAAM;QACL,OAAO,IAAI,CAAC;KACb;AACH,CAAC,CAAC;AATW,QAAA,oBAAoB,wBAS/B;AAEK,IAAM,gBAAgB,GAAG,UAAC,IAAY,IAAK,OAAA,IAAA,sBAAc,GAAE,CAAC,IAAI,CAAC,EAAtB,CAAsB,CAAC;AAA5D,QAAA,gBAAgB,oBAA4C;AAElE,IAAM,cAAc,GAAG;IAC5B,OAAO,qBAAQ,CAAC;AAClB,CAAC,CAAC;AAFW,QAAA,cAAc,kBAEzB;AAEK,IAAM,kBAAkB,GAAG,cAAM,OAAA,MAAM,CAAC,IAAI,CAAC,qBAAQ,CAAC,EAArB,CAAqB,CAAC;AAAjD,QAAA,kBAAkB,sBAA+B;AAEvD,IAAM,gBAAgB,GAAG,UAAO,WAAmB;;;;;gBAChD,OAAO,GAAK,IAAA,wBAAgB,EAAC,WAAW,CAAC,QAAlC,CAAmC;gBAClD,qBAAM,OAAO,EAAE,EAAA;;gBAAf,SAAe,CAAC;;;;KACjB,CAAC;AAHW,QAAA,gBAAgB,oBAG3B"}
1
+ {"version":3,"file":"cluster.js","sourceRoot":"","sources":["../../src/utils/cluster.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yBAAuB;AACvB,oCAAmC;AAE5B,IAAM,iBAAiB,GAAG;;gBAC9B,yBAAM,MAAC,oGAAA,gCAAgC,MAAA;gBAAxC,sBAAA,CAAC,SAAuC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAA;;SAAA,CAAC;AAD7C,QAAA,iBAAiB,qBAC4B;AAEnD,IAAM,8BAA8B,GAAG;;;oBACrC,qBAAM,IAAA,yBAAiB,GAAE,EAAA;oBAAhC,sBAAO,SAAyB,EAAC;;;KAClC,CAAC;AAFW,QAAA,8BAA8B,kCAEzC;AAEK,IAAM,gBAAgB,GAAG,UAAO,QAAgB;;;oBACrD,yBAAM,MAAC,qGAAA,6BAA8B,EAAQ,EAAE,KAAV,QAAQ,GAAE;;gBAA/C,SAA+C,CAAC;gBAChD,IAAA,eAAM,GAAE,CAAC;;;;KACV,CAAC;AAHW,QAAA,gBAAgB,oBAG3B"}
@@ -196,12 +196,15 @@ exports.getAllVariables = (0, memoizee_1["default"])(function (vorpal) { return
196
196
  }
197
197
  });
198
198
  }); }, { promise: true });
199
+ var maskableRegex = new RegExp("^[a-zA-Z0-9_+=/@:.~-]{8,}$"); // SEE https://gitlab.com/gitlab-org/gitlab-foss/-/blob/master/spec/frontend/ci_variable_list/components/ci_variable_modal_spec.js#L20
200
+ var isMaskable = function (value) { return maskableRegex.test(value); };
199
201
  var createVariable = function (vorpal, projectId, key, value) { return __awaiter(void 0, void 0, void 0, function () {
200
202
  return __generator(this, function (_a) {
201
203
  switch (_a.label) {
202
204
  case 0: return [4 /*yield*/, (0, exports.doGitlabRequest)(vorpal, "projects/".concat(projectId, "/variables"), {
203
205
  key: key,
204
- value: value
206
+ value: value,
207
+ masked: isMaskable(value)
205
208
  })];
206
209
  case 1: return [2 /*return*/, _a.sent()];
207
210
  }
@@ -211,7 +214,8 @@ var updateVariable = function (vorpal, projectId, key, value) { return __awaiter
211
214
  return __generator(this, function (_a) {
212
215
  switch (_a.label) {
213
216
  case 0: return [4 /*yield*/, (0, exports.doGitlabRequest)(vorpal, "projects/".concat(projectId, "/variables/").concat(key), {
214
- value: value
217
+ value: value,
218
+ masked: isMaskable(value)
215
219
  }, true)];
216
220
  case 1: return [2 /*return*/, _a.sent()];
217
221
  }
@@ -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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"}
@@ -1,4 +1,8 @@
1
1
  "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
2
6
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
7
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
8
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -40,17 +44,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
40
44
  };
41
45
  exports.__esModule = true;
42
46
  exports.getProjectPodNames = exports.getProjectPvcs = exports.getProjectPods = exports.getProjectNamespace = exports.hasGitlabCiFile = exports.readRootGitlabCiFile = exports.getRootGitlabCiFile = exports.getGitRoot = void 0;
43
- var child_process_promise_1 = require("child-process-promise");
47
+ var zx_1 = require("zx");
44
48
  var path_1 = require("path");
45
49
  var getProjectConfig_1 = require("../../config/getProjectConfig");
46
50
  var k8sApi_1 = __importDefault(require("../../k8sApi"));
47
51
  var files_1 = require("../files");
48
52
  var getGitRoot = function () { return __awaiter(void 0, void 0, void 0, function () {
49
- var _a;
50
- return __generator(this, function (_b) {
51
- switch (_b.label) {
52
- case 0: return [4 /*yield*/, (0, child_process_promise_1.exec)("git rev-parse --show-toplevel")];
53
- case 1: return [2 /*return*/, (_a = (_b.sent()).stdout) === null || _a === void 0 ? void 0 : _a.trim()];
53
+ return __generator(this, function (_a) {
54
+ switch (_a.label) {
55
+ case 0: return [4 /*yield*/, (0, zx_1.$)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["git rev-parse --show-toplevel"], ["git rev-parse --show-toplevel"])))];
56
+ case 1: return [2 /*return*/, (_a.sent()).stdout.trim()];
54
57
  }
55
58
  });
56
59
  }); };
@@ -147,4 +150,5 @@ var getProjectPodNames = function (envComponent) { return __awaiter(void 0, void
147
150
  });
148
151
  }); };
149
152
  exports.getProjectPodNames = getProjectPodNames;
153
+ var templateObject_1;
150
154
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/projects/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAA6C;AAE7C,6BAA4B;AAC5B,kEAA8E;AAC9E,wDAAkC;AAClC,kCAA2C;AAEpC,IAAM,UAAU,GAAG;;;;oBAChB,qBAAM,IAAA,4BAAI,EAAC,+BAA+B,CAAC,EAAA;oBAAnD,sBAAO,MAAA,CAAC,SAA2C,CAAC,CAAC,MAAM,0CAAE,IAAI,EAAE,EAAC;;;KACrE,CAAC;AAFW,QAAA,UAAU,cAErB;AAEK,IAAM,mBAAmB,GAAG;;;;oBACjB,qBAAM,IAAA,kBAAU,GAAE,EAAA;;gBAA5B,OAAO,GAAG,SAAkB;gBAClC,sBAAO,IAAA,WAAI,EAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC;;;KACxC,CAAC;AAHW,QAAA,mBAAmB,uBAG9B;AAEK,IAAM,oBAAoB,GAAG;;;YAClC,KAAA,uBAAe,CAAA;YAAC,qBAAM,IAAA,2BAAmB,GAAE,EAAA;gBAA3C,sBAAA,kBAAgB,SAA2B,EAAC,EAAA;;SAAA,CAAC;AADlC,QAAA,oBAAoB,wBACc;AAExC,IAAM,eAAe,GAAG;;;;oBACP,qBAAM,IAAA,4BAAoB,GAAE,EAAA;;gBAA5C,KAAgB,SAA4B,EAA3C,KAAK,QAAA,EAAE,IAAI,QAAA;gBAClB,IAAI,KAAK,EAAE;oBACT,sBAAO,KAAK,EAAC;iBACd;gBACD,sBAAO,IAAI,EAAC;;;KACb,CAAC;AANW,QAAA,eAAe,mBAM1B;AAEK,IAAM,mBAAmB,GAAG,UAAO,YAAoB;;;;;gBACpD,GAAG,GAAK,IAAA,8BAAW,EAAC,YAAY,CAAC,IAA9B,CAA+B;gBAC3B,qBAAM,IAAA,mCAAgB,GAAE,EAAA;;gBAAjC,MAAM,GAAG,SAAwB;gBACvC,sBAAO,UAAG,MAAM,CAAC,YAAY,cAAI,MAAM,CAAC,OAAO,cAAI,GAAG,CAAE,EAAC;;;KAC1D,CAAC;AAJW,QAAA,mBAAmB,uBAI9B;AAEK,IAAM,cAAc,GAAG,UAAO,YAAoB;;;;oBACrC,qBAAM,IAAA,2BAAmB,EAAC,YAAY,CAAC,EAAA;;gBAAnD,SAAS,GAAG,SAAuC;gBAC7C,qBAAM,mBAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAA;;gBAA/C,GAAG,GAAG,SAAyC;gBAErD,sBAAO,GAAG,CAAC,IAAI,CAAC,KAAK,EAAC;;;KACvB,CAAC;AALW,QAAA,cAAc,kBAKzB;AAEK,IAAM,cAAc,GAAG,UAAO,YAAoB;;;;oBACrC,qBAAM,IAAA,2BAAmB,EAAC,YAAY,CAAC,EAAA;;gBAAnD,SAAS,GAAG,SAAuC;gBAC7C,qBAAM,mBAAM,CAAC,mCAAmC,CAAC,SAAS,CAAC,EAAA;;gBAAjE,GAAG,GAAG,SAA2D;gBAEvE,sBAAO,GAAG,CAAC,IAAI,CAAC,KAAK,EAAC;;;KACvB,CAAC;AALW,QAAA,cAAc,kBAKzB;AAEK,IAAM,kBAAkB,GAAG,UAAO,YAAoB;;;;oBAC9C,qBAAM,IAAA,sBAAc,EAAC,YAAY,CAAC,EAAA;;gBAAzC,IAAI,GAAG,SAAkC;gBAC/C,sBAAO,IAAI,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAf,CAAe,CAAC,EAAC;;;KACzC,CAAC;AAHW,QAAA,kBAAkB,sBAG7B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/projects/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yBAAuB;AACvB,6BAA4B;AAC5B,kEAA8E;AAC9E,wDAAkC;AAClC,kCAA2C;AAEpC,IAAM,UAAU,GAAG;;;oBAChB,yBAAM,MAAC,mGAAA,+BAA+B,MAAA;oBAA9C,sBAAO,CAAC,SAAsC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAC;;;KAC/D,CAAC;AAFW,QAAA,UAAU,cAErB;AAEK,IAAM,mBAAmB,GAAG;;;;oBACjB,qBAAM,IAAA,kBAAU,GAAE,EAAA;;gBAA5B,OAAO,GAAG,SAAkB;gBAClC,sBAAO,IAAA,WAAI,EAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC;;;KACxC,CAAC;AAHW,QAAA,mBAAmB,uBAG9B;AAEK,IAAM,oBAAoB,GAAG;;;YAClC,KAAA,uBAAe,CAAA;YAAC,qBAAM,IAAA,2BAAmB,GAAE,EAAA;gBAA3C,sBAAA,kBAAgB,SAA2B,EAAC,EAAA;;SAAA,CAAC;AADlC,QAAA,oBAAoB,wBACc;AAExC,IAAM,eAAe,GAAG;;;;oBACP,qBAAM,IAAA,4BAAoB,GAAE,EAAA;;gBAA5C,KAAgB,SAA4B,EAA3C,KAAK,QAAA,EAAE,IAAI,QAAA;gBAClB,IAAI,KAAK,EAAE;oBACT,sBAAO,KAAK,EAAC;iBACd;gBACD,sBAAO,IAAI,EAAC;;;KACb,CAAC;AANW,QAAA,eAAe,mBAM1B;AAEK,IAAM,mBAAmB,GAAG,UAAO,YAAoB;;;;;gBACpD,GAAG,GAAK,IAAA,8BAAW,EAAC,YAAY,CAAC,IAA9B,CAA+B;gBAC3B,qBAAM,IAAA,mCAAgB,GAAE,EAAA;;gBAAjC,MAAM,GAAG,SAAwB;gBACvC,sBAAO,UAAG,MAAM,CAAC,YAAY,cAAI,MAAM,CAAC,OAAO,cAAI,GAAG,CAAE,EAAC;;;KAC1D,CAAC;AAJW,QAAA,mBAAmB,uBAI9B;AAEK,IAAM,cAAc,GAAG,UAAO,YAAoB;;;;oBACrC,qBAAM,IAAA,2BAAmB,EAAC,YAAY,CAAC,EAAA;;gBAAnD,SAAS,GAAG,SAAuC;gBAC7C,qBAAM,mBAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAA;;gBAA/C,GAAG,GAAG,SAAyC;gBAErD,sBAAO,GAAG,CAAC,IAAI,CAAC,KAAK,EAAC;;;KACvB,CAAC;AALW,QAAA,cAAc,kBAKzB;AAEK,IAAM,cAAc,GAAG,UAAO,YAAoB;;;;oBACrC,qBAAM,IAAA,2BAAmB,EAAC,YAAY,CAAC,EAAA;;gBAAnD,SAAS,GAAG,SAAuC;gBAC7C,qBAAM,mBAAM,CAAC,mCAAmC,CAAC,SAAS,CAAC,EAAA;;gBAAjE,GAAG,GAAG,SAA2D;gBAEvE,sBAAO,GAAG,CAAC,IAAI,CAAC,KAAK,EAAC;;;KACvB,CAAC;AALW,QAAA,cAAc,kBAKzB;AAEK,IAAM,kBAAkB,GAAG,UAAO,YAAoB;;;;oBAC9C,qBAAM,IAAA,sBAAc,EAAC,YAAY,CAAC,EAAA;;gBAAzC,IAAI,GAAG,SAAkC;gBAC/C,sBAAO,IAAI,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAf,CAAe,CAAC,EAAC;;;KACzC,CAAC;AAHW,QAAA,kBAAkB,sBAG7B"}
package/package.json CHANGED
@@ -16,8 +16,8 @@
16
16
  "catladder": "./bin/catladder"
17
17
  },
18
18
  "dependencies": {
19
- "@catladder/pipeline": "1.1.2",
20
- "@kubernetes/client-node": "^0.16.1",
19
+ "@catladder/pipeline": "1.2.0",
20
+ "@kubernetes/client-node": "^0.16.2",
21
21
  "child-process-promise": "^2.2.1",
22
22
  "command-exists-promise": "^2.0.2",
23
23
  "common-tags": "^1.8.0",
@@ -31,7 +31,8 @@
31
31
  "open": "^8.4.0",
32
32
  "tmp-promise": "^2.0.2",
33
33
  "update-notifier": "^2.5.0",
34
- "vorpal": "^1.12.0"
34
+ "vorpal": "^1.12.0",
35
+ "zx": "^4.3.0"
35
36
  },
36
37
  "engines": {
37
38
  "node": ">=12.0.0"
@@ -53,5 +54,5 @@
53
54
  "eslint": "^8.7.0",
54
55
  "typescript": "^4.5.4"
55
56
  },
56
- "version": "1.1.2"
57
+ "version": "1.2.0"
57
58
  }
@@ -2,8 +2,6 @@ import memoizee from "memoizee";
2
2
  import Vorpal from "vorpal";
3
3
  import k8sApi from "../../../../k8sApi";
4
4
  import {
5
- connectToCluster,
6
- getAllClusterNames,
7
5
  getCurrentConnectedClusterName,
8
6
  getCurrentContext,
9
7
  } from "../../../../utils/cluster";
@@ -15,10 +13,7 @@ import {
15
13
  } from "../../../../utils/portForward";
16
14
  import { getShell } from "../../../../utils/shell";
17
15
  import { getGoogleAuthUserNumber } from "../../utils/getGoogleAuthUserNumber";
18
- import {
19
- openGoogleCloudKubernetesDashboard,
20
- openGoogleCloudLogs,
21
- } from "../shared";
16
+ import { openGoogleCloudLogs } from "../shared";
22
17
  import { namespaceAutoCompletion } from "./namespaceAutoCompletion";
23
18
  import portForward from "./portForward";
24
19
 
@@ -35,13 +30,6 @@ export const getAllNamespacesNames = async () => {
35
30
  return namespaces.map((n) => n.metadata.name);
36
31
  };
37
32
  export default async (vorpal: Vorpal) => {
38
- vorpal
39
- .command("connect-cluster <clustername>")
40
- .autocomplete(getAllClusterNames())
41
- .action(async function ({ clustername }) {
42
- this.log(`connecting to ${clustername}`);
43
- await connectToCluster(clustername);
44
- });
45
33
  vorpal.command("current-context").action(async function () {
46
34
  this.log(await getCurrentContext());
47
35
  });
@@ -82,32 +70,6 @@ export default async (vorpal: Vorpal) => {
82
70
  stopPortForward(name.trim());
83
71
  });
84
72
 
85
- vorpal
86
- .command("open-dashboard <namespace>", "open kubernetes dashboard")
87
- .autocomplete(namespaceAutoCompletion)
88
- .action(async function ({ namespace }) {
89
- const clustername = await getCurrentConnectedClusterName();
90
- const authGoogleNumber = await getGoogleAuthUserNumber.call(this, vorpal);
91
-
92
- await openGoogleCloudKubernetesDashboard(
93
- authGoogleNumber,
94
- clustername,
95
- namespace
96
- );
97
- });
98
- vorpal
99
- .command(
100
- "open-logs <namespace>",
101
- "open google cloud logs (stackdriver stuff)"
102
- )
103
- .autocomplete(namespaceAutoCompletion)
104
- .action(async function ({ namespace }) {
105
- const clustername = await getCurrentConnectedClusterName();
106
- const authGoogleNumber = await getGoogleAuthUserNumber.call(this, vorpal);
107
-
108
- await openGoogleCloudLogs(authGoogleNumber, clustername, namespace);
109
- });
110
-
111
73
  vorpal
112
74
  .command("get-shell <namespace>", "get a shell to a pod in the environment")
113
75
  .autocomplete(namespaceAutoCompletion)
@@ -3,10 +3,7 @@ import { spawn } from "child-process-promise";
3
3
  import { writeFile } from "fs-extra";
4
4
  import { withFile } from "tmp-promise";
5
5
  import Vorpal from "vorpal";
6
- import {
7
- GOOGLE_CLOUD_SQL_PASS_PATH,
8
- GOOGLE_PROJECT,
9
- } from "../../../../config/constants";
6
+ import { GOOGLE_CLOUD_SQL_PASS_PATH } from "../../../../config/constants";
10
7
  import {
11
8
  getEnvVars,
12
9
  getPipelineContextByChoice,
@@ -45,7 +42,9 @@ export default async (vorpal: Vorpal) =>
45
42
 
46
43
  const values = context.componentConfig.deploy.values;
47
44
 
48
- const projectId = values?.cloudsql?.projectId || GOOGLE_PROJECT;
45
+ const projectId =
46
+ values?.cloudsql?.projectId ||
47
+ context.componentConfig.deploy.cluster?.projectId;
49
48
 
50
49
  const defaultInstanceId = `${config.customerName}-${config.appName}-${env}`;
51
50
  const instanceId = values?.cloudsql?.instanceId || defaultInstanceId;
@@ -1,9 +1,6 @@
1
1
  import { spawn } from "child-process-promise";
2
2
  import Vorpal from "vorpal";
3
- import {
4
- GOOGLE_CLOUD_SQL_PASS_PATH,
5
- GOOGLE_PROJECT,
6
- } from "../../../../config/constants";
3
+ import { GOOGLE_CLOUD_SQL_PASS_PATH } from "../../../../config/constants";
7
4
  import {
8
5
  getEnvVars,
9
6
  getProjectConfig,
@@ -34,6 +31,8 @@ export default async (vorpal: Vorpal) =>
34
31
  return;
35
32
  }
36
33
 
34
+ // TODO: reimpleent with new config
35
+ throw new Error("needs reimplementation with new config");
37
36
  const GOOGLE_CLOUD_SQL_REGION = "europe-west6"; // currently hardcoded
38
37
  const { POSTGRESQL_PASSWORD } = await getEnvVars(
39
38
  this,
@@ -43,7 +42,7 @@ export default async (vorpal: Vorpal) =>
43
42
 
44
43
  const LOCAL_PORT = 54321;
45
44
 
46
- const instanceName = `${GOOGLE_PROJECT}:${GOOGLE_CLOUD_SQL_REGION}:${customerName}-${appName}-${env}=tcp:${LOCAL_PORT}`;
45
+ const instanceName = `${"xxxxxx reimplement shoulld be project id"}:${GOOGLE_CLOUD_SQL_REGION}:${customerName}-${appName}-${env}=tcp:${LOCAL_PORT}`;
47
46
  const cloudsqlCredentials = await readPass(GOOGLE_CLOUD_SQL_PASS_PATH);
48
47
 
49
48
  const { POSTGRESQL_URL } = process.env;
@@ -1,14 +1,14 @@
1
- import { isOfDeployType } from "@catladder/pipeline";
2
- import open from "open";
1
+ import {
2
+ getFullKubernetesClusterName,
3
+ isOfDeployType,
4
+ getKubernetesNamespace,
5
+ } from "@catladder/pipeline";
3
6
  import Vorpal from "vorpal";
7
+ import { $ } from "zx";
4
8
  import { getAllPipelineContexts } from "../../../../config/getProjectConfig";
5
- import {
6
- getClusterByFullName,
7
- getClusterByName,
8
- } from "../../../../utils/cluster";
9
- import { doGitlabRequest, getProjectInfo } from "../../../../utils/gitlab";
10
- import { readPass } from "../../../../utils/passwordstore";
11
- import { getProjectNamespace } from "../../../../utils/projects";
9
+ import { connectToCluster } from "../../../../utils/cluster";
10
+ import { upsertAllVariables } from "../../../../utils/gitlab";
11
+ import ensureNamespace from "./utils/ensureNamespace";
12
12
 
13
13
  export default async (vorpal: Vorpal) =>
14
14
  vorpal
@@ -17,78 +17,128 @@ export default async (vorpal: Vorpal) =>
17
17
  "Initializes the gitlab repo, e.g. connects the cluster to it"
18
18
  )
19
19
  .action(async function () {
20
- const { id: projectId, web_url: projectWebUrl } = await getProjectInfo(
21
- this
22
- );
23
- const existingGitlabClusters = await doGitlabRequest<{ name: string }[]>(
24
- this,
25
- `projects/${projectId}/clusters`
26
- );
20
+ const allContext = await getAllPipelineContexts();
21
+
22
+ for (const context of allContext) {
23
+ const deployConfig = context.componentConfig.deploy;
24
+ if (isOfDeployType(deployConfig, "kubernetes")) {
25
+ const fullName = getFullKubernetesClusterName(deployConfig.cluster);
26
+ this.log(
27
+ `connecting ${context.environment.shortName}:${context.componentName} ${fullName}`
28
+ );
29
+
30
+ await connectToCluster(fullName);
27
31
 
28
- const existingClusters = existingGitlabClusters.map(
29
- (c: { name: string }) => {
30
- const found = getClusterByFullName(c.name);
32
+ const namespace = getKubernetesNamespace(
33
+ context.fullConfig,
34
+ context.environment.shortName
35
+ );
36
+ await ensureNamespace(namespace);
37
+
38
+ //$.verbose = true;
39
+
40
+ // we name the service account and the role and the role binding with the same name
41
+ // we currently create one per component to better separate them
42
+ const serviceAccountName = `cl-${context.componentName}-deploy`;
43
+ const KUBE_URL =
44
+ await $`TERM=dumb kubectl cluster-info | grep -E 'Kubernetes master|Kubernetes control plane' | awk '/http/ {print $NF}'`.then(
45
+ (s) => s.stdout.trim()
46
+ );
47
+
48
+ // first upsert service acount in the ns
49
+ try {
50
+ await $`kubectl delete serviceaccount --namespace ${namespace} ${serviceAccountName}`;
51
+ await $`kubectl delete rolebinding --namespace ${namespace} ${serviceAccountName}`;
52
+ await $`kubectl delete role --namespace ${namespace} ${serviceAccountName}`;
53
+ } catch (e) {
54
+ // ignore
55
+ }
31
56
 
32
- return {
33
- name: found ? found.name : null,
34
- fullName: c.name,
57
+ await $`kubectl create serviceaccount --namespace ${namespace} ${serviceAccountName}`;
58
+
59
+ // upsert role in the ns
60
+
61
+ await $`cat <<EOF | kubectl apply -f -
62
+ kind: Role
63
+ apiVersion: rbac.authorization.k8s.io/v1
64
+ metadata:
65
+ namespace: ${namespace}
66
+ name: ${serviceAccountName}
67
+ rules:
68
+ - apiGroups: ["", "extensions", "apps", "networking.k8s.io", "batch"]
69
+ resources: ["deployments", "replicasets", "pods", "secrets", "configmaps", "services", "ingresses", "serviceaccounts", "jobs", "cronjobs"]
70
+ verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] # You can also use ["*"]
71
+ ---
72
+ kind: RoleBinding
73
+ apiVersion: rbac.authorization.k8s.io/v1
74
+ metadata:
75
+ name: ${serviceAccountName}
76
+ namespace: ${namespace}
77
+ subjects:
78
+ - kind: ServiceAccount
79
+ name: ${serviceAccountName}
80
+ namespace: ${namespace}
81
+ roleRef:
82
+ kind: Role
83
+ name: ${serviceAccountName}
84
+ apiGroup: rbac.authorization.k8s.io
85
+ EOF
86
+ `;
87
+
88
+ // get token name
89
+ const tokenName =
90
+ await $`kubectl get serviceaccount --namespace ${namespace} ${serviceAccountName} -o jsonpath='{.secrets[0].name}'`;
91
+
92
+ const KUBE_CA_PEM =
93
+ await $`kubectl get secret ${tokenName} --namespace ${namespace} -o jsonpath="{['data']['ca\\.crt']}"`.then(
94
+ (c) => c.stdout.trim()
95
+ );
96
+ const KUBE_TOKEN =
97
+ await $`kubectl get secret ${tokenName} --namespace ${namespace} -o jsonpath="{['data']['token']}" | base64 --decode`.then(
98
+ (c) => c.stdout.trim()
99
+ );
100
+
101
+ const vars = {
102
+ KUBE_TOKEN,
103
+ KUBE_CA_PEM,
104
+ KUBE_URL,
35
105
  };
36
- }
37
- );
38
106
 
39
- if (existingClusters.length === 0) {
40
- this.log("");
41
- this.log("there is no cluster on the current project?");
42
- } else {
43
- this.log("there are already these clusters on the gitlab: ");
44
- this.log("");
45
- existingClusters.forEach((cluster) =>
46
- this.log(` - ${cluster.name || "unknown"} (${cluster.fullName})`)
47
- );
107
+ await upsertAllVariables(
108
+ this,
109
+ vars,
110
+ context.environment.shortName,
111
+ context.componentName
112
+ );
113
+ }
48
114
  }
49
115
 
50
- this.log("");
51
- this.log("your project specifies the following clusters:");
52
- this.log("");
53
- const allContext = await getAllPipelineContexts();
54
- const allDeployments = allContext.map((c) => c.componentConfig.deploy);
55
-
56
- const configuredClusterNames = allDeployments.reduce<string[]>(
57
- (acc, c) => {
58
- if (
59
- isOfDeployType(c, "kubernetes") &&
60
- !acc.includes(c.cluster || "production")
61
- ) {
62
- return [...acc, c.cluster || "production"];
63
- }
64
- return acc;
65
- },
66
- []
67
- );
68
- const configuredClusters = configuredClusterNames.map((c) => ({
69
- name: c,
70
- config: getClusterByName(c),
71
- }));
72
- configuredClusters.forEach((cluster) =>
73
- this.log(` - ${cluster.name || "unknown"} (${cluster.config.fullName})`)
116
+ // there is a constraint, see https://git.panter.ch/catladder/catladder/-/issues/2#note_345677
117
+ // any two components have to use the same custer per env, so e.g. dev:api and dev:www cannot use two different namespaces
118
+ // in practise, that is often not an issue, but it might happen because the config allows it
119
+ /*
120
+ Object.entries(configuredClusters).forEach(([fullname, config]) =>
121
+ this.log(` - ${config.cluster.name || "unknown"} (${fullname})`)
74
122
  );
75
123
  this.log("");
76
124
 
77
- const missingClusters = configuredClusters.filter(
78
- (c) => !existingClusters.some((exist) => exist.name === c.name)
125
+ const missingClusters = Object.fromEntries(
126
+ Object.entries(configuredClusters).filter(
127
+ ([c]) => !existingClusters.some((exist) => exist === c)
128
+ )
79
129
  );
80
130
 
81
131
  this.log("");
82
132
  this.log("These clusters are not configured yet on gitlab:");
83
133
  this.log("");
84
134
 
85
- missingClusters.forEach((cluster) =>
86
- this.log(` - ${cluster.name || "unknown"} (${cluster.config.fullName})`)
135
+ Object.entries(missingClusters).forEach(([fullname, config]) =>
136
+ this.log(` - ${config.cluster.name || "unknown"} (${fullname})`)
87
137
  );
88
138
  this.log("");
89
139
 
90
- for (const cluster of missingClusters) {
91
- this.log(`${cluster} (${cluster.config.fullName})`);
140
+ for (const [fullname, config] of Object.entries(missingClusters)) {
141
+ this.log(`${config.name} (${fullname})`);
92
142
  this.log("");
93
143
  const { shouldContinue } = await this.prompt({
94
144
  type: "confirm",
@@ -97,22 +147,20 @@ export default async (vorpal: Vorpal) =>
97
147
  });
98
148
  this.log("");
99
149
  if (shouldContinue) {
100
- const { api_url, passCredentials } = cluster.config;
101
- if (!api_url) {
102
- throw new Error("no api_url on this cluster!");
103
- }
104
- if (!passCredentials) {
105
- throw new Error("no passCredentials on this cluster!");
106
- }
107
- const token = await readPass(passCredentials.token);
108
- const ca_cert = await readPass(passCredentials.ca_cert);
109
-
150
+ await connectToCluster(fullname);
151
+ const { stdout: api_url } =
152
+ await $`kubectl cluster-info | grep -E 'Kubernetes master|Kubernetes control plane' | awk '/http/ {print $NF}'`;
153
+ const { stdout: ca_cert } =
154
+ await $`kubectl get secret default-token-69xv4 -o jsonpath="{['data']['ca\.crt']}" | base64 --decode`;
155
+ const { stdout: token } =
156
+ await $`kubectl get secret default-token-69xv4 -o jsonpath="{['data']['token']}" | base64 --decode`;
110
157
  const postResult = await doGitlabRequest(
111
158
  this,
112
159
  `projects/${projectId}/clusters/user`,
113
160
  {
114
- name: cluster.config.fullName,
161
+ name: fullname,
115
162
  managed: false,
163
+ environment_scope: "*",
116
164
  platform_kubernetes_attributes: {
117
165
  api_url,
118
166
  ca_cert,
@@ -200,4 +248,5 @@ export default async (vorpal: Vorpal) =>
200
248
  ].forEach((tip) => this.log(` - ${tip}`));
201
249
  this.log("\n");
202
250
  this.log("\n");
251
+ */
203
252
  });
@@ -3,11 +3,9 @@ import {
3
3
  getPipelineContextByChoice,
4
4
  parseChoice,
5
5
  } from "../../../../config/getProjectConfig";
6
- import { getCurrentConnectedClusterName } from "../../../../utils/cluster";
7
6
  import { getGoogleAuthUserNumber } from "../../utils/getGoogleAuthUserNumber";
8
7
  import { openGoogleCloudKubernetesDashboard } from "../shared";
9
8
  import { envAndComponents } from "./utils/autocompletions";
10
- import ensureCluster from "./utils/ensureCluster";
11
9
  export default async (vorpal: Vorpal) =>
12
10
  vorpal
13
11
  .command(
@@ -30,16 +28,21 @@ export default async (vorpal: Vorpal) =>
30
28
  "only kubernetes deployments are supported at the moment"
31
29
  );
32
30
  }
31
+
32
+ if (
33
+ !componentConfig.deploy.cluster ||
34
+ componentConfig.deploy.cluster.type !== "gcloud"
35
+ ) {
36
+ throw new Error("no gcloud custer configured");
37
+ }
33
38
  // currently only supports kubernetes
34
39
  const namespace = environment.envVars.KUBE_NAMESPACE;
35
- await ensureCluster.call(this, envComponent); // TODO: implement
36
- const clustername = await getCurrentConnectedClusterName();
37
40
 
38
41
  const authGoogleNumber = await getGoogleAuthUserNumber.call(this, vorpal);
39
42
 
40
43
  openGoogleCloudKubernetesDashboard(
41
- authGoogleNumber,
42
- clustername,
43
- namespace
44
+ componentConfig.deploy.cluster,
45
+ namespace,
46
+ authGoogleNumber
44
47
  );
45
48
  });