@soft-artel/ci 1.3.15 → 1.3.16

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 (88) hide show
  1. package/k8s/App.d.ts +22 -0
  2. package/k8s/App.d.ts.map +1 -0
  3. package/k8s/App.js +150 -0
  4. package/k8s/App.js.map +1 -0
  5. package/k8s/DockerImage.d.ts +15 -0
  6. package/k8s/DockerImage.d.ts.map +1 -0
  7. package/k8s/DockerImage.js +112 -0
  8. package/k8s/DockerImage.js.map +1 -0
  9. package/k8s/Node.d.ts +17 -0
  10. package/k8s/Node.d.ts.map +1 -0
  11. package/k8s/Node.js +103 -0
  12. package/k8s/Node.js.map +1 -0
  13. package/k8s-build.d.ts +3 -0
  14. package/k8s-build.d.ts.map +1 -0
  15. package/k8s-build.js +125 -0
  16. package/k8s-build.js.map +1 -0
  17. package/k8s-deploy.d.ts +3 -0
  18. package/k8s-deploy.d.ts.map +1 -0
  19. package/k8s-deploy.js +124 -0
  20. package/k8s-deploy.js.map +1 -0
  21. package/libs/Exception.d.ts +5 -0
  22. package/libs/Exception.d.ts.map +1 -0
  23. package/libs/Exception.js +13 -0
  24. package/libs/Exception.js.map +1 -0
  25. package/libs/Git.d.ts +44 -0
  26. package/libs/Git.d.ts.map +1 -0
  27. package/libs/Git.js +160 -0
  28. package/libs/Git.js.map +1 -0
  29. package/libs/Gitlab.d.ts +12 -0
  30. package/libs/Gitlab.d.ts.map +1 -0
  31. package/libs/Gitlab.js +78 -0
  32. package/libs/Gitlab.js.map +1 -0
  33. package/libs/Jira.d.ts +31 -0
  34. package/libs/Jira.d.ts.map +1 -0
  35. package/libs/Jira.js +157 -0
  36. package/libs/Jira.js.map +1 -0
  37. package/libs/Project.d.ts +39 -0
  38. package/libs/Project.d.ts.map +1 -0
  39. package/libs/Project.js +177 -0
  40. package/libs/Project.js.map +1 -0
  41. package/libs/Reporter.d.ts +34 -0
  42. package/libs/Reporter.d.ts.map +1 -0
  43. package/libs/Reporter.js +131 -0
  44. package/libs/Reporter.js.map +1 -0
  45. package/libs/Shell.d.ts +39 -0
  46. package/libs/Shell.d.ts.map +1 -0
  47. package/libs/Shell.js +107 -0
  48. package/libs/Shell.js.map +1 -0
  49. package/libs/helpers.d.ts +29 -0
  50. package/libs/helpers.d.ts.map +1 -0
  51. package/libs/helpers.js +101 -0
  52. package/libs/helpers.js.map +1 -0
  53. package/libs/prototype.d.ts +9 -0
  54. package/libs/prototype.d.ts.map +1 -0
  55. package/libs/prototype.js +186 -0
  56. package/libs/prototype.js.map +1 -0
  57. package/package.json +1 -1
  58. package/upd_pkg.d.ts +3 -0
  59. package/upd_pkg.d.ts.map +1 -0
  60. package/upd_pkg.js +28 -0
  61. package/upd_pkg.js.map +1 -0
  62. package/xcode.d.ts +3 -0
  63. package/xcode.d.ts.map +1 -0
  64. package/xcode.js +163 -0
  65. package/xcode.js.map +1 -0
  66. package/.env +0 -21
  67. package/.eslintcache +0 -1
  68. package/.eslintignore +0 -4
  69. package/.eslintrc +0 -246
  70. package/.gitlab-ci.yml +0 -12
  71. package/_publish.sh +0 -24
  72. package/k8s/App.ts +0 -200
  73. package/k8s/DockerImage.ts +0 -147
  74. package/k8s/Node.ts +0 -119
  75. package/k8s-build.ts +0 -175
  76. package/k8s-deploy.ts +0 -174
  77. package/libs/Exception.ts +0 -19
  78. package/libs/Git.ts +0 -199
  79. package/libs/Gitlab.ts +0 -86
  80. package/libs/Jira.ts +0 -239
  81. package/libs/Project.ts +0 -215
  82. package/libs/Reporter.ts +0 -181
  83. package/libs/Shell.ts +0 -119
  84. package/libs/helpers.ts +0 -114
  85. package/libs/prototype.ts +0 -313
  86. package/tsconfig.json +0 -24
  87. package/upd_pkg.ts +0 -21
  88. package/xcode.ts +0 -226
