@catladder/cli 0.0.0-main-7156ef41 → 0.0.0-main-13db1c9e

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.
@@ -35,6 +35,15 @@ 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
  };
@@ -43,9 +52,12 @@ exports.runCatCi = void 0;
43
52
  var vorpal_1 = __importDefault(require("vorpal"));
44
53
  var packageInfos_1 = __importDefault(require("../../packageInfos"));
45
54
  var commands_1 = __importDefault(require("./commands/security/commands"));
55
+ function reconstructArgs(args) {
56
+ return __spreadArray([args[0]], args.slice(1).map(function (arg) { return "\"".concat(arg, "\""); }), true).join(" ");
57
+ }
46
58
  function runCatCi() {
47
59
  return __awaiter(this, void 0, void 0, function () {
48
- var vorpal, isInteractive;
60
+ var vorpal, isInteractive, args;
49
61
  return __generator(this, function (_a) {
50
62
  switch (_a.label) {
51
63
  case 0:
@@ -57,7 +69,10 @@ function runCatCi() {
57
69
  if (!isInteractive) return [3 /*break*/, 1];
58
70
  vorpal.log("Catladder CI Tools \uD83D\uDE3B\uD83D\uDD28 version ".concat(packageInfos_1["default"].version)).show();
59
71
  return [3 /*break*/, 3];
60
- case 1: return [4 /*yield*/, vorpal.exec(process.argv.slice(2).join(" "))];
72
+ case 1:
73
+ process.exitCode = 1;
74
+ args = reconstructArgs(process.argv.slice(2));
75
+ return [4 /*yield*/, vorpal.exec(args)];
61
76
  case 2:
62
77
  _a.sent();
63
78
  process.exit();
@@ -1 +1 @@
1
- {"version":3,"file":"catci.js","sourceRoot":"","sources":["../../../src/apps/catci/catci.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA4B;AAC5B,oEAA6C;AAC7C,0EAA4D;AAE5D,SAAsB,QAAQ;;;;;;oBACtB,MAAM,GAAG,IAAI,mBAAM,EAAE,CAAC;oBAE5B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;oBACrB,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,yBAAW,CAAC,OAAO,CAAC,CAAC;oBAE1E,IAAA,qBAAgB,EAAC,MAAM,CAAC,CAAC;oBAEnB,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;yBAC3C,aAAa,EAAb,wBAAa;oBACf,MAAM,CAAC,GAAG,CAAC,8DAAmC,yBAAW,CAAC,OAAO,CAAE,CAAC,CAAC,IAAI,EAAE,CAAC;;wBAE5E,qBAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAA;;oBAAlD,SAAkD,CAAC;oBACnD,OAAO,CAAC,IAAI,EAAE,CAAC;;;;;;CAElB;AAfD,4BAeC"}
1
+ {"version":3,"file":"catci.js","sourceRoot":"","sources":["../../../src/apps/catci/catci.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA4B;AAC5B,oEAA6C;AAC7C,0EAA4D;AAE5D,SAAS,eAAe,CAAC,IAAc;IACrC,OAAO,eAAC,IAAI,CAAC,CAAC,CAAC,GAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,YAAI,GAAG,OAAG,EAAV,CAAU,CAAC,QAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACxE,CAAC;AAED,SAAsB,QAAQ;;;;;;oBACtB,MAAM,GAAG,IAAI,mBAAM,EAAE,CAAC;oBAE5B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;oBACrB,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,yBAAW,CAAC,OAAO,CAAC,CAAC;oBAE1E,IAAA,qBAAgB,EAAC,MAAM,CAAC,CAAC;oBAEnB,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;yBAC3C,aAAa,EAAb,wBAAa;oBACf,MAAM,CAAC,GAAG,CAAC,8DAAmC,yBAAW,CAAC,OAAO,CAAE,CAAC,CAAC,IAAI,EAAE,CAAC;;;oBAE5E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;oBACf,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpD,qBAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAA;;oBAAvB,SAAuB,CAAC;oBACxB,OAAO,CAAC,IAAI,EAAE,CAAC;;;;;;CAElB;AAjBD,4BAiBC"}
@@ -39,6 +39,7 @@ exports.__esModule = true;
39
39
  var evaluateSecurityAudit_1 = require("./evaluateSecurityAudit");
40
40
  var rest_1 = require("@gitbeaker/rest");
41
41
  var createSecurityAuditMergeRequest_1 = require("./createSecurityAuditMergeRequest");
42
+ var ts_results_es_1 = require("ts-results-es");
42
43
  var GITLAB_HOST = "https://git.panter.ch";
43
44
  function default_1(vorpal) {
44
45
  commandCiJob(vorpal);
@@ -46,13 +47,28 @@ function default_1(vorpal) {
46
47
  commandCreate(vorpal);
47
48
  }
48
49
  exports["default"] = default_1;
50
+ function resultAsExitCode(func) {
51
+ var _this = this;
52
+ return function (args) { return __awaiter(_this, void 0, void 0, function () {
53
+ var result;
54
+ return __generator(this, function (_a) {
55
+ switch (_a.label) {
56
+ case 0: return [4 /*yield*/, func(args)];
57
+ case 1:
58
+ result = _a.sent();
59
+ process.exitCode = result.isErr() ? 1 : 0;
60
+ return [2 /*return*/];
61
+ }
62
+ });
63
+ }); };
64
+ }
49
65
  function commandCiJob(vorpal) {
50
66
  return __awaiter(this, void 0, void 0, function () {
51
67
  var _this = this;
52
68
  return __generator(this, function (_a) {
53
69
  vorpal
54
70
  .command("security-audit-ci-job <path> <token> <mainBranch> <projectId> <userId>", "Evaluates security audit document. If the document can't be evaluated or does not exist, creates a new MR with security audit document template.\n\n<path> root path of a project with security audit document (".concat(createSecurityAuditMergeRequest_1.SECURITY_AUDIT_FILE_NAME, ")\n<token> gitlab token with 'api' scopes and permissions to create a new branch\n<main-branch> main branch name\n<project-id> project id to create security audit for\n<user-id> gitlab user id that will be assignee of the audit\n"))
55
- .action(function (args) { return __awaiter(_this, void 0, void 0, function () {
71
+ .action(resultAsExitCode(function (args) { return __awaiter(_this, void 0, void 0, function () {
56
72
  var evaluation, token, mainBranch, projectId, userId, api, mr;
57
73
  return __generator(this, function (_a) {
58
74
  switch (_a.label) {
@@ -77,26 +93,22 @@ function commandCiJob(vorpal) {
77
93
  mr = _a.sent();
78
94
  if (mr.isErr()) {
79
95
  console.error("could not create merge request with security audit template: ".concat(mr.error));
80
- process.exitCode = 1;
81
- return [2 /*return*/];
96
+ return [2 /*return*/, mr];
82
97
  }
83
98
  console.log("security audit merge request created successfully");
84
99
  console.log("please finish the MR by updating SECURITY.md document: ".concat(mr.value.web_url));
85
- process.exitCode = 1;
86
- return [2 /*return*/];
100
+ return [2 /*return*/, (0, ts_results_es_1.Err)("merge request created")];
87
101
  case 3:
88
102
  if (evaluation.value.score.answeredTopics === 0) {
89
103
  console.error("audit document has no answered topics");
90
104
  console.error("please answer security topics in ".concat(createSecurityAuditMergeRequest_1.SECURITY_AUDIT_FILE_NAME, " by adding responsible people and check/cross in the table"));
91
- process.exitCode = 1;
92
- return [2 /*return*/];
105
+ return [2 /*return*/, (0, ts_results_es_1.Err)("audit document has no answered topics")];
93
106
  }
94
- process.exitCode = 0;
95
107
  console.log((0, evaluateSecurityAudit_1.makeSecurityAuditOverview)(evaluation.value));
96
- return [2 /*return*/];
108
+ return [2 /*return*/, (0, ts_results_es_1.Ok)({})];
97
109
  }
98
110
  });
99
- }); });
111
+ }); }));
100
112
  return [2 /*return*/];
101
113
  });
102
114
  });
@@ -107,7 +119,7 @@ function commandEvaluate(vorpal) {
107
119
  return __generator(this, function (_a) {
108
120
  vorpal
109
121
  .command("security-audit-evaluate <path>", "Evaluates security audit document in given <path>")
110
- .action(function (args) { return __awaiter(_this, void 0, void 0, function () {
122
+ .action(resultAsExitCode(function (args) { return __awaiter(_this, void 0, void 0, function () {
111
123
  var result;
112
124
  return __generator(this, function (_a) {
113
125
  switch (_a.label) {
@@ -119,15 +131,14 @@ function commandEvaluate(vorpal) {
119
131
  if (result.isErr()) {
120
132
  console.error(result.error);
121
133
  console.error("please make sure the security audit document ".concat(createSecurityAuditMergeRequest_1.SECURITY_AUDIT_FILE_NAME, " is in the repository"));
122
- process.exitCode = 1;
123
134
  }
124
135
  else {
125
136
  console.log((0, evaluateSecurityAudit_1.makeSecurityAuditOverview)(result.value));
126
137
  }
127
- return [2 /*return*/];
138
+ return [2 /*return*/, result];
128
139
  }
129
140
  });
130
- }); });
141
+ }); }));
131
142
  return [2 /*return*/];
132
143
  });
133
144
  });
@@ -138,7 +149,7 @@ function commandCreate(vorpal) {
138
149
  return __generator(this, function (_a) {
139
150
  vorpal
140
151
  .command("security-audit-create <token> <mainBranch> <projectId> <userId>", "Creates a MR in given project with the latest security audit template document\n\n<token> gitlab token with 'api' scopes and permissions to create a new branch\n<main-branch> main branch name\n<project-id> project id to create security audit for\n<user-id> gitlab user id that will be assignee of the audit\n")
141
- .action(function (args) { return __awaiter(_this, void 0, void 0, function () {
152
+ .action(resultAsExitCode(function (args) { return __awaiter(_this, void 0, void 0, function () {
142
153
  var token, mainBranch, projectId, userId, api, result;
143
154
  return __generator(this, function (_a) {
144
155
  switch (_a.label) {
@@ -158,16 +169,15 @@ function commandCreate(vorpal) {
158
169
  result = _a.sent();
159
170
  if (result.isErr()) {
160
171
  console.error("could not create security audit merge request: ".concat(result.error));
161
- process.exitCode = 1;
162
172
  }
163
173
  else {
164
174
  console.log("security audit merge request created successfully");
165
175
  console.log("please finish the MR by updating SECURITY.md document: ".concat(result.value.web_url));
166
176
  }
167
- return [2 /*return*/];
177
+ return [2 /*return*/, result];
168
178
  }
169
179
  });
170
- }); });
180
+ }); }));
171
181
  return [2 /*return*/];
172
182
  });
173
183
  });
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../../src/apps/catci/commands/security/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../../src/apps/catci/commands/security/commands.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iEAGiC;AACjC,wCAAyC;AACzC,qFAG2C;AAC3C,+CAAqD;AAErD,IAAM,WAAW,GAAG,uBAAuB,CAAC;AAE5C,mBAAyB,MAAc;IACrC,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,eAAe,CAAC,MAAM,CAAC,CAAC;IACxB,aAAa,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAJD,+BAIC;AAID,SAAS,gBAAgB,CACvB,IAA8D;IADhE,iBAOC;IAJC,OAAO,UAAO,IAAiB;;;;wBACd,qBAAM,IAAI,CAAC,IAAI,CAAC,EAAA;;oBAAzB,MAAM,GAAG,SAAgB;oBAC/B,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;SAC3C,CAAC;AACJ,CAAC;AAED,SAAe,YAAY,CAAC,MAAc;;;;YACxC,MAAM;iBACH,OAAO,CACN,wEAAwE,EACxE,0NAEwD,0DAAwB,0OAKrF,CACI;iBACA,MAAM,CACL,gBAAgB,CAAC,UAAO,IAAI;;;;gCACP,qBAAM,IAAA,6CAAqB,EAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAA;;4BAA7D,UAAU,GAAG,SAAgD;iCAE/D,UAAU,CAAC,KAAK,EAAE,EAAlB,wBAAkB;4BACpB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;4BAC1D,OAAO,CAAC,GAAG,CACT,4DAA4D,CAC7D,CAAC;4BAEM,KAAK,GAAoC,IAAI,MAAxC,EAAE,UAAU,GAAwB,IAAI,WAA5B,EAAE,SAAS,GAAa,IAAI,UAAjB,EAAE,MAAM,GAAK,IAAI,OAAT,CAAU;4BAChD,GAAG,GAAG,IAAI,aAAM,CAAC;gCACrB,IAAI,EAAE,WAAW;gCACjB,KAAK,OAAA;6BACN,CAAC,CAAC;4BAEQ,qBAAM,IAAA,iEAA+B,EAAC;oCAC/C,GAAG,KAAA;oCACH,UAAU,YAAA;oCACV,SAAS,WAAA;oCACT,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;iCACzB,CAAC,EAAA;;4BALI,EAAE,GAAG,SAKT;4BAEF,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;gCACd,OAAO,CAAC,KAAK,CACX,uEAAgE,EAAE,CAAC,KAAK,CAAE,CAC3E,CAAC;gCACF,sBAAO,EAAE,EAAC;6BACX;4BAED,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;4BACjE,OAAO,CAAC,GAAG,CACT,iEAA0D,EAAE,CAAC,KAAK,CAAC,OAAO,CAAE,CAC7E,CAAC;4BACF,sBAAO,IAAA,mBAAG,EAAC,uBAAgC,CAAC,EAAC;;4BAG/C,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,EAAE;gCAC/C,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;gCACvD,OAAO,CAAC,KAAK,CACX,2CAAoC,0DAAwB,+DAA4D,CACzH,CAAC;gCACF,sBAAO,IAAA,mBAAG,EAAC,uCAAgD,CAAC,EAAC;6BAC9D;4BAED,OAAO,CAAC,GAAG,CAAC,IAAA,iDAAyB,EAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;4BACzD,sBAAO,IAAA,kBAAE,EAAC,EAAE,CAAC,EAAC;;;iBACf,CAAC,CACH,CAAC;;;;CACL;AAED,SAAe,eAAe,CAAC,MAAc;;;;YAC3C,MAAM;iBACH,OAAO,CACN,gCAAgC,EAChC,mDAAmD,CACpD;iBACA,MAAM,CACL,gBAAgB,CAAC,UAAO,IAAI;;;;;4BAC1B,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;4BAEtC,qBAAM,IAAA,6CAAqB,EAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAA;;4BAAzD,MAAM,GAAG,SAAgD;4BAC/D,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE;gCAClB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gCAC5B,OAAO,CAAC,KAAK,CACX,uDAAgD,0DAAwB,0BAAuB,CAChG,CAAC;6BACH;iCAAM;gCACL,OAAO,CAAC,GAAG,CAAC,IAAA,iDAAyB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;6BACtD;4BACD,sBAAO,MAAM,EAAC;;;iBACf,CAAC,CACH,CAAC;;;;CACL;AAED,SAAe,aAAa,CAAC,MAAc;;;;YACzC,MAAM;iBACH,OAAO,CACN,iEAAiE,EACjE,sTAML,CACI;iBACA,MAAM,CACL,gBAAgB,CAAC,UAAO,IAAI;;;;;4BAClB,KAAK,GAAoC,IAAI,MAAxC,EAAE,UAAU,GAAwB,IAAI,WAA5B,EAAE,SAAS,GAAa,IAAI,UAAjB,EAAE,MAAM,GAAK,IAAI,OAAT,CAAU;4BAEhD,GAAG,GAAG,IAAI,aAAM,CAAC;gCACrB,IAAI,EAAE,WAAW;gCACjB,KAAK,OAAA;6BACN,CAAC,CAAC;4BAEY,qBAAM,IAAA,iEAA+B,EAAC;oCACnD,GAAG,KAAA;oCACH,UAAU,YAAA;oCACV,SAAS,WAAA;oCACT,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;iCACzB,CAAC,EAAA;;4BALI,MAAM,GAAG,SAKb;4BAEF,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE;gCAClB,OAAO,CAAC,KAAK,CACX,yDAAkD,MAAM,CAAC,KAAK,CAAE,CACjE,CAAC;6BACH;iCAAM;gCACL,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;gCACjE,OAAO,CAAC,GAAG,CACT,iEAA0D,MAAM,CAAC,KAAK,CAAC,OAAO,CAAE,CACjF,CAAC;6BACH;4BACD,sBAAO,MAAM,EAAC;;;iBACf,CAAC,CACH,CAAC;;;;CACL"}
@@ -42,6 +42,15 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
42
42
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
43
43
  }
44
44
  };
45
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
46
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
47
+ if (ar || !(i in from)) {
48
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
49
+ ar[i] = from[i];
50
+ }
51
+ }
52
+ return to.concat(ar || Array.prototype.slice.call(from));
53
+ };
45
54
  var __importDefault = (this && this.__importDefault) || function (mod) {
46
55
  return (mod && mod.__esModule) ? mod : { "default": mod };
47
56
  };
@@ -50,9 +59,12 @@ exports.runCatCi = void 0;
50
59
  var vorpal_1 = __importDefault(__nccwpck_require__(1491));
51
60
  var packageInfos_1 = __importDefault(__nccwpck_require__(1628));
52
61
  var commands_1 = __importDefault(__nccwpck_require__(6518));
62
+ function reconstructArgs(args) {
63
+ return __spreadArray([args[0]], args.slice(1).map(function (arg) { return "\"".concat(arg, "\""); }), true).join(" ");
64
+ }
53
65
  function runCatCi() {
54
66
  return __awaiter(this, void 0, void 0, function () {
55
- var vorpal, isInteractive;
67
+ var vorpal, isInteractive, args;
56
68
  return __generator(this, function (_a) {
57
69
  switch (_a.label) {
58
70
  case 0:
@@ -64,7 +76,10 @@ function runCatCi() {
64
76
  if (!isInteractive) return [3 /*break*/, 1];
65
77
  vorpal.log("Catladder CI Tools \uD83D\uDE3B\uD83D\uDD28 version ".concat(packageInfos_1["default"].version)).show();
66
78
  return [3 /*break*/, 3];
67
- case 1: return [4 /*yield*/, vorpal.exec(process.argv.slice(2).join(" "))];
79
+ case 1:
80
+ process.exitCode = 1;
81
+ args = reconstructArgs(process.argv.slice(2));
82
+ return [4 /*yield*/, vorpal.exec(args)];
68
83
  case 2:
69
84
  _a.sent();
70
85
  process.exit();
@@ -221,6 +236,7 @@ exports.__esModule = true;
221
236
  var evaluateSecurityAudit_1 = __nccwpck_require__(5849);
222
237
  var rest_1 = __nccwpck_require__(1084);
223
238
  var createSecurityAuditMergeRequest_1 = __nccwpck_require__(6828);
239
+ var ts_results_es_1 = __nccwpck_require__(2807);
224
240
  var GITLAB_HOST = "https://git.panter.ch";
225
241
  function default_1(vorpal) {
226
242
  commandCiJob(vorpal);
@@ -228,13 +244,28 @@ function default_1(vorpal) {
228
244
  commandCreate(vorpal);
229
245
  }
230
246
  exports["default"] = default_1;
247
+ function resultAsExitCode(func) {
248
+ var _this = this;
249
+ return function (args) { return __awaiter(_this, void 0, void 0, function () {
250
+ var result;
251
+ return __generator(this, function (_a) {
252
+ switch (_a.label) {
253
+ case 0: return [4 /*yield*/, func(args)];
254
+ case 1:
255
+ result = _a.sent();
256
+ process.exitCode = result.isErr() ? 1 : 0;
257
+ return [2 /*return*/];
258
+ }
259
+ });
260
+ }); };
261
+ }
231
262
  function commandCiJob(vorpal) {
232
263
  return __awaiter(this, void 0, void 0, function () {
233
264
  var _this = this;
234
265
  return __generator(this, function (_a) {
235
266
  vorpal
236
267
  .command("security-audit-ci-job <path> <token> <mainBranch> <projectId> <userId>", "Evaluates security audit document. If the document can't be evaluated or does not exist, creates a new MR with security audit document template.\n\n<path> root path of a project with security audit document (".concat(createSecurityAuditMergeRequest_1.SECURITY_AUDIT_FILE_NAME, ")\n<token> gitlab token with 'api' scopes and permissions to create a new branch\n<main-branch> main branch name\n<project-id> project id to create security audit for\n<user-id> gitlab user id that will be assignee of the audit\n"))
237
- .action(function (args) { return __awaiter(_this, void 0, void 0, function () {
268
+ .action(resultAsExitCode(function (args) { return __awaiter(_this, void 0, void 0, function () {
238
269
  var evaluation, token, mainBranch, projectId, userId, api, mr;
239
270
  return __generator(this, function (_a) {
240
271
  switch (_a.label) {
@@ -259,26 +290,22 @@ function commandCiJob(vorpal) {
259
290
  mr = _a.sent();
260
291
  if (mr.isErr()) {
261
292
  console.error("could not create merge request with security audit template: ".concat(mr.error));
262
- process.exitCode = 1;
263
- return [2 /*return*/];
293
+ return [2 /*return*/, mr];
264
294
  }
265
295
  console.log("security audit merge request created successfully");
266
296
  console.log("please finish the MR by updating SECURITY.md document: ".concat(mr.value.web_url));
267
- process.exitCode = 1;
268
- return [2 /*return*/];
297
+ return [2 /*return*/, (0, ts_results_es_1.Err)("merge request created")];
269
298
  case 3:
270
299
  if (evaluation.value.score.answeredTopics === 0) {
271
300
  console.error("audit document has no answered topics");
272
301
  console.error("please answer security topics in ".concat(createSecurityAuditMergeRequest_1.SECURITY_AUDIT_FILE_NAME, " by adding responsible people and check/cross in the table"));
273
- process.exitCode = 1;
274
- return [2 /*return*/];
302
+ return [2 /*return*/, (0, ts_results_es_1.Err)("audit document has no answered topics")];
275
303
  }
276
- process.exitCode = 0;
277
304
  console.log((0, evaluateSecurityAudit_1.makeSecurityAuditOverview)(evaluation.value));
278
- return [2 /*return*/];
305
+ return [2 /*return*/, (0, ts_results_es_1.Ok)({})];
279
306
  }
280
307
  });
281
- }); });
308
+ }); }));
282
309
  return [2 /*return*/];
283
310
  });
284
311
  });
@@ -289,7 +316,7 @@ function commandEvaluate(vorpal) {
289
316
  return __generator(this, function (_a) {
290
317
  vorpal
291
318
  .command("security-audit-evaluate <path>", "Evaluates security audit document in given <path>")
292
- .action(function (args) { return __awaiter(_this, void 0, void 0, function () {
319
+ .action(resultAsExitCode(function (args) { return __awaiter(_this, void 0, void 0, function () {
293
320
  var result;
294
321
  return __generator(this, function (_a) {
295
322
  switch (_a.label) {
@@ -301,15 +328,14 @@ function commandEvaluate(vorpal) {
301
328
  if (result.isErr()) {
302
329
  console.error(result.error);
303
330
  console.error("please make sure the security audit document ".concat(createSecurityAuditMergeRequest_1.SECURITY_AUDIT_FILE_NAME, " is in the repository"));
304
- process.exitCode = 1;
305
331
  }
306
332
  else {
307
333
  console.log((0, evaluateSecurityAudit_1.makeSecurityAuditOverview)(result.value));
308
334
  }
309
- return [2 /*return*/];
335
+ return [2 /*return*/, result];
310
336
  }
311
337
  });
312
- }); });
338
+ }); }));
313
339
  return [2 /*return*/];
314
340
  });
315
341
  });
@@ -320,7 +346,7 @@ function commandCreate(vorpal) {
320
346
  return __generator(this, function (_a) {
321
347
  vorpal
322
348
  .command("security-audit-create <token> <mainBranch> <projectId> <userId>", "Creates a MR in given project with the latest security audit template document\n\n<token> gitlab token with 'api' scopes and permissions to create a new branch\n<main-branch> main branch name\n<project-id> project id to create security audit for\n<user-id> gitlab user id that will be assignee of the audit\n")
323
- .action(function (args) { return __awaiter(_this, void 0, void 0, function () {
349
+ .action(resultAsExitCode(function (args) { return __awaiter(_this, void 0, void 0, function () {
324
350
  var token, mainBranch, projectId, userId, api, result;
325
351
  return __generator(this, function (_a) {
326
352
  switch (_a.label) {
@@ -340,16 +366,15 @@ function commandCreate(vorpal) {
340
366
  result = _a.sent();
341
367
  if (result.isErr()) {
342
368
  console.error("could not create security audit merge request: ".concat(result.error));
343
- process.exitCode = 1;
344
369
  }
345
370
  else {
346
371
  console.log("security audit merge request created successfully");
347
372
  console.log("please finish the MR by updating SECURITY.md document: ".concat(result.value.web_url));
348
373
  }
349
- return [2 /*return*/];
374
+ return [2 /*return*/, result];
350
375
  }
351
376
  });
352
- }); });
377
+ }); }));
353
378
  return [2 /*return*/];
354
379
  });
355
380
  });
@@ -40920,7 +40920,7 @@ exports.readConfigSync = readConfigSync;
40920
40920
 
40921
40921
  exports.__esModule = true;
40922
40922
  exports.DOCKER_REGISTRY = exports.PIPELINE_IMAGE_TAG = void 0;
40923
- exports.PIPELINE_IMAGE_TAG = "main-7156ef41" || 0;
40923
+ exports.PIPELINE_IMAGE_TAG = "main-13db1c9e" || 0;
40924
40924
  exports.DOCKER_REGISTRY = "git.panter.ch:5001/catladder/catladder" || 0;
40925
40925
 
40926
40926
  /***/ }),
@@ -7713,7 +7713,9 @@ var upsertGcloudServiceAccount = function (context, account) { return __awaiter(
7713
7713
  case 11:
7714
7714
  _a++;
7715
7715
  return [3 /*break*/, 9];
7716
- case 12: return [4 /*yield*/, (0, child_process_promise_1.exec)("gcloud iam service-accounts keys create /dev/stdout --iam-account=".concat(fullIdentifier)).then(function (o) { return o.stdout; })];
7716
+ case 12: return [4 /*yield*/, (0, child_process_promise_1.exec)(
7717
+ // on some platforms /dev/stdout is not available without the pipe
7718
+ "gcloud iam service-accounts keys create /dev/stdout --iam-account=".concat(fullIdentifier, " | cat")).then(function (o) { return o.stdout; })];
7717
7719
  case 13: return [2 /*return*/, _b.sent()];
7718
7720
  }
7719
7721
  });
@@ -355848,7 +355850,7 @@ exports.readConfigSync = readConfigSync;
355848
355850
 
355849
355851
  exports.__esModule = true;
355850
355852
  exports.DOCKER_REGISTRY = exports.PIPELINE_IMAGE_TAG = void 0;
355851
- exports.PIPELINE_IMAGE_TAG = "main-7156ef41" || 0;
355853
+ exports.PIPELINE_IMAGE_TAG = "main-13db1c9e" || 0;
355852
355854
  exports.DOCKER_REGISTRY = "git.panter.ch:5001/catladder/catladder" || 0;
355853
355855
 
355854
355856
  /***/ }),
@@ -109,7 +109,9 @@ var upsertGcloudServiceAccount = function (context, account) { return __awaiter(
109
109
  case 11:
110
110
  _a++;
111
111
  return [3 /*break*/, 9];
112
- case 12: return [4 /*yield*/, (0, child_process_promise_1.exec)("gcloud iam service-accounts keys create /dev/stdout --iam-account=".concat(fullIdentifier)).then(function (o) { return o.stdout; })];
112
+ case 12: return [4 /*yield*/, (0, child_process_promise_1.exec)(
113
+ // on some platforms /dev/stdout is not available without the pipe
114
+ "gcloud iam service-accounts keys create /dev/stdout --iam-account=".concat(fullIdentifier, " | cat")).then(function (o) { return o.stdout; })];
113
115
  case 13: return [2 /*return*/, _b.sent()];
114
116
  }
115
117
  });
@@ -1 +1 @@
1
- {"version":3,"file":"serviceAccounts.js","sourceRoot":"","sources":["../../src/gcloud/serviceAccounts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serviceAccounts.js","sourceRoot":"","sources":["../../src/gcloud/serviceAccounts.ts"],"names":[],"mappings":"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"}