@clickview/ship-it 0.0.2-dev.2 → 0.0.3

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 (29) hide show
  1. package/lib/src/api-clients/git-lab/GitLabApiClient.js +34 -2
  2. package/lib/src/api-clients/git-lab/GitLabMapper.js +10 -1
  3. package/lib/src/commands/CreateMergeRequestCommand.js +3 -3
  4. package/lib/src/commands/{CommitPackageVersionsCommand.js → ValidateMergeRequestCommand.js} +12 -12
  5. package/lib/src/commands/index.js +1 -0
  6. package/lib/src/constants/CommandTypeMapping.js +2 -1
  7. package/lib/src/index.js +1 -1
  8. package/lib/src/interfaces/command-options/index.js +2 -0
  9. package/lib/src/interfaces/models/Milestone.js +2 -0
  10. package/lib/src/interfaces/models/index.js +1 -0
  11. package/lib/src/inversify.config.js +2 -0
  12. package/lib/src/services/GitLabService.js +36 -2
  13. package/lib/src/startup/SetupCommands.js +36 -10
  14. package/lib/src/tasks/BumpPackagesTask.js +20 -7
  15. package/lib/src/tasks/CommitPackageVersionsTask.js +11 -17
  16. package/lib/src/tasks/CreateMergeRequestTask.js +2 -2
  17. package/lib/src/tasks/InstallPackagesTask.js +58 -17
  18. package/lib/src/tasks/ValidateDescriptionsTask.js +11 -8
  19. package/lib/src/tasks/{CommitLocalPackagesTask.js → ValidateMergeRequestTask.js} +38 -67
  20. package/lib/src/tasks/ValidateTask.js +2 -2
  21. package/lib/src/tasks/index.js +1 -0
  22. package/lib/src/types.js +4 -2
  23. package/lib/src/utils/Descriptions.js +23 -19
  24. package/lib/src/utils/ProjectIds.js +1 -1
  25. package/package.json +1 -1
  26. package/lib/src/api-clients/GitLabApiClient.js +0 -342
  27. package/lib/src/constants/index.js +0 -18
  28. /package/lib/src/interfaces/{ShipItOptions.js → command-options/InstallPackagesCommandOptions.js} +0 -0
  29. /package/lib/src/interfaces/command-options/{CommitPackageVersionsCommandOptions.js → ValidateMRCommandOptions.js} +0 -0
@@ -47,91 +47,62 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
47
47
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
48
48
  }
49
49
  };
50
- var __importDefault = (this && this.__importDefault) || function (mod) {
51
- return (mod && mod.__esModule) ? mod : { "default": mod };
52
- };
53
50
  Object.defineProperty(exports, "__esModule", { value: true });
54
- exports.CommitLocalPackagesTask = void 0;
51
+ exports.ValidateMergeRequestTask = void 0;
55
52
  require("reflect-metadata");
56
- var fs_1 = __importDefault(require("fs"));
57
53
  var inversify_1 = require("inversify");
54
+ var Logger_1 = require("../utils/Logger");
58
55
  var types_1 = require("../types");
59
56
  var services_1 = require("../services");
60
- var MonorepoPackageJsonFiles_1 = require("../constants/MonorepoPackageJsonFiles");
61
57
  var utils_1 = require("../utils");