package/libs/Jira.js ADDED
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.Jira = exports.Issue = void 0;
16
+ const axios_1 = __importDefault(require("axios"));
17
+ const helpers_1 = require("./helpers");
18
+ const Git_1 = __importDefault(require("./Git"));
19
+ const ENV = process.env;
20
+ const RELEASE_BO_URL = ENV.RELEASE_BO_URL || 'https://bo.soft-artel.com/ci/jira';
21
+ const RELEASE_BO_TOKEN = ENV.RELEASE_BO_TOKEN || ENV.GITLAB_PASS;
22
+ const RELEASE_JIRA_URL = ENV.RELEASE_JIRA_URL || 'https://jira.soft-artel.com';
23
+ function resolve(prj, head = true) {
24
+ var _a, _b, _c, _d, _e, _f;
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ if (RELEASE_BO_TOKEN === undefined) {
27
+ throw new Error('NO RELEASE_BO_TOKEN!');
28
+ }
29
+ const release = {
30
+ components: [], bugs: [], tasks: [], changelog: 'No issues found in git commits!',
31
+ };
32
+ const fromTag = prj.prevVersion ? yield Git_1.default.existTag(prj.prevVersion) : yield Git_1.default.lastTag();
33
+ const toTag = head ? undefined : `v${prj.version}`;
34
+ const gitLog = yield Git_1.default.getCommitsAndIssues({
35
+ fromTag: fromTag !== null && fromTag !== void 0 ? fromTag : '', toTag: toTag !== null && toTag !== void 0 ? toTag : '', onlyJira: true, limit: 1000,
36
+ });
37
+ const issuesKeys = Object.keys(gitLog.issues);
38
+ if (issuesKeys.length === 0) {
39
+ helpers_1.log.info('No issues found in git log!');
40
+ return release;
41
+ }
42
+ try {
43
+ const resp = yield (0, axios_1.default)({
44
+ method: 'POST',
45
+ url: `${RELEASE_BO_URL}/resolve`,
46
+ headers: { 'PRIVATE-TOKEN': RELEASE_BO_TOKEN },
47
+ data: { issues: issuesKeys },
48
+ });
49
+ if (((_b = (_a = resp === null || resp === void 0 ? void 0 : resp.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.bugs) && Array.isArray(resp.data.data.bugs)) {
50
+ for (const fields of resp.data.data.bugs) {
51
+ const issue = new Issue(fields);
52
+ if (issue.key !== '') {
53
+ release.bugs.push(issue);
54
+ }
55
+ }
56
+ }
57
+ if (((_d = (_c = resp === null || resp === void 0 ? void 0 : resp.data) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.tasks) && Array.isArray(resp.data.data.tasks)) {
58
+ for (const fields of resp.data.data.tasks) {
59
+ const issue = new Issue(fields);
60
+ if (issue.key !== '') {
61
+ release.tasks.push(issue);
62
+ }
63
+ }
64
+ }
65
+ if ((_f = (_e = resp === null || resp === void 0 ? void 0 : resp.data) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f.components) {
66
+ release.components = Object.values(resp.data.data.components).sort();
67
+ }
68
+ }
69
+ catch (err) {
70
+ err.request = '...';
71
+ err.connection = '...';
72
+ err.message = 'JIRA RESOLVE ERR: ' + err.message;
73
+ throw err;
74
+ }
75
+ helpers_1.log.info('\n\n===============');
76
+ helpers_1.log.info('RELEASE:', prj.group, prj.name, 'v' + prj.version, ' pev:' + fromTag);
77
+ let msg = '';
78
+ if (release.components.length > 0) {
79
+ msg += '<b>Components:</b>\n';
80
+ for (const comp of release.components) {
81
+ msg += `- ${comp}\n`;
82
+ }
83
+ msg += '\n';
84
+ }
85
+ if (release.tasks.length > 0) {
86
+ msg += '<b>Done:</b>\n';
87
+ for (const issue of release.tasks) {
88
+ msg += `- šŸ›  <b><a href="${RELEASE_JIRA_URL}/browse/${issue.key}">${issue.key}</a></b>: ${issue.summary}\n`;
89
+ }
90
+ msg += '\n';
91
+ }
92
+ if (release.bugs.length > 0) {
93
+ msg += '<b>BugFixes:</b>\n';
94
+ for (const issue of release.bugs) {
95
+ msg += `- šŸž <b><a href="${RELEASE_JIRA_URL}/browse/${issue.key}">${issue.key}</a></b>: ${issue.summary}\n`;
96
+ }
97
+ msg += '\n';
98
+ }
99
+ release.changelog = msg;
100
+ helpers_1.log.info('changelog', msg);
101
+ helpers_1.log.info('text', (0, helpers_1.stripTags)(msg));
102
+ return release;
103
+ });
104
+ }
105
+ class Issue {
106
+ constructor(fields) {
107
+ this.key = '';
108
+ this.updated = new Date();
109
+ this.type = '';
110
+ this.status = '';
111
+ this.summary = '';
112
+ this.assignee = { name: '', email: '', login: '' };
113
+ this.components = [];
114
+ this.key = fields.key;
115
+ this.updated = new Date(Date.parse(fields.updated));
116
+ this.type = fields.type;
117
+ this.status = fields.status;
118
+ this.summary = fields.summary;
119
+ if (fields.assignee && typeof fields.assignee === 'object') {
120
+ this.assignee.name = fields.assignee.name;
121
+ this.assignee.email = fields.assignee.email;
122
+ this.assignee.login = fields.assignee.login;
123
+ }
124
+ this.components = Array.isArray(fields.components) ? fields.components : [];
125
+ }
126
+ }
127
+ exports.Issue = Issue;
128
+ function moveBugsAsDeployed(bugs) {
129
+ var _a, _b;
130
+ return __awaiter(this, void 0, void 0, function* () {
131
+ if (RELEASE_BO_TOKEN === undefined) {
132
+ throw new Error('NO RELEASE_BO_TOKEN!');
133
+ }
134
+ const issuesKeys = [];
135
+ for (const bug of bugs) {
136
+ issuesKeys.push(bug.key);
137
+ }
138
+ if (issuesKeys.length === 0) {
139
+ return [];
140
+ }
141
+ const resp = yield (0, axios_1.default)({
142
+ method: 'POST',
143
+ url: `${RELEASE_BO_URL}/deployed`,
144
+ headers: { 'PRIVATE-TOKEN': RELEASE_BO_TOKEN },
145
+ data: { issues: issuesKeys },
146
+ });
147
+ if (((_b = (_a = resp === null || resp === void 0 ? void 0 : resp.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.deployed) && Array.isArray(resp.data.data.deployed)) {
148
+ return resp.data.data.deployed;
149
+ }
150
+ return [];
151
+ });
152
+ }
153
+ exports.Jira = {
154
+ resolve,
155
+ moveBugsAsDeployed,
156
+ };
157
+ //# sourceMappingURL=Jira.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Jira.js","sourceRoot":"","sources":["../../libs/Jira.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAE1B,uCAA2C;AAC3C,gDAAwB;AAGxB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AAKxB,MAAM,cAAc,GAAK,GAAG,CAAC,cAAc,IAAM,mCAAmC,CAAC;AACrF,MAAM,gBAAgB,GAAG,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,WAAW,CAAC;AAEjE,MAAM,gBAAgB,GAAG,GAAG,CAAC,gBAAgB,IAAI,6BAA6B,CAAC;AAW/E,SAAe,OAAO,CAAC,GAAY,EAAE,IAAI,GAAG,IAAI;;;QAE/C,IAAG,gBAAgB,KAAK,SAAS,EAAC;YACjC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACxC;QAED,MAAM,OAAO,GAAgB;YAC5B,UAAU,EAAE,EAAE,EAAE,IAAI,EAAC,EAAE,EAAE,KAAK,EAAC,EAAE,EAAE,SAAS,EAAE,iCAAiC;SAC/E,CAAC;QAIF,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,aAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,aAAG,CAAC,OAAO,EAAE,CAAC;QAC5F,MAAM,KAAK,GAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAErD,MAAM,MAAM,GAAG,MAAM,aAAG,CAAC,mBAAmB,CAAC;YAC5C,OAAO,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,EAAE,KAAK,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI;SACvE,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE9C,IAAG,UAAU,CAAC,MAAM,KAAK,CAAC,EAAC;YAE1B,aAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACxC,OAAO,OAAO,CAAC;SACf;QAID,IAAG;YAEF,MAAM,IAAI,GAAG,MAAM,IAAA,eAAK,EAAC;gBACxB,MAAM,EAAC,MAAM;gBACb,GAAG,EAAE,GAAI,cAAe,UAAU;gBAClC,OAAO,EAAC,EAAE,eAAe,EAAE,gBAAgB,EAAE;gBAC7C,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;aAC5B,CAAC,CAAC;YAEH,IAAG,CAAA,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,0CAAE,IAAI,0CAAE,IAAI,KAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC;gBAC/D,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBACzC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;oBAChC,IAAG,KAAK,CAAC,GAAG,KAAK,EAAE,EAAC;wBACnB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACzB;iBACD;aACD;YAED,IAAG,CAAA,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,0CAAE,IAAI,0CAAE,KAAK,KAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAC;gBACjE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;oBAC1C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;oBAChC,IAAG,KAAK,CAAC,GAAG,KAAK,EAAE,EAAC;wBACnB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBAC1B;iBACD;aACD;YAED,IAAG,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,0CAAE,IAAI,0CAAE,UAAU,EAAC;gBAC/B,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;aAC7E;SAED;QAAC,OAAM,GAAG,EAAC;YACX,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;YACpB,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;YACvB,GAAG,CAAC,OAAO,GAAG,oBAAoB,GAAG,GAAG,CAAC,OAAO,CAAC;YAEjD,MAAM,GAAG,CAAC;SACV;QAKD,aAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAChC,aAAG,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,GAAC,GAAG,CAAC,OAAO,EAAE,OAAO,GAAC,OAAO,CAAC,CAAC;QAI5E,IAAI,GAAG,GAAG,EAAE,CAAC;QAEb,IAAG,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAC;YAChC,GAAG,IAAI,sBAAsB,CAAC;YAC9B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE;gBACtC,GAAG,IAAI,KAAM,IAAK,IAAI,CAAC;aACvB;YACD,GAAG,IAAI,IAAI,CAAC;SACZ;QAED,IAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAC;YAC3B,GAAG,IAAI,gBAAgB,CAAC;YACxB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE;gBAClC,GAAG,IAAI,oBAAqB,gBAAiB,WAAY,KAAK,CAAC,GAAI,KAAM,KAAK,CAAC,GAAI,aAAa,KAAK,CAAC,OAAO,IAAI,CAAC;aAClH;YACD,GAAG,IAAI,IAAI,CAAC;SACZ;QAED,IAAG,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAC;YAC1B,GAAG,IAAI,oBAAoB,CAAC;YAC5B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE;gBACjC,GAAG,IAAI,oBAAqB,gBAAiB,WAAY,KAAK,CAAC,GAAI,KAAM,KAAK,CAAC,GAAI,aAAa,KAAK,CAAC,OAAO,IAAI,CAAC;aAClH;YACD,GAAG,IAAI,IAAI,CAAC;SACZ;QAED,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC;QAExB,aAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC3B,aAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAA,mBAAS,EAAC,GAAG,CAAC,CAAC,CAAC;QAEjC,OAAO,OAAO,CAAC;;CACf;AAID,MAAa,KAAK;IAWjB,YAAY,MAA2B;QATvC,QAAG,GAAG,EAAE,CAAC;QACT,YAAO,GAAK,IAAI,IAAI,EAAE,CAAC;QAEvB,SAAI,GAAG,EAAE,CAAC;QACV,WAAM,GAAG,EAAE,CAAC;QACZ,YAAO,GAAG,EAAE,CAAC;QACb,aAAQ,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAC9C,eAAU,GAAa,EAAE,CAAC;QAGzB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAG,MAAM,CAAC,QAAQ,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC5C,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;SAC5C;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,CAAC;CACD;AAxBD,sBAwBC;AAID,SAAe,kBAAkB,CAAC,IAAuB;;;QAExD,IAAG,gBAAgB,KAAK,SAAS,EAAC;YACjC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACxC;QAED,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACvB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACzB;QAED,IAAG,UAAU,CAAC,MAAM,KAAK,CAAC,EAAC;YAC1B,OAAO,EAAE,CAAC;SACV;QAED,MAAM,IAAI,GAAG,MAAM,IAAA,eAAK,EAAC;YACxB,MAAM,EAAC,MAAM;YACb,GAAG,EAAE,GAAI,cAAe,WAAW;YACnC,OAAO,EAAC,EAAE,eAAe,EAAE,gBAAgB,EAAE;YAC7C,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;SAC5B,CAAC,CAAC;QAEH,IAAG,CAAA,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,0CAAE,IAAI,0CAAE,QAAQ,KAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAC;YACvE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;SAC/B;QAED,OAAO,EAAE,CAAC;;CACV;AAKY,QAAA,IAAI,GAAG;IACnB,OAAO;IACP,kBAAkB;CAClB,CAAC"}
@@ -0,0 +1,39 @@
1
+ export declare type Stage = keyof typeof ALLOW_STAGES;
2
+ declare const ALLOW_STAGES: Record<string, string>;
3
+ export declare class Project {
4
+ isRunner: boolean;
5
+ id: number;
6
+ path: string;
7
+ url: string;
8
+ name: string;
9
+ group: string;
10
+ rootPath: string;
11
+ build: number;
12
+ version: string;
13
+ stage: Stage;
14
+ $stages: Stage[];
15
+ $stagesVersions: Record<string, string>;
16
+ job: {
17
+ id: string | undefined;
18
+ name: string;
19
+ step: string;
20
+ branch: string;
21
+ url: string;
22
+ pipline: string;
23
+ user: {
24
+ ID: string;
25
+ login: string;
26
+ name: string;
27
+ email: string;
28
+ };
29
+ };
30
+ constructor(workdir: string | undefined, stage?: Stage);
31
+ get shortVersion(): string;
32
+ get prevVersion(): string | undefined;
33
+ incrementBuild(newBuild?: number): void;
34
+ saveGitLabBuild(): Promise<void>;
35
+ saveGitLabStagesVersions(): Promise<void>;
36
+ updateChangeLog(whatsNewHtml: string, filename?: string): Promise<void>;
37
+ }
38
+ export {};
39
+ //# sourceMappingURL=Project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Project.d.ts","sourceRoot":"","sources":["../../libs/Project.ts"],"names":[],"mappings":"AASA,oBAAY,KAAK,GAAG,MAAM,OAAO,YAAY,CAAC;AAC9C,QAAA,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMxC,CAAC;AAEF,qBAAa,OAAO;IAGnB,QAAQ,UAA+B;IAEvC,EAAE,SAAyD;IAC3D,IAAI,SAA6B;IACjC,GAAG,SAA6B;IAEhC,IAAI,SAA6B;IACjC,KAAK,SAAkC;IAGvC,QAAQ,EAAE,MAAM,CAAM;IAEtB,KAAK,SAAK;IACV,OAAO,SAAW;IAClB,KAAK,EAAE,KAAK,CAAS;IAGrB,OAAO,EAAE,KAAK,EAAE,CAAW;IAC3B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAoB;IAE3D,GAAG;;;;;;;;;;;;;MAgBD;gBAIU,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,CAAC,EAAE,KAAK;IA8BtD,IAAI,YAAY,WAEf;IAED,IAAI,WAAW,uBAGd;IAID,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM;IAW1B,eAAe;IAMf,wBAAwB;IAOxB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,SAAiB;CA4CrE"}
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.Project = void 0;
16
+ const axios_1 = __importDefault(require("axios"));
17
+ const fs_1 = require("fs");
18
+ const Exception_1 = require("./Exception");
19
+ const helpers_1 = require("./helpers");
20
+ const Shell_1 = __importDefault(require("./Shell"));
21
+ const ENV = process.env;
22
+ const ALLOW_STAGES = {
23
+ dev: 'dev',
24
+ alpha: 'alpha',
25
+ rc: 'rc',
26
+ hotfix: 'hotfix',
27
+ prod: 'prod',
28
+ };
29
+ class Project {
30
+ constructor(workdir, stage) {
31
+ this.isRunner = ENV.CI_JOB_ID !== undefined;
32
+ this.id = (Number(ENV.CI_PROJECT_ID || 0));
33
+ this.path = ENV.CI_PROJECT_PATH || '';
34
+ this.url = ENV.CI_PROJECT_URL || '';
35
+ this.name = ENV.CI_PROJECT_NAME || '';
36
+ this.group = ENV.CI_PROJECT_NAMESPACE || '';
37
+ this.rootPath = '';
38
+ this.build = 0;
39
+ this.version = '0.0.0';
40
+ this.stage = 'dev';
41
+ this.$stages = ['dev'];
42
+ this.$stagesVersions = { dev: '0.0.0' };
43
+ this.job = {
44
+ id: ENV.CI_JOB_ID,
45
+ name: ENV.CI_JOB_NAME || 'No Job',
46
+ step: ENV.CI_JOB_STAGE || 'build',
47
+ branch: ENV.CI_COMMIT_REF_NAME || 'dev',
48
+ url: ENV.CI_JOB_URL || '',
49
+ pipline: ENV.CI_PIPELINE_URL || '',
50
+ user: {
51
+ ID: ENV.GITLAB_USER_ID || '',
52
+ login: ENV.GITLAB_USER_LOGIN || '',
53
+ name: ENV.GITLAB_USER_NAME || '',
54
+ email: ENV.GITLAB_USER_EMAIL || '',
55
+ },
56
+ };
57
+ this.rootPath = (0, helpers_1.resolvePath)(workdir || ENV.CI_PROJECT_DIR || Shell_1.default.pwd().toString());
58
+ const branch = ENV.CI_COMMIT_REF_NAME || 'dev';
59
+ this.stage = stage || ALLOW_STAGES[branch] || 'dev';
60
+ try {
61
+ this.$stages = JSON.parse(ENV.CI_STAGES || '[dev]');
62
+ helpers_1.log.dbg('Allowed stages:', this.$stages);
63
+ }
64
+ catch (e) {
65
+ helpers_1.log.dbg('CI VARIABLE: CI_STAGES is invalid!');
66
+ }
67
+ try {
68
+ this.$stagesVersions = JSON.parse(ENV.VERSIONS || '{}');
69
+ helpers_1.log.dbg('stagesVersions:', this.$stagesVersions);
70
+ }
71
+ catch (e) {
72
+ helpers_1.log.dbg('CI VARIABLE:VERSIONS is invalid!');
73
+ }
74
+ this.build = Number(ENV.LAST_BUILD) || 0;
75
+ this.version = '0.0.' + this.build;
76
+ Shell_1.default.cd(this.rootPath);
77
+ helpers_1.log.dbg(`[${this.stage}, ${this.version}] ` + this.rootPath);
78
+ }
79
+ get shortVersion() {
80
+ return this.version.split('.').splice(0, 2).join('.');
81
+ }
82
+ get prevVersion() {
83
+ const pV = this.$stagesVersions[this.stage];
84
+ return pV !== '0.0.0' ? pV : undefined;
85
+ }
86
+ incrementBuild(newBuild) {
87
+ if (newBuild) {
88
+ this.build = newBuild;
89
+ }
90
+ else {
91
+ this.build += 1;
92
+ }
93
+ this.version = `${this.shortVersion}.${this.build}`;
94
+ }
95
+ saveGitLabBuild() {
96
+ return __awaiter(this, void 0, void 0, function* () {
97
+ yield saveGitLabVariable(this, 'LAST_BUILD', this.build);
98
+ });
99
+ }
100
+ saveGitLabStagesVersions() {
101
+ return __awaiter(this, void 0, void 0, function* () {
102
+ this.$stagesVersions[this.stage] = this.version;
103
+ yield saveGitLabVariable(this, 'VERSIONS', JSON.stringify(this.$stagesVersions, null, 3));
104
+ });
105
+ }
106
+ updateChangeLog(whatsNewHtml, filename = 'CHANGELOG.md') {
107
+ return __awaiter(this, void 0, void 0, function* () {
108
+ const filePath = `${this.rootPath}/${filename}`;
109
+ let title = `# ${(0, helpers_1.capitalizeFirstLetter)(this.group)}: **${this.name.toUpperCase()}**`;
110
+ helpers_1.log.info(`Update ${filename}:\n${title}`);
111
+ let changeLog = (yield Shell_1.default.cat(filePath, { silent: true, ignoreError: true })) || '';
112
+ const lines = changeLog.split('\n');
113
+ if (Array.isArray(lines) && lines.length > 1) {
114
+ title = lines.shift() || title;
115
+ changeLog = lines.join('\n');
116
+ }
117
+ const dateTime = new Date().toLocaleString('ru-RU', {
118
+ weekday: 'long',
119
+ year: 'numeric',
120
+ month: 'short',
121
+ day: 'numeric',
122
+ timeZone: 'Europe/Moscow',
123
+ hour12: false,
124
+ hour: 'numeric',
125
+ minute: 'numeric',
126
+ });
127
+ const whatsNewMd = (0, helpers_1.htmlToMd)(whatsNewHtml);
128
+ changeLog = `${title}
129
+ ## **${this.version}**
130
+ ${(0, helpers_1.capitalizeFirstLetter)(dateTime)}
131
+
132
+ ${whatsNewMd}
133
+
134
+
135
+
136
+
137
+ ${changeLog}
138
+ `;
139
+ yield fs_1.promises.writeFile(filePath, changeLog, { encoding: 'utf8', flag: 'w+' });
140
+ });
141
+ }
142
+ }
143
+ exports.Project = Project;
144
+ function saveGitLabVariable(prj, name, value) {
145
+ return __awaiter(this, void 0, void 0, function* () {
146
+ try {
147
+ const resp = yield (0, axios_1.default)({
148
+ method: 'PUT',
149
+ timeout: 6000,
150
+ url: `${ENV.CONFIG_GITLAB_URL || 'https://gitlab.soft-artel.com'}/api/v4/projects/${prj.id}/variables/${name}`,
151
+ headers: { 'PRIVATE-TOKEN': ENV.GITLAB_API_TOKEN || '' },
152
+ data: {
153
+ value,
154
+ },
155
+ });
156
+ helpers_1.log.dbg(resp.data);
157
+ return JSON.parse(resp.data.value);
158
+ }
159
+ catch (e) {
160
+ const errTitle = `GitLab project [${prj.id}] has not`;
161
+ if (e.response && (e.response.status === 401 || e.response.status === 403)) {
162
+ const err = new Exception_1.Exception(`${errTitle} access, HTTP-401`);
163
+ err.params = e.config;
164
+ throw err;
165
+ }
166
+ if (e.response && e.response.status === 404) {
167
+ const err = new Exception_1.Exception(`${errTitle} CI VARIABLE: ${name}`);
168
+ err.params = e.config;
169
+ throw err;
170
+ }
171
+ e.request = '...';
172
+ e.connection = '...';
173
+ throw e;
174
+ }
175
+ });
176
+ }
177
+ //# sourceMappingURL=Project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Project.js","sourceRoot":"","sources":["../../libs/Project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import './prototype';
2
+ import TelegramBot from 'node-telegram-bot-api';
3
+ import { Project } from './Project';
4
+ export interface ReporterOptions {
5
+ chat_id: number;
6
+ chat_rel?: number;
7
+ token: string;
8
+ showGroup?: boolean;
9
+ shortVersion?: boolean;
10
+ showBuild?: boolean;
11
+ preTitle?: string;
12
+ postTitle?: string;
13
+ }
14
+ export declare class Reporter {
15
+ $bot: TelegramBot;
16
+ $chat_id: number;
17
+ $message_id: number;
18
+ $message_text: string;
19
+ title: string;
20
+ stage: string | undefined;
21
+ $prj: Project;
22
+ $chat_rel: number;
23
+ $opt: ReporterOptions;
24
+ $ver: string;
25
+ constructor(prj: Project, opt: ReporterOptions);
26
+ updateTitle(): void;
27
+ startBuild(): Promise<void>;
28
+ startDeploy(to: string): Promise<void>;
29
+ deploy(to: string): Promise<void>;
30
+ fail(err: Error): Promise<void>;
31
+ release(changelog: string): Promise<void>;
32
+ send(text: string, appendExist?: string, chat_id_opt?: number): Promise<number>;
33
+ }
34
+ //# sourceMappingURL=Reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Reporter.d.ts","sourceRoot":"","sources":["../../libs/Reporter.ts"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC;AAErB,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAGhD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,KAAK,EAAE,MAAM,CAAC;IAEd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,qBAAa,QAAQ;IAEpB,IAAI,cAAC;IACL,QAAQ,SAAK;IACb,WAAW,SAAK;IAChB,aAAa,SAAM;IAEnB,KAAK,SAAM;IACX,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAE1B,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,SAAK;IACd,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,SAAM;gBAIE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe;IAc9C,WAAW;IAmBL,UAAU;IAKV,WAAW,CAAC,EAAE,EAAE,MAAM;IAItB,MAAM,CAAC,EAAE,EAAE,MAAM;IAMjB,IAAI,CAAC,GAAG,EAAE,KAAK;IAWf,OAAO,CAAC,SAAS,EAAE,MAAM;IAuBzB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,SAAQ,EAAE,WAAW,SAAgB;CAuCzE"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.Reporter = void 0;
16
+ const ENV = process.env;
17
+ ENV.NTBA_FIX_319 = 'true';
18
+ require("./prototype");
19
+ const node_telegram_bot_api_1 = __importDefault(require("node-telegram-bot-api"));
20
+ const helpers_1 = require("../libs/helpers");
21
+ class Reporter {
22
+ constructor(prj, opt) {
23
+ this.$chat_id = 0;
24
+ this.$message_id = 0;
25
+ this.$message_text = '';
26
+ this.title = '';
27
+ this.$chat_rel = 0;
28
+ this.$ver = '';
29
+ this.$prj = prj;
30
+ this.$chat_id = opt.chat_id;
31
+ this.$opt = opt;
32
+ this.$bot = new node_telegram_bot_api_1.default(opt.token);
33
+ if (opt.chat_rel) {
34
+ this.$chat_rel = opt.chat_rel;
35
+ }
36
+ this.updateTitle();
37
+ }
38
+ updateTitle() {
39
+ this.title = this.$opt.preTitle ? this.$opt.preTitle + ' ' : '';
40
+ this.title += this.$opt.showGroup ? this.$prj.group.toUpperCase() + ': ' : '';
41
+ this.title += this.$prj.name.toUpperCase();
42
+ this.title += this.$opt.postTitle ? ' ' + this.$opt.postTitle : '';
43
+ if (this.$opt.shortVersion) {
44
+ this.$ver = `v${this.$prj.shortVersion} #${this.$prj.build}`;
45
+ }
46
+ else {
47
+ this.$ver = `v${this.$prj.version}`;
48
+ }
49
+ this.title += ' ' + this.$ver;
50
+ }
51
+ startBuild() {
52
+ return __awaiter(this, void 0, void 0, function* () {
53
+ this.updateTitle();
54
+ yield this.send(`šŸ“¦ ${this.title} <a href="${this.$prj.job.url}">BUILD</a> [${this.$prj.job.user.name}]`);
55
+ });
56
+ }
57
+ startDeploy(to) {
58
+ return __awaiter(this, void 0, void 0, function* () {
59
+ yield this.send(`šŸš€ ${this.title} <a href="${this.$prj.job.url}">DEPLOY</a>: <b>${to.toUpperCase()}</b> [${this.$prj.job.user.name}]`);
60
+ });
61
+ }
62
+ deploy(to) {
63
+ return __awaiter(this, void 0, void 0, function* () {
64
+ yield this.send(`\n\nšŸš€ <a href="${this.$prj.job.url}">DEPLOY</a>: <b>${to.toUpperCase()}</b>`);
65
+ });
66
+ }
67
+ fail(err) {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ let msg = '\n';
70
+ if (this.$message_id === 0) {
71
+ msg = `${this.$prj.group.toUpperCase()}: <b>${this.$prj.name.toUpperCase()} v${this.$prj.version}</b>\n`;
72
+ }
73
+ msg += `ā€¼ļø <b><a href="${this.$prj.job.url}">FAIL</a></b>\n${htmlEntities(err.stack || err.message)}`;
74
+ yield this.send(msg, ' ');
75
+ });
76
+ }
77
+ release(changelog) {
78
+ return __awaiter(this, void 0, void 0, function* () {
79
+ yield this.send(`\nāœ… RELEASED: <b>${this.$ver}</b> ${this.stage ? `to ${this.stage}` : ''}`, ' ');
80
+ let msg = `šŸŽ‰ ${this.title} ${this.stage ? ` [ ${this.stage} ]` : ``}`;
81
+ if (changelog.length > 0) {
82
+ msg += `
83
+ ---------------------
84
+ ${changelog}`;
85
+ }
86
+ if (this.$chat_rel !== 0) {
87
+ yield this.send(msg, '', this.$chat_rel);
88
+ }
89
+ else if (changelog.length > 0) {
90
+ yield this.send(msg, '', this.$chat_id);
91
+ }
92
+ });
93
+ }
94
+ send(text, appendExist = '...', chat_id_opt = this.$chat_id) {
95
+ return __awaiter(this, void 0, void 0, function* () {
96
+ const chat_id = chat_id_opt;
97
+ const message_id = this.$message_id;
98
+ try {
99
+ if (message_id && message_id !== 0 && appendExist) {
100
+ let fullMsg = this.$message_text + '\n' + text;
101
+ fullMsg = fullMsg.length < 4090 ? fullMsg : fullMsg.slice(0, 4090);
102
+ yield this.$bot.editMessageText(fullMsg + '\n' + appendExist, {
103
+ chat_id, message_id, parse_mode: 'HTML', disable_web_page_preview: true,
104
+ });
105
+ this.$message_text = fullMsg;
106
+ return this.$message_id;
107
+ }
108
+ text = text.length < 4090 ? text : text.slice(0, 4090);
109
+ const res = yield this.$bot.sendMessage(chat_id, appendExist && appendExist.length > 0 ? text + '\n' + appendExist : text, { parse_mode: 'HTML', disable_web_page_preview: true });
110
+ if (appendExist) {
111
+ this.$message_id = res.message_id;
112
+ this.$message_text = text;
113
+ }
114
+ return res.message_id;
115
+ }
116
+ catch (err) {
117
+ err.message = 'ERROR Sending message\n' + err.message;
118
+ helpers_1.log.error(err.message);
119
+ helpers_1.log.error(err, { chat_id, message_id, text });
120
+ return 0;
121
+ }
122
+ });
123
+ }
124
+ }
125
+ exports.Reporter = Reporter;
126
+ function htmlEntities(rawStr) {
127
+ return rawStr.replace(/[\u00A0-\u9999<>\&]/g, function (i) {
128
+ return '&#' + i.charCodeAt(0) + ';';
129
+ });
130
+ }
131
+ //# sourceMappingURL=Reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Reporter.js","sourceRoot":"","sources":["../../libs/Reporter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AACxB,GAAG,CAAC,YAAY,GAAC,MAAM,CAAC;AAExB,uBAAqB;AAErB,kFAAgD;AAEhD,6CAAsC;AAyBtC,MAAa,QAAQ;IAiBpB,YAAY,GAAY,EAAE,GAAoB;QAd9C,aAAQ,GAAG,CAAC,CAAC;QACb,gBAAW,GAAG,CAAC,CAAC;QAChB,kBAAa,GAAG,EAAE,CAAC;QAEnB,UAAK,GAAG,EAAE,CAAC;QAIX,cAAS,GAAG,CAAC,CAAC;QAEd,SAAI,GAAG,EAAE,CAAC;QAKT,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAEhB,IAAI,CAAC,IAAI,GAAG,IAAI,+BAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEvC,IAAG,GAAG,CAAC,QAAQ,EAAC;YACf,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC;SAC9B;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IAGD,WAAW;QAEV,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAEhE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,IAAI,CAAA,CAAC,CAAC,EAAE,CAAC;QAC7E,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAE3C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAEnE,IAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAC;YACzB,IAAI,CAAC,IAAI,GAAE,IAAK,IAAI,CAAC,IAAI,CAAC,YAAa,KAAM,IAAI,CAAC,IAAI,CAAC,KAAM,EAAE,CAAC;SAChE;aAAI;YACJ,IAAI,CAAC,IAAI,GAAE,IAAK,IAAI,CAAC,IAAI,CAAC,OAAQ,EAAE,CAAC;SACrC;QAED,IAAI,CAAC,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;IAC/B,CAAC;IAGK,UAAU;;YACf,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,IAAI,CAAC,MAAO,IAAI,CAAC,KAAM,aAAc,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAI,gBAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC/G,CAAC;KAAA;IAEK,WAAW,CAAC,EAAU;;YAC3B,MAAM,IAAI,CAAC,IAAI,CAAC,MAAO,IAAI,CAAC,KAAM,aAAc,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAI,oBAAqB,EAAE,CAAC,WAAW,EAAG,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC9I,CAAC;KAAA;IAEK,MAAM,CAAC,EAAU;;YACtB,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAoB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAI,oBAAqB,EAAE,CAAC,WAAW,EAAG,MAAM,CAAC,CAAC;QACrG,CAAC;KAAA;IAIK,IAAI,CAAC,GAAU;;YACpB,IAAI,GAAG,GAAG,IAAI,CAAC;YACf,IAAG,IAAI,CAAC,WAAW,KAAK,CAAC,EAAC;gBACzB,GAAG,GAAG,GAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAG,QAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAG,KAAM,IAAI,CAAC,IAAI,CAAC,OAAQ,QAAQ,CAAC;aAC/G;YACD,GAAG,IAAI,kBAAmB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAI,mBAAoB,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAE,EAAE,CAAC;YAC1G,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC3B,CAAC;KAAA;IAIK,OAAO,CAAC,SAAiB;;YAC9B,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAqB,IAAI,CAAC,IAAK,QAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAO,IAAI,CAAC,KAAM,EAAE,CAAC,CAAC,CAAC,EAAG,EAAE,EAAE,GAAG,CAAC,CAAC;YAGxG,IAAI,GAAG,GAAG,MAAO,IAAI,CAAC,KAAM,KAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAO,IAAI,CAAC,KAAM,IAAI,CAAC,CAAC,CAAC,EAAG,EAAE,CAAC;YAE9E,IAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAC;gBACtB,GAAG,IAAI;;EAER,SAAU,EAAE,CAAC;aACb;YAED,IAAG,IAAI,CAAC,SAAS,KAAK,CAAC,EAAC;gBAEvB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;aACzC;iBAAM,IAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAC;gBAC9B,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aACxC;QAEF,CAAC;KAAA;IAIK,IAAI,CAAC,IAAY,EAAE,WAAW,GAAG,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC,QAAQ;;YAExE,MAAM,OAAO,GAAG,WAAW,CAAC;YAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;YAEpC,IAAI;gBACH,IAAG,UAAU,IAAI,UAAU,KAAK,CAAC,IAAI,WAAW,EAAC;oBAEhD,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;oBAC/C,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBAEnE,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,GAAG,WAAW,EAAE;wBAC7D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAC,MAAM,EAAE,wBAAwB,EAAE,IAAI;qBACtE,CAAC,CAAC;oBAEH,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;oBAC7B,OAAO,IAAI,CAAC,WAAW,CAAC;iBACxB;gBAED,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBAEvD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEnL,IAAG,WAAW,EAAC;oBACd,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC;oBAClC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;iBAC1B;gBAED,OAAO,GAAG,CAAC,UAAU,CAAC;aAEtB;YAAC,OAAO,GAAG,EAAE;gBACb,GAAG,CAAC,OAAO,GAAG,yBAAyB,GAAG,GAAG,CAAC,OAAO,CAAC;gBACtD,aAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACvB,aAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9C,OAAO,CAAC,CAAC;aACT;QAEF,CAAC;KAAA;CAED;AA1ID,4BA0IC;AAKD,SAAS,YAAY,CAAC,MAAc;IACnC,OAAO,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,UAAS,CAAC;QACvD,OAAO,IAAI,GAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAC,GAAG,CAAC;IACjC,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,39 @@
1
+ import shelljs from 'shelljs';
2
+ declare function exec(cmd: string, opt?: ExecOptions): Promise<string>;
3
+ declare function execRepeat(cmd: string, repeats?: number, sleep?: number, opt?: {
4
+ silent: boolean;
5
+ ignoreError: boolean;
6
+ }): Promise<string>;
7
+ declare function mkdir(dir: string, opt?: ExecOptions): Promise<string>;
8
+ declare function cat(file: string, opt?: {
9
+ silent: boolean;
10
+ ignoreError: boolean;
11
+ }): Promise<string | undefined>;
12
+ declare function find(where: string, filename?: string, maxdepth?: number, ignore?: string[], pars?: string, opt?: {
13
+ silent: boolean;
14
+ ignoreError: boolean;
15
+ }): Promise<string[]>;
16
+ declare function ls(where: string, pars?: string, opt?: {
17
+ silent: boolean;
18
+ ignoreError: boolean;
19
+ }): Promise<string[]>;
20
+ export interface ExecOptions {
21
+ silent?: boolean;
22
+ ignoreError?: boolean;
23
+ }
24
+ declare const _default: {
25
+ cd: typeof shelljs.cd;
26
+ chmod: shelljs.ChmodFunction;
27
+ grep: shelljs.GrepFunction;
28
+ pwd: typeof shelljs.pwd;
29
+ sed: shelljs.SedFunction;
30
+ test: typeof shelljs.test;
31
+ exec: typeof exec;
32
+ execRepeat: typeof execRepeat;
33
+ mkdir: typeof mkdir;
34
+ cat: typeof cat;
35
+ find: typeof find;
36
+ ls: typeof ls;
37
+ };
38
+ export default _default;
39
+ //# sourceMappingURL=Shell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Shell.d.ts","sourceRoot":"","sources":["../../libs/Shell.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAM9B,iBAAS,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,WAAwD,GAAG,OAAO,CAAC,MAAM,CAAC,CA8BzG;AAID,iBAAe,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,SAAK,EAAE,KAAK,SAAK,EAAE,GAAG;;;CAA6C,mBAyBhH;AAID,iBAAe,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,mBAElD;AAED,iBAAe,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;;;CAAuC,+BAM1E;AAED,iBAAe,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAK,EAAE,QAAQ,SAAI,EAAE,MAAM,GAAE,MAAM,EAAO,EAAE,IAAI,SAAK,EAAE,GAAG;;;CAAuC,qBAY3I;AAED,iBAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,SAAK,EAAE,GAAG;;;CAAuC,qBAErF;AAED,MAAM,WAAW,WAAW;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;;;;;;;;;;;;;;;AAED,wBAcE"}