Commit 9d3c51ca authored by Adrian DC's avatar Adrian DC
Browse files

feat(cli, gtlab): implement '--set-merge-resolved' for merge requests

Signed-off-by: default avatarAdrian DC <radian.dc@gmail.com>
parent d65d1120
Loading
Loading
Loading
Loading
Loading
+2 −1
Changes for README.md: 2 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -59,7 +59,7 @@ usage: gitlab-projects-settings [-h] [--version] [--update-check] [--settings] [
                                [--archive-project | --unarchive-project] [--delete-group] [--delete-project]
                                [--protect-branches] [--protect-tags [LEVEL]] [--set-merge-method [METHOD]]
                                [--set-merge-squash [SQUASH]] [--set-merge-pipelines [CHECK]]
                                [--set-merge-skipped [CHECK]]
                                [--set-merge-skipped [CHECK]] [--set-merge-resolved [CHECK]]
                                [--erase-jobs-artifacts | --erase-jobs-contents]
                                [--get-group-labels | --set-group-labels JSON]
                                [--get-project-labels | --set-project-labels JSON] [--]
@@ -114,6 +114,7 @@ merge requests settings arguments:
  --set-merge-squash [SQUASH]       # Set project merge requests squashing (Do not allow, Allow, Encourage, Require, default: Allow)
  --set-merge-pipelines [CHECK]     # Set project merge requests check for successful pipelines (true, false, default: True)
  --set-merge-skipped [CHECK]       # Set project merge requests check for skipped pipelines (true, false, default: True)
  --set-merge-resolved [CHECK]      # Set project merge requests check for resolved threads (true, false, default: True)

ci/cd settings arguments:
  --erase-jobs-artifacts            # Erase all CI/CD jobs artifacts
+13 −0
Changes for src/cli/entrypoint.py: 13 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ from ..types.environments import Environments
from ..types.gitlab import (
    MergeRequestsMethod,
    MergeRequestsPipelines,
    MergeRequestsResolved,
    MergeRequestsSkipped,
    MergeRequestsSquash,
    ProjectFeatures,
@@ -650,6 +651,18 @@ class Entrypoint:
                  f'{Colors.RESET}')
            Platform.flush()

        # Set project merge resolved
        if options.set_merge_resolved is not None:
            gitlab.project_set_attribute(
                criteria,
                MergeRequestsResolved.ATTRIBUTE,
                options.set_merge_resolved,
            )
            print(f'{Colors.BOLD}   - Set merge method: '
                  f'{Colors.CYAN}{str(options.set_merge_resolved).lower()}'
                  f'{Colors.RESET}')
            Platform.flush()

        # Erase project jobs artifacts and traces
        if options.erase_jobs_contents:
            gitlab.project_erase_jobs_contents(criteria)
+10 −0
Changes for src/cli/main.py: 10 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -333,6 +333,16 @@ def main() -> None:
        help='Set project merge requests check for skipped pipelines'
        ' (true, false, default: %(const)s)',
    )
    group.add_argument(
        '--set-merge-resolved',
        dest='set_merge_resolved',
        metavar='CHECK',
        nargs='?',
        type=lambda x: (str(x).lower() in ('true', 't', 'yes', 'y', 'on', '1')),
        const=MergeRequestsResolved.DEFAULT,
        help='Set project merge requests check for resolved threads'
        ' (true, false, default: %(const)s)',
    )

    # Arguments CI/CD settings definitions
    group = parser.add_argument_group('ci/cd settings arguments')
+5 −0
Changes for src/types/gitlab.py: 5 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -29,6 +29,11 @@ class MergeRequestsPipelines:
    ATTRIBUTE: str = 'only_allow_merge_if_pipeline_succeeds'
    DEFAULT: bool = True

# MergeRequestsResolved class
class MergeRequestsResolved:
    ATTRIBUTE: str = 'only_allow_merge_if_all_discussions_are_resolved'
    DEFAULT: bool = True

# MergeRequestsSquash class
class MergeRequestsSquash:
    ATTRIBUTE: str = 'squash_option'