Commit 13f150d5 authored by Adrian DC's avatar Adrian DC
Browse files

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

Signed-off-by: default avatarAdrian DC <radian.dc@gmail.com>
parent 6d500735
Loading
Loading
Loading
Loading
+2 −1
Changes for README.md: 2 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@ usage: gitlab-projects-settings [-h] [--version] [--update-check] [--settings] [
                                [--run-housekeeping] [--prune-unreachable-objects]
                                [--archive-project | --unarchive-project] [--delete-group] [--delete-project]
                                [--protect-branches] [--protect-tags [LEVEL]] [--set-merge-method [METHOD]]
                                [--set-merge-squash [SQUASH]]
                                [--set-merge-squash [SQUASH]] [--set-merge-pipelines [CHECK]]
                                [--erase-jobs-artifacts | --erase-jobs-contents]
                                [--get-group-labels | --set-group-labels JSON]
                                [--get-project-labels | --set-project-labels JSON] [--]
@@ -111,6 +111,7 @@ repository settings arguments:
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)

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
@@ -25,6 +25,7 @@ from ..system.platform import Platform
from ..types.environments import Environments
from ..types.gitlab import (
    MergeRequestsMethod,
    MergeRequestsPipelines,
    MergeRequestsSquash,
    ProjectFeatures,
)
@@ -624,6 +625,18 @@ class Entrypoint:
                  f'{Colors.RESET}')
            Platform.flush()

        # Set project merge pipelines
        if options.set_merge_pipelines is not None:
            gitlab.project_set_attribute(
                criteria,
                MergeRequestsPipelines.ATTRIBUTE,
                options.set_merge_pipelines,
            )
            print(f'{Colors.BOLD}   - Set merge pipelines: '
                  f'{Colors.CYAN}{str(options.set_merge_pipelines).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
@@ -313,6 +313,16 @@ def main() -> None:
        help='Set project merge requests squashing'
        f' ({", ".join(MergeRequestsSquash.VALUES.keys())}, default: %(const)s)',
    )
    group.add_argument(
        '--set-merge-pipelines',
        dest='set_merge_pipelines',
        metavar='CHECK',
        nargs='?',
        type=lambda x: (str(x).lower() in ('true', 't', 'yes', 'y', 'on', '1')),
        const=MergeRequestsPipelines.DEFAULT,
        help='Set project merge requests check for successful 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
@@ -24,6 +24,11 @@ class MergeRequestsMethod:
        'Fast-forward': 'ff',
    }

# MergeRequestsPipelines class
class MergeRequestsPipelines:
    ATTRIBUTE: str = 'only_allow_merge_if_pipeline_succeeds'
    DEFAULT: bool = True

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