62
- var CommitLocalPackagesTask = /** @class */ (function () {
63
- function CommitLocalPackagesTask(service) {
58
+ var ValidateMergeRequestTask = /** @class */ (function () {
59
+ function ValidateMergeRequestTask(service) {
64
60
  this.service = service;
65
61
  }
66
- CommitLocalPackagesTask.prototype.run = function (options) {
62
+ ValidateMergeRequestTask.prototype.run = function (options) {
67
63
  return __awaiter(this, void 0, void 0, function () {
68
- var mergeRequest, commitFiles;
64
+ var project, mergeRequestId, mergeRequest, isDescriptionValid;
69
65
  return __generator(this, function (_a) {
70
66
  switch (_a.label) {
71
67
  case 0:
72
- utils_1.Logger.logTask('Committing clickview npm package versions');
73
- return [4 /*yield*/, this.service.getMergeRequest(utils_1.ProjectIds.MONOREPO_PROJECT_ID, options.branchName)];
68
+ Logger_1.Logger.logTask('Validating Merge Request');
69
+ return [4 /*yield*/, this.service.getProject(options.projectId)];
74
70
  case 1:
75
- mergeRequest = _a.sent();
76
- return [4 /*yield*/, this.getCommitFiles()];
71
+ project = _a.sent();
72
+ mergeRequestId = options.branchName.replace('merge-requests/', '');
73
+ return [4 /*yield*/, this.service.getMergeRequestById(project.id, mergeRequestId)];
77
74
  case 2:
78
- commitFiles = _a.sent();
79
- console.log('commit files', commitFiles);
80
- // await this.service.commit(
81
- // ProjectIds.MONOREPO_PROJECT_ID,
82
- // options.branchName,
83
- // 'Bump package versions',
84
- // commitFiles
85
- // );
75
+ mergeRequest = _a.sent();
76
+ if (!mergeRequest) {
77
+ Logger_1.Logger.logError("Could not find merge request [".concat(project.title, "]: [").concat(options.branchName, "]"));
78
+ return [2 /*return*/, false];
79
+ }
80
+ if (mergeRequest.targetBranch !== 'dev') {
81
+ Logger_1.Logger.logMessage("Merge request is not targeting dev and does not need to be validated");
82
+ return [2 /*return*/, true];
83
+ }
84
+ if (!mergeRequest.milestone) {
85
+ Logger_1.Logger.logError("Merge request does not have a milestone");
86
+ return [2 /*return*/, false];
87
+ }
88
+ isDescriptionValid = project.id.toString() === utils_1.ProjectIds.MONOREPO_PROJECT_ID ?
89
+ utils_1.Descriptions.isMonorepoDescriptionValid(mergeRequest.description) :
90
+ utils_1.Descriptions.isDescriptionValid(mergeRequest.description);
91
+ if (!isDescriptionValid) {
92
+ Logger_1.Logger.logError('Merge request description is invalid');
93
+ return [2 /*return*/, false];
94
+ }
95
+ Logger_1.Logger.logSuccess('Merge request is valid');
86
96
  return [2 /*return*/, true];
87
97
  }
88
98
  });
89
99
  });
90
100
  };
91
- CommitLocalPackagesTask.prototype.getCommitFiles = function () {
92
- return __awaiter(this, void 0, void 0, function () {
93
- var commitFiles, _i, MONOREPO_PACKAGE_JSON_FILES_1, filePath;
94
- return __generator(this, function (_a) {
95
- commitFiles = [];
96
- for (_i = 0, MONOREPO_PACKAGE_JSON_FILES_1 = MonorepoPackageJsonFiles_1.MONOREPO_PACKAGE_JSON_FILES; _i < MONOREPO_PACKAGE_JSON_FILES_1.length; _i++) {
97
- filePath = MONOREPO_PACKAGE_JSON_FILES_1[_i];
98
- console.log('reading file', filePath);
99
- commitFiles.push({
100
- filePath: filePath,
101
- content: fs_1.default.readFileSync(filePath, { encoding: 'utf8' })
102
- });
103
- }
104
- return [2 /*return*/, commitFiles];
105
- });
106
- });
107
- };
108
- CommitLocalPackagesTask = __decorate([
109
- inversify_1.injectable(),
110
- __param(0, inversify_1.inject(types_1.SERVICES.GitLabService)),
101
+ ValidateMergeRequestTask = __decorate([
102
+ (0, inversify_1.injectable)(),
103
+ __param(0, (0, inversify_1.inject)(types_1.SERVICES.GitLabService)),
111
104
  __metadata("design:paramtypes", [services_1.GitLabService])
112
- ], CommitLocalPackagesTask);
113
- return CommitLocalPackagesTask;
105
+ ], ValidateMergeRequestTask);
106
+ return ValidateMergeRequestTask;
114
107
  }());
115
- exports.CommitLocalPackagesTask = CommitLocalPackagesTask;
116
- // function getPackageJsonPaths(): string[] {
117
- // const packageJsonPaths: string[] = [];
118
- // // Walk through the file system and push the path of each package.json file to the array
119
- // function findPackageJsonPathsInDirectory(startPath: string) {
120
- // const files = fs.readdirSync(startPath);
121
- // files.forEach(file => {
122
- // const filename = path.join(startPath, file);
123
- // const stat = fs.lstatSync(filename);
124
- // if (stat.isDirectory())
125
- // return findPackageJsonPathsInDirectory(filename);
126
- // if (!filename.includes('package.json'))
127
- // return;
128
- // // Ignore any `package.json` files found under `node_modules`
129
- // if (filename.includes('node_modules'))
130
- // return;
131
- // packageJsonPaths.push(filename);
132
- // });
133
- // };
134
- // const packagesRoot = path.resolve(__dirname, '../../../packages');
135
- // findPackageJsonPathsInDirectory(packagesRoot); // Start from the `/packages` folder
136
- // return packageJsonPaths;
137
- // }
108
+ exports.ValidateMergeRequestTask = ValidateMergeRequestTask;
@@ -95,7 +95,7 @@ var ValidateTask = /** @class */ (function () {
95
95
  /**
96
96
  * Any MRs that are not targeting dev should not have a milestone
97
97
  */
98
- var nonDevMrs = project.mergeRequests.filter(function (mr) { return mr.targetBranch !== 'dev'; });
98
+ var nonDevMrs = project.mergeRequests.filter(function (mr) { return mr.targetBranch !== 'dev' && mr.targetBranch !== 'master'; });
99
99
  if (nonDevMrs.length)
100
100
  ready = false;
101
101
  if (!ready)
@@ -133,7 +133,7 @@ var ValidateTask = /** @class */ (function () {
133
133
  for (var _i = 0, projects_2 = projects; _i < projects_2.length; _i++) {
134
134
  var project = projects_2[_i];
135
135
  var notReadyMrs = project.mergeRequests.filter(function (mr) { return mr.status === 'opened'; });
136
- var nonDevMrs = project.mergeRequests.filter(function (mr) { return mr.targetBranch !== 'dev'; });
136
+ var nonDevMrs = project.mergeRequests.filter(function (mr) { return mr.targetBranch !== 'dev' && mr.targetBranch !== 'master'; });
137
137
  if (notReadyMrs.length)
138
138
  allNotReadyMrs.push.apply(allNotReadyMrs, notReadyMrs);
139
139
  if (nonDevMrs.length)
@@ -23,5 +23,6 @@ __exportStar(require("./CreateReleaseNotesTask"), exports);
23
23
  __exportStar(require("./InstallPackagesTask"), exports);
24
24
  __exportStar(require("./ValidateCommitsTask"), exports);
25
25
  __exportStar(require("./ValidateDescriptionsTask"), exports);
26
+ __exportStar(require("./ValidateMergeRequestTask"), exports);
26
27
  __exportStar(require("./ValidateTask"), exports);
27
28
  __exportStar(require("./VersionTask"), exports);
package/lib/src/types.js CHANGED
@@ -21,7 +21,8 @@ exports.TASKS = {
21
21
  CreateReleaseNotesTask: Symbol.for('CreateReleaseNotesTask'),
22
22
  InstallPackagesTask: Symbol.for('InstallPackagesTask'),
23
23
  BumpPackagesTask: Symbol.for('BumpPackagesTask'),
24
- CommitPackageVersionsTask: Symbol.for('CommitPackageVersionsTask')
24
+ CommitPackageVersionsTask: Symbol.for('CommitPackageVersionsTask'),
25
+ ValidateMergeRequestTask: Symbol.for('ValidateMergeRequestTask')
25
26
  };
26
27
  exports.COMMANDS = {
27
28
  StatusCommand: Symbol.for('StatusCommand'),
@@ -31,5 +32,6 @@ exports.COMMANDS = {
31
32
  CreateMergeRequestCommand: Symbol.for('CreateMergeRequestCommand'),
32
33
  CreateReleaseNotesCommand: Symbol.for('CreateReleaseNotesCommand'),
33
34
  InstallPackagesCommand: Symbol.for('InstallPackagesCommand'),
34
- BumpPackagesCommand: Symbol.for('BumpPackagesCommand')
35
+ BumpPackagesCommand: Symbol.for('BumpPackagesCommand'),
36
+ ValidateMergeRequestCommand: Symbol.for('ValidateMergeRequestCommand')
35
37
  };
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Descriptions = void 0;
4
- // const VALID_HEADINGS: any = {
5
- // 'dependencies': true,
6
- // 'before release': true,
7
- // 'customer changes': true,
8
- // 'code changes': true,
9
- // 'testing': true,
10
- // 'notes': true
11
- // };
4
+ var VALID_HEADINGS = {
5
+ 'dependencies': true,
6
+ 'before release': true,
7
+ 'customer changes': true,
8
+ 'code changes': true,
9
+ 'testing': true,
10
+ 'notes': true
11
+ };
12
12
  var VALID_MONOREPO_HEADINGS = {
13
13
  'common': true,
14
14
  'curator': true,
@@ -32,7 +32,7 @@ function toObject(lines, headingPrefix) {
32
32
  for (var _i = 0, lines_1 = lines; _i < lines_1.length; _i++) {
33
33
  var line = lines_1[_i];
34
34
  // Skip empty lines
35
- if (!line.trim() || line === '/n' || line.toLowerCase().trim() === 'n/a')
35
+ if (!line.trim() || line === '/n')
36
36
  continue;
37
37
  if (line.startsWith(headingPrefix + ' ')) {
38
38
  // TODO: Potentially add heading transforms to capture multiple variants
@@ -46,7 +46,11 @@ function toObject(lines, headingPrefix) {
46
46
  */
47
47
  if (line.startsWith('!'))
48
48
  obj[currentHeading] += '\n';
49
- obj[currentHeading] += line + '\n';
49
+ /**
50
+ * Skip the line if the dev is opting out by adding n/a
51
+ */
52
+ if (line.toLowerCase().trim() !== 'n/a')
53
+ obj[currentHeading] += line + '\n';
50
54
  }
51
55
  return obj;
52
56
  }
@@ -59,11 +63,10 @@ exports.Descriptions = {
59
63
  var keys = Object.keys(obj);
60
64
  if (!(keys === null || keys === void 0 ? void 0 : keys.length))
61
65
  return false;
62
- // TODO: Uncomment below once the team is writing good MR descriptions
63
- // if (keys.some(k => !VALID_HEADINGS[k]))
64
- // return false;
65
- // if (!obj['testing'])
66
- // return false;
66
+ if (keys.some(function (k) { return !VALID_HEADINGS[k]; }))
67
+ return false;
68
+ if (obj['testing'] === undefined)
69
+ return false;
67
70
  return true;
68
71
  },
69
72
  isMonorepoDescriptionValid: function (description) {
@@ -75,9 +78,8 @@ exports.Descriptions = {
75
78
  return false;
76
79
  if (keys.some(function (k) { return !VALID_MONOREPO_HEADINGS[k]; }))
77
80
  return false;
78
- // TODO: Uncomment below once the team is writing good MR descriptions
79
- // if (!obj['testing'])
80
- // return false;
81
+ if (!obj['testing'])
82
+ return false;
81
83
  var isValid = Object.keys(obj).every(function (key) {
82
84
  if (key !== 'dependencies' && key !== 'testing')
83
85
  return true;
@@ -90,7 +92,7 @@ exports.Descriptions = {
90
92
  var descriptionObjs = mergeRequests
91
93
  .filter(function (mr) { return mr.status === 'merged'; })
92
94
  .map(function (mr) { return toObject(mr.description.split('\n'), headingPrefix); });
93
- var obj = [];
95
+ var obj = {};
94
96
  var _loop_1 = function (descriptionObj) {
95
97
  Object.keys(descriptionObj).forEach(function (key) {
96
98
  if (!obj[key])
@@ -106,6 +108,8 @@ exports.Descriptions = {
106
108
  Object.keys(obj).forEach(function (key) {
107
109
  if (key === 'notes')
108
110
  return;
111
+ if (!obj[key])
112
+ return;
109
113
  description += '\n' + headingPrefix + ' ' + key.charAt(0).toUpperCase() + key.slice(1) + '\n';
110
114
  description += obj[key];
111
115
  });
@@ -7,7 +7,7 @@ exports.ProjectIds = void 0;
7
7
  var lodash_1 = __importDefault(require("lodash"));
8
8
  var errors_1 = require("../errors");
9
9
  var PROJECT_NAMES = {
10
- monorepo: '789',
10
+ monorepo: '798',
11
11
  online: '109',
12
12
  curator: '62',
13
13
  cloud: '534',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clickview/ship-it",
3
- "version": "0.0.2-dev.2",
3
+ "version": "0.0.3",
4
4
  "description": "Release Manager",
5
5
  "main": "./lib/index.js",
6
6
  "bin": {
@@ -1,342 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
- return new (P || (P = Promise))(function (resolve, reject) {
17
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
- step((generator = generator.apply(thisArg, _arguments || [])).next());
21
- });
22
- };
23
- var __generator = (this && this.__generator) || function (thisArg, body) {
24
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
25
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
26
- function verb(n) { return function (v) { return step([n, v]); }; }
27
- function step(op) {
28
- if (f) throw new TypeError("Generator is already executing.");
29
- while (_) try {
30
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
- if (y = 0, t) op = [op[0] & 2, t.value];
32
- switch (op[0]) {
33
- case 0: case 1: t = op; break;
34
- case 4: _.label++; return { value: op[1], done: false };
35
- case 5: _.label++; y = op[1]; op = [0]; continue;
36
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
37
- default:
38
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
39
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
40
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
41
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
42
- if (t[2]) _.ops.pop();
43
- _.trys.pop(); continue;
44
- }
45
- op = body.call(thisArg, _);
46
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
47
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
48
- }
49
- };
50
- Object.defineProperty(exports, "__esModule", { value: true });
51
- exports.GitLabApiClient = void 0;
52
- require("reflect-metadata");
53
- var inversify_1 = require("inversify");
54
- var node_1 = require("@gitbeaker/node");
55
- var types_1 = require("types");
56
- var GitLabApiClient = /** @class */ (function () {
57
- function GitLabApiClient(config) {
58
- this._config = config;
59
- this._client = new node_1.Gitlab({
60
- token: this._config.accessToken,
61
- host: this._config.url
62
- });
63
- }
64
- GitLabApiClient.prototype.getMergeRequests = function (options) {
65
- return __awaiter(this, void 0, void 0, function () {
66
- var milestone, projectIds, mergeRequests;
67
- return __generator(this, function (_a) {
68
- switch (_a.label) {
69
- case 0:
70
- milestone = options.milestone, projectIds = options.projectIds;
71
- if (!milestone && !(projectIds === null || projectIds === void 0 ? void 0 : projectIds.length))
72
- throw new Error('Must specifiy one of the following: Milestone or ProjectIds');
73
- return [4 /*yield*/, this._client.MergeRequests.all({
74
- milestone: milestone,
75
- scope: 'all'
76
- })];
77
- case 1:
78
- mergeRequests = _a.sent();
79
- /**
80
- * Filter out only projectIds we care aboutr
81
- */
82
- if (projectIds === null || projectIds === void 0 ? void 0 : projectIds.length) {
83
- mergeRequests = mergeRequests.filter(function (mr) {
84
- return projectIds.some(function (p) { return mr.project_id.toString() === p.toString(); });
85
- });
86
- }
87
- return [2 /*return*/, mergeRequests.map(function (m) {
88
- var _a;
89
- return ({
90
- title: m.title,
91
- description: m.description,
92
- status: m.state,
93
- projectId: m.project_id,
94
- mergeCommit: m.merge_commit_sha,
95
- author: m.author.name,
96
- assignee: (_a = m.assignee) === null || _a === void 0 ? void 0 : _a.name,
97
- url: m.web_url,
98
- hasConflicts: m.has_conflicts,
99
- targetBranch: m.target_branch
100
- });
101
- })];
102
- }
103
- });
104
- });
105
- };
106
- GitLabApiClient.prototype.getProjectsByIds = function (projectIds) {
107
- return __awaiter(this, void 0, void 0, function () {
108
- var projects, i, projectId, p;
109
- return __generator(this, function (_a) {
110
- switch (_a.label) {
111
- case 0:
112
- projects = [];
113
- i = 0;
114
- _a.label = 1;
115
- case 1:
116
- if (!(i < projectIds.length)) return [3 /*break*/, 4];
117
- projectId = projectIds[i];
118
- return [4 /*yield*/, this._client.Projects.show(projectId)];
119
- case 2:
120
- p = _a.sent();
121
- projects.push(p);
122
- _a.label = 3;
123
- case 3:
124
- i++;
125
- return [3 /*break*/, 1];
126
- case 4: return [2 /*return*/, projects.map(function (p) { return ({
127
- id: p.id,
128
- title: p.name
129
- }); })];
130
- }
131
- });
132
- });
133
- };
134
- GitLabApiClient.prototype.getLatestTags = function (projectId) {
135
- return __awaiter(this, void 0, void 0, function () {
136
- var tags;
137
- return __generator(this, function (_a) {
138
- switch (_a.label) {
139
- case 0: return [4 /*yield*/, this._client.Tags.all(projectId, { maxPages: 1, perPage: 20 })];
140
- case 1:
141
- tags = _a.sent();
142
- if (!tags.length)
143
- throw new Error("Project ".concat(projectId, " does not have any tags"));
144
- return [2 /*return*/, tags.map(function (t) { return ({
145
- name: t.name,
146
- target: t.commit.id
147
- }); })];
148
- }
149
- });
150
- });
151
- };
152
- GitLabApiClient.prototype.getCommitsSince = function (projectId, branchName, sinceSha) {
153
- return __awaiter(this, void 0, void 0, function () {
154
- var commit, commits;
155
- return __generator(this, function (_a) {
156
- switch (_a.label) {
157
- case 0: return [4 /*yield*/, this._client.Commits.show(projectId, sinceSha)];
158
- case 1:
159
- commit = _a.sent();
160
- return [4 /*yield*/, this._client.Commits.all(projectId, {
161
- ref_name: branchName,
162
- since: commit.committed_date,
163
- first_parent: true
164
- })];
165
- case 2:
166
- commits = _a.sent();
167
- return [2 /*return*/, commits.map(function (c) { return ({
168
- id: c.id,
169
- title: c.title,
170
- message: c.message
171
- }); })];
172
- }
173
- });
174
- });
175
- };
176
- GitLabApiClient.prototype.getBranch = function (projectId, branchName) {
177
- return __awaiter(this, void 0, void 0, function () {
178
- var branch, _a;
179
- return __generator(this, function (_b) {
180
- switch (_b.label) {
181
- case 0:
182
- _b.trys.push([0, 2, , 3]);
183
- return [4 /*yield*/, this._client.Branches.show(projectId, branchName)];
184
- case 1:
185
- branch = _b.sent();
186
- return [2 /*return*/, {
187
- name: branch.name
188
- }];
189
- case 2:
190
- _a = _b.sent();
191
- return [2 /*return*/, null];
192
- case 3: return [2 /*return*/];
193
- }
194
- });
195
- });
196
- };
197
- GitLabApiClient.prototype.createBranch = function (projectId, branchName, branchFrom) {
198
- return __awaiter(this, void 0, void 0, function () {
199
- var newBranch;
200
- return __generator(this, function (_a) {
201
- switch (_a.label) {
202
- case 0: return [4 /*yield*/, this._client.Branches.create(projectId, branchName, branchFrom)];
203
- case 1:
204
- newBranch = _a.sent();
205
- return [2 /*return*/, {
206
- name: newBranch.name
207
- }];
208
- }
209
- });
210
- });
211
- };
212
- GitLabApiClient.prototype.cherryPick = function (projectId, sha, branchName) {
213
- return __awaiter(this, void 0, void 0, function () {
214
- return __generator(this, function (_a) {
215
- switch (_a.label) {
216
- case 0: return [4 /*yield*/, this._client.Commits.cherryPick(projectId, sha, branchName)];
217
- case 1:
218
- _a.sent();
219
- return [2 /*return*/];
220
- }
221
- });
222
- });
223
- };
224
- GitLabApiClient.prototype.getMergeRequest = function (projectId, sourceBranch, targetBranch) {
225
- var _a;
226
- return __awaiter(this, void 0, void 0, function () {
227
- var mergeRequests, mergeRequest;
228
- return __generator(this, function (_b) {
229
- switch (_b.label) {
230
- case 0: return [4 /*yield*/, this._client.MergeRequests.all({
231
- projectId: projectId,
232
- sourceBranch: sourceBranch,
233
- targetBranch: targetBranch,
234
- state: 'opened'
235
- })];
236
- case 1:
237
- mergeRequests = _b.sent();
238
- mergeRequest = mergeRequests[0];
239
- if (!mergeRequest)
240
- return [2 /*return*/, null];
241
- return [2 /*return*/, {
242
- title: mergeRequest.title,
243
- description: mergeRequest.description,
244
- status: mergeRequest.state,
245
- projectId: mergeRequest.project_id,
246
- mergeCommit: mergeRequest.merge_commit_sha,
247
- author: mergeRequest.author.name,
248
- assignee: (_a = mergeRequest.assignee) === null || _a === void 0 ? void 0 : _a.name,
249
- url: mergeRequest.web_url,
250
- hasConflicts: mergeRequest.has_conflicts,
251
- targetBranch: mergeRequest.target_branch
252
- }];
253
- }
254
- });
255
- });
256
- };
257
- GitLabApiClient.prototype.createMergeRequest = function (projectId, sourceBranch, targetBranch, title, description) {
258
- var _a;
259
- return __awaiter(this, void 0, void 0, function () {
260
- var mergeRequest;
261
- return __generator(this, function (_b) {
262
- switch (_b.label) {
263
- case 0: return [4 /*yield*/, this._client.MergeRequests.create(projectId, sourceBranch, targetBranch, title, {
264
- description: description
265
- })];
266
- case 1:
267
- mergeRequest = _b.sent();
268
- return [2 /*return*/, {
269
- title: mergeRequest.title,
270
- description: mergeRequest.description,
271
- status: mergeRequest.state,
272
- projectId: mergeRequest.project_id,
273
- mergeCommit: mergeRequest.merge_commit_sha,
274
- author: mergeRequest.author.name,
275
- assignee: (_a = mergeRequest.assignee) === null || _a === void 0 ? void 0 : _a.name,
276
- url: mergeRequest.web_url,
277
- hasConflicts: mergeRequest.has_conflicts,
278
- targetBranch: mergeRequest.target_branch
279
- }];
280
- }
281
- });
282
- });
283
- };
284
- GitLabApiClient.prototype.getFile = function (projectId, filePath, branchName) {
285
- return __awaiter(this, void 0, void 0, function () {
286
- var file, _a;
287
- return __generator(this, function (_b) {
288
- switch (_b.label) {
289
- case 0:
290
- _b.trys.push([0, 2, , 3]);
291
- return [4 /*yield*/, this._client.RepositoryFiles.show(projectId, filePath, branchName)];
292
- case 1:
293
- file = _b.sent();
294
- return [2 /*return*/, {
295
- name: file.file_name,
296
- path: file.file_path,
297
- content: file.content
298
- }];
299
- case 2:
300
- _a = _b.sent();
301
- return [2 /*return*/, null];
302
- case 3: return [2 /*return*/];
303
- }
304
- });
305
- });
306
- };
307
- GitLabApiClient.prototype.updateFile = function (projectId, filePath, branchName, content, commitMessage) {
308
- return __awaiter(this, void 0, void 0, function () {
309
- return __generator(this, function (_a) {
310
- switch (_a.label) {
311
- case 0: return [4 /*yield*/, this._client.RepositoryFiles.edit(projectId, filePath, branchName, content, commitMessage)];
312
- case 1:
313
- _a.sent();
314
- return [2 /*return*/];
315
- }
316
- });
317
- });
318
- };
319
- GitLabApiClient.prototype.commit = function (projectId, branchName, files, commitMessage) {
320
- return __awaiter(this, void 0, void 0, function () {
321
- return __generator(this, function (_a) {
322
- switch (_a.label) {
323
- case 0: return [4 /*yield*/, this._client.Commits.create(projectId, branchName, commitMessage, files.map(function (f) { return ({
324
- action: 'update',
325
- filePath: f.filePath,
326
- content: f.content
327
- }); }))];
328
- case 1:
329
- _a.sent();
330
- return [2 /*return*/];
331
- }
332
- });
333
- });
334
- };
335
- GitLabApiClient = __decorate([
336
- (0, inversify_1.injectable)(),
337
- __param(0, (0, inversify_1.inject)(types_1.MISC.GitLabConfig)),
338
- __metadata("design:paramtypes", [Object])
339
- ], GitLabApiClient);
340
- return GitLabApiClient;
341
- }());
342
- exports.GitLabApiClient = GitLabApiClient;
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./CommandTypeMapping.js"), exports);
18
- __exportStar(require("./MonorepoPackageJsonFiles.js"), exports);