|
41 | 41 | 'blob': {'required': ['id', 'project-id',
|
42 | 42 | 'filepath']},
|
43 | 43 | 'builds': {'required': ['id', 'project-id']}},
|
| 44 | + gitlab.ProjectMergeRequest: { |
| 45 | + 'merge': {'required': ['id', 'project-id'], |
| 46 | + 'optional': ['merge-commit-message', |
| 47 | + 'should-remove-source-branch', |
| 48 | + 'merged-when-build-succeeds']} |
| 49 | + }, |
44 | 50 | gitlab.ProjectMilestone: {'issues': {'required': ['id', 'project-id']}},
|
45 | 51 | gitlab.Project: {'search': {'required': ['query']},
|
46 | 52 | 'owned': {},
|
@@ -217,6 +223,18 @@ def do_project_build_retry(self, cls, gl, what, args):
|
217 | 223 | except Exception as e:
|
218 | 224 | _die("Impossible to retry project build (%s)" % str(e))
|
219 | 225 |
|
| 226 | + def do_project_merge_request_merge(self, cls, gl, what, args): |
| 227 | + try: |
| 228 | + o = self.do_get(cls, gl, what, args) |
| 229 | + should_remove = args['should_remove_source_branch'] |
| 230 | + build_succeeds = args['merged_when_build_succeeds'] |
| 231 | + return o.merge( |
| 232 | + merge_commit_message=args['merge_commit_message'], |
| 233 | + should_remove_source_branch=should_remove, |
| 234 | + merged_when_build_succeeds=build_succeeds) |
| 235 | + except Exception as e: |
| 236 | + _die("Impossible to validate merge request (%s)" % str(e)) |
| 237 | + |
220 | 238 | def do_project_milestone_issues(self, cls, gl, what, args):
|
221 | 239 | try:
|
222 | 240 | o = self.do_get(cls, gl, what, args)
|
@@ -298,6 +316,8 @@ def _populate_sub_parser_by_class(cls, sub_parser):
|
298 | 316 | d = EXTRA_ACTIONS[cls][action_name]
|
299 | 317 | [sub_parser_action.add_argument("--%s" % arg, required=True)
|
300 | 318 | for arg in d.get('required', [])]
|
| 319 | + [sub_parser_action.add_argument("--%s" % arg, required=False) |
| 320 | + for arg in d.get('optional', [])] |
301 | 321 |
|
302 | 322 |
|
303 | 323 | def _build_parser(args=sys.argv[1:]):
|
|
0 commit comments