@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.
Files changed (46) hide show
  1. package/dist/apps/cli/cli.js +8 -4
  2. package/dist/apps/cli/cli.js.map +1 -1
  3. package/dist/apps/cli/commands/project/commandConfigSecrets.js +20 -1
  4. package/dist/apps/cli/commands/project/commandConfigSecrets.js.map +1 -1
  5. package/dist/apps/cli/config/writeConfig.d.ts +5 -0
  6. package/dist/apps/cli/config/writeConfig.js +95 -0
  7. package/dist/apps/cli/config/writeConfig.js.map +1 -0
  8. package/dist/apps/cli/verify/index.d.ts +2 -0
  9. package/dist/apps/cli/verify/index.js +71 -0
  10. package/dist/apps/cli/verify/index.js.map +1 -0
  11. package/dist/apps/cli/verify/migration/fromv2.d.ts +3 -0
  12. package/dist/apps/cli/verify/migration/fromv2.js +240 -0
  13. package/dist/apps/cli/verify/migration/fromv2.js.map +1 -0
  14. package/dist/apps/cli/verify/migration/migrateSecrets.d.ts +4 -0
  15. package/dist/apps/cli/verify/migration/migrateSecrets.js +75 -0
  16. package/dist/apps/cli/verify/migration/migrateSecrets.js.map +1 -0
  17. package/dist/apps/cli/verify/migration/oldGitlabCi.d.ts +16 -0
  18. package/dist/apps/cli/verify/migration/oldGitlabCi.js +24 -0
  19. package/dist/apps/cli/verify/migration/oldGitlabCi.js.map +1 -0
  20. package/dist/config/getProjectConfig.d.ts +2 -0
  21. package/dist/config/getProjectConfig.js +36 -3
  22. package/dist/config/getProjectConfig.js.map +1 -1
  23. package/dist/tsconfig.tsbuildinfo +1 -1
  24. package/dist/utils/files.js +6 -1
  25. package/dist/utils/files.js.map +1 -1
  26. package/dist/utils/gitlab.d.ts +1 -1
  27. package/dist/utils/gitlab.js +30 -6
  28. package/dist/utils/gitlab.js.map +1 -1
  29. package/dist/utils/passwordstore/index.d.ts +1 -1
  30. package/dist/utils/passwordstore/index.js +17 -20
  31. package/dist/utils/passwordstore/index.js.map +1 -1
  32. package/dist/utils/projects/index.d.ts +1 -1
  33. package/package.json +2 -2
  34. package/src/apps/cli/cli.ts +5 -3
  35. package/src/apps/cli/commands/project/commandConfigSecrets.ts +22 -2
  36. package/src/apps/cli/config/writeConfig.ts +61 -0
  37. package/src/apps/cli/verify/index.ts +24 -0
  38. package/src/apps/cli/verify/migration/fromv2.ts +157 -0
  39. package/src/apps/cli/verify/migration/migrateSecrets.ts +32 -0
  40. package/src/apps/cli/verify/migration/oldGitlabCi.ts +40 -0
  41. package/src/config/getProjectConfig.ts +17 -1
  42. package/src/utils/editAsFile.ts +1 -1
  43. package/src/utils/files.ts +5 -1
  44. package/src/utils/gitlab.ts +18 -5
  45. package/src/utils/passwordstore/index.ts +19 -21
  46. package/src/utils/projects/index.ts +1 -1
@@ -0,0 +1,16 @@
1
+ import { BuildConfig } from "@catladder/pipeline";
2
+ export declare type OldGitlabCiFile = {
3
+ variables: {
4
+ CUSTOMER_NAME: string;
5
+ APP_NAME: string;
6
+ COMPONENT_NAME?: string;
7
+ APP_DIR?: string;
8
+ CLUSTER_NAME?: string;
9
+ };
10
+ include: {
11
+ project: string;
12
+ ref: string;
13
+ file: string;
14
+ }[];
15
+ };
16
+ export declare const detectBuildConfig: (gitlabCi: OldGitlabCiFile) => BuildConfig["type"];
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.detectBuildConfig = void 0;
4
+ var detectBuildConfig = function (gitlabCi) {
5
+ var _a;
6
+ var firstInclude = gitlabCi.include[0];
7
+ if (!firstInclude || ((_a = gitlabCi.include[0]) === null || _a === void 0 ? void 0 : _a.project) !== "catladder/gitlab-ci") {
8
+ throw new Error("unsupported gitlab-ci file");
9
+ }
10
+ if (firstInclude.file === "node-kubernetes.yml") {
11
+ return "node";
12
+ }
13
+ if (firstInclude.file === "static-js-kubernetes.yml") {
14
+ return "node-static";
15
+ }
16
+ if (firstInclude.file === "meteor-kubernetes.yml") {
17
+ throw new Error("meteor is not yet implemented");
18
+ }
19
+ if (firstInclude.file === "rails-kubernetes.yml") {
20
+ throw new Error("meteor is not yet implemented");
21
+ }
22
+ };
23
+ exports.detectBuildConfig = detectBuildConfig;
24
+ //# sourceMappingURL=oldGitlabCi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oldGitlabCi.js","sourceRoot":"","sources":["../../../../../src/apps/cli/verify/migration/oldGitlabCi.ts"],"names":[],"mappings":";;;AAiBO,IAAM,iBAAiB,GAAG,UAC/B,QAAyB;;IAEzB,IAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC,YAAY,IAAI,CAAA,MAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,0CAAE,OAAO,MAAK,qBAAqB,EAAE;QAC3E,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;KAC/C;IAED,IAAI,YAAY,CAAC,IAAI,KAAK,qBAAqB,EAAE;QAC/C,OAAO,MAAM,CAAC;KACf;IAED,IAAI,YAAY,CAAC,IAAI,KAAK,0BAA0B,EAAE;QACpD,OAAO,aAAa,CAAC;KACtB;IACD,IAAI,YAAY,CAAC,IAAI,KAAK,uBAAuB,EAAE;QACjD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;KAClD;IAED,IAAI,YAAY,CAAC,IAAI,KAAK,sBAAsB,EAAE;QAChD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;KAClD;AACH,CAAC,CAAC;AAtBW,QAAA,iBAAiB,qBAsB5B"}
@@ -1,6 +1,8 @@
1
1
  import { CommandInstance } from "vorpal";
2
2
  import memoizee from "memoizee";
3
3
  export declare const getProjectConfig: (() => Promise<import("@catladder/pipeline").Config>) & memoizee.Memoized<() => Promise<import("@catladder/pipeline").Config>>;
4
+ export declare const getGitlabCiFilePath: () => Promise<string>;
5
+ export declare const getGitlabCi: () => Promise<any>;
4
6
  export declare const getProjectComponents: () => Promise<string[]>;
5
7
  export declare const parseChoice: (envComponent: string) => {
6
8
  env: string;
@@ -39,11 +39,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
40
  };
41
41
  exports.__esModule = true;
42
- exports.getEnvVars = exports.getEnvironment = exports.getAllPipelineContexts = exports.getAllComponentsWithAllEnvs = exports.getPipelineContextByChoice = exports.parseChoice = exports.getProjectComponents = exports.getProjectConfig = void 0;
42
+ exports.getEnvVars = exports.getEnvironment = exports.getAllPipelineContexts = exports.getAllComponentsWithAllEnvs = exports.getPipelineContextByChoice = exports.parseChoice = exports.getProjectComponents = exports.getGitlabCi = exports.getGitlabCiFilePath = exports.getProjectConfig = void 0;
43
43
  var pipeline_1 = require("@catladder/pipeline");
44
44
  var gitlab_1 = require("../utils/gitlab");
45
45
  var memoizee_1 = __importDefault(require("memoizee"));
46
46
  var projects_1 = require("../utils/projects");
47
+ var files_1 = require("../utils/files");
47
48
  // currently cant change
48
49
  exports.getProjectConfig = (0, memoizee_1["default"])(function () { return __awaiter(void 0, void 0, void 0, function () {
49
50
  var gitRoot, e_1;
@@ -57,11 +58,42 @@ exports.getProjectConfig = (0, memoizee_1["default"])(function () { return __awa
57
58
  return [2 /*return*/, (0, pipeline_1.readConfigSync)(gitRoot)];
58
59
  case 2:
59
60
  e_1 = _a.sent();
60
- return [3 /*break*/, 3];
61
+ // ignore
62
+ return [2 /*return*/, null];
61
63
  case 3: return [2 /*return*/];
62
64
  }
63
65
  });
64
66
  }); }, { promise: true });
67
+ var getGitlabCiFilePath = function () { return __awaiter(void 0, void 0, void 0, function () {
68
+ var gitRoot;
69
+ return __generator(this, function (_a) {
70
+ switch (_a.label) {
71
+ case 0: return [4 /*yield*/, (0, projects_1.getGitRoot)()];
72
+ case 1:
73
+ gitRoot = _a.sent();
74
+ return [2 /*return*/, gitRoot + "/.gitlab-ci.yml"];
75
+ }
76
+ });
77
+ }); };
78
+ exports.getGitlabCiFilePath = getGitlabCiFilePath;
79
+ var getGitlabCi = function () { return __awaiter(void 0, void 0, void 0, function () {
80
+ var _a, e_2;
81
+ return __generator(this, function (_b) {
82
+ switch (_b.label) {
83
+ case 0:
84
+ _b.trys.push([0, 2, , 3]);
85
+ _a = files_1.readYaml;
86
+ return [4 /*yield*/, (0, exports.getGitlabCiFilePath)()];
87
+ case 1: return [2 /*return*/, _a.apply(void 0, [_b.sent()])];
88
+ case 2:
89
+ e_2 = _b.sent();
90
+ // ignore
91
+ return [2 /*return*/, null];
92
+ case 3: return [2 /*return*/];
93
+ }
94
+ });
95
+ }); };
96
+ exports.getGitlabCi = getGitlabCi;
65
97
  var getProjectComponents = function () { return __awaiter(void 0, void 0, void 0, function () {
66
98
  var config;
67
99
  return __generator(this, function (_a) {
@@ -145,8 +177,9 @@ var resolveSecrets = function (vorpal, allEnvVars) { return __awaiter(void 0, vo
145
177
  case 1:
146
178
  allVariablesInGitlab = _a.sent();
147
179
  return [2 /*return*/, Object.fromEntries(Object.entries(allEnvVars).map(function (_a) {
180
+ var _b;
148
181
  var key = _a[0], value = _a[1];
149
- var isSecret = value === null || value === void 0 ? void 0 : value.startsWith("$CL_");
182
+ var isSecret = (_b = value === null || value === void 0 ? void 0 : value.startsWith) === null || _b === void 0 ? void 0 : _b.call(value, "$CL_");
150
183
  if (isSecret) {
151
184
  // secrets have CL_XXXX structure
152
185
  var found = allVariablesInGitlab.find(function (v) { return "$" + v.key === value; });
@@ -1 +1 @@
1
- {"version":3,"file":"getProjectConfig.js","sourceRoot":"","sources":["../../src/config/getProjectConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getProjectConfig.js","sourceRoot":"","sources":["../../src/config/getProjectConfig.ts"],"names":[],"mappings":"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"}