Commit d65d1120 authored by Adrian DC's avatar Adrian DC
Browse files

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

Signed-off-by: default avatarAdrian DC <radian.dc@gmail.com>
parent 13f150d5
Loading
Loading
Loading
Loading
+2 −0
Changes for README.md: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -59,6 +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]]
                                [--erase-jobs-artifacts | --erase-jobs-contents]
                                [--get-group-labels | --set-group-labels JSON]
                                [--get-project-labels | --set-project-labels JSON] [--]
@@ -112,6 +113,7 @@ merge requests settings arguments:
  --set-merge-method [METHOD]       # Set project merge requests method (Merge, Semi-linear, Fast-forward, default: Fast-forward)
  --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)

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,
    MergeRequestsSkipped,
    MergeRequestsSquash,
    ProjectFeatures,
)
@@ -637,6 +638,18 @@ class Entrypoint:
                  f'{Colors.RESET}')
            Platform.flush()

        # Set project merge skipped
        if options.set_merge_skipped is not None:
            gitlab.project_set_attribute(
                criteria,
                MergeRequestsSkipped.ATTRIBUTE,
                options.set_merge_skipped,
            )
            print(f'{Colors.BOLD}   - Set merge skipped: '
                  f'{Colors.CYAN}{str(options.set_merge_skipped).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
@@ -323,6 +323,16 @@ def main() -> None:
        help='Set project merge requests check for successful pipelines'
        ' (true, false, default: %(const)s)',
    )
    group.add_argument(
        '--set-merge-skipped',
        dest='set_merge_skipped',
        metavar='CHECK',
        nargs='?',
        type=lambda x: (str(x).lower() in ('true', 't', 'yes', 'y', 'on', '1')),
        const=MergeRequestsSkipped.DEFAULT,
        help='Set project merge requests check for skipped pipelines'
        ' (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
@@ -40,6 +40,11 @@ class MergeRequestsSquash:
        'Require': 'default_on',
    }

# MergeRequestsSkipped class
class MergeRequestsSkipped:
    ATTRIBUTE: str = 'allow_merge_on_skipped_pipeline'
    DEFAULT: bool = True

# ProtectionLevels class
class ProtectionLevels:
    NO_ONE: str = 'no-one'