Loading README.md +4 −1 Changes for README.md: 4 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -57,7 +57,7 @@ usage: gitlab-projects-settings [-h] [--version] [--update-check] [--settings] [ [--set-avatar FILE] [--set-description TEXT] [--update-description] [--run-housekeeping] [--prune-unreachable-objects] [--archive-project | --unarchive-project] [--delete-group] [--delete-project] [--protect-branches] [--protect-tags [LEVEL]] [--protect-branches] [--protect-tags [LEVEL]] [--set-merge-method [METHOD]] [--erase-jobs-artifacts | --erase-jobs-contents] [--get-group-labels | --set-group-labels JSON] [--get-project-labels | --set-project-labels JSON] [--] Loading Loading @@ -107,6 +107,9 @@ repository settings arguments: --protect-branches # Protect branches with default master/main, develop and staging --protect-tags [LEVEL] # Protect tags at level [no-one,admins,maintainers,developers] (default: no-one) merge requests settings arguments: --set-merge-method [METHOD] # Set project merge requests method (Merge, Semi-linear, Fast-forward, default: Fast-forward) ci/cd settings arguments: --erase-jobs-artifacts # Erase all CI/CD jobs artifacts --erase-jobs-contents # Erase all CI/CD jobs artifacts and traces Loading src/cli/entrypoint.py +16 −1 Changes for src/cli/entrypoint.py: 16 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -23,7 +23,10 @@ from ..prints.colors import Colors from ..prints.themes import Themes from ..system.platform import Platform from ..types.environments import Environments from ..types.gitlab import ProjectFeatures from ..types.gitlab import ( MergeRequestsMethod, ProjectFeatures, ) from ..types.namespaces import Namespaces # Entrypoint class, pylint: disable=too-few-public-methods Loading Loading @@ -596,6 +599,18 @@ class Entrypoint: f'{Colors.RESET}') Platform.flush() # Set project merge method if options.set_merge_method is not None: gitlab.project_set_attribute( criteria, MergeRequestsMethod.ATTRIBUTE, MergeRequestsMethod.VALUES[options.set_merge_method], ) print(f'{Colors.BOLD} - Set merge method: ' f'{Colors.CYAN}{options.set_merge_method}' f'{Colors.RESET}') Platform.flush() # Erase project jobs artifacts and traces if options.erase_jobs_contents: gitlab.project_erase_jobs_contents(criteria) Loading src/cli/main.py +31 −1 Changes for src/cli/main.py: 31 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -19,12 +19,23 @@ from ..package.version import Version from ..prints.colors import Colors from ..system.platform import Platform from ..types.environments import Environments from ..types.gitlab import ProtectionLevels from ..types.gitlab import ( MergeRequestsMethod, MergeRequestsPipelines, MergeRequestsResolved, MergeRequestsSkipped, MergeRequestsSquash, ProtectionLevels, ) from .entrypoint import Entrypoint # Constants HELP_POSITION: int = 36 # Exception def exception(error: BaseException) -> None: raise error # Main, pylint: disable=too-many-branches,too-many-statements def main() -> None: Loading Loading @@ -268,6 +279,25 @@ def main() -> None: ' (default: %(const)s)', ) # Arguments merge requests settings definitions group = parser.add_argument_group('merge requests settings arguments') group.add_argument( '--set-merge-method', dest='set_merge_method', metavar='METHOD', nargs='?', type=lambda value: ( value if value in MergeRequestsMethod.VALUES # Keys else [key for key, _val in MergeRequestsMethod.VALUES.items() if _val == value][0] if value in MergeRequestsMethod.VALUES.values() # Values else exception(ValueError(value)) # Unknown ), const=MergeRequestsMethod.DEFAULT, help='Set project merge requests method' f' ({", ".join(MergeRequestsMethod.VALUES.keys())}, default: %(const)s)', ) # Arguments CI/CD settings definitions group = parser.add_argument_group('ci/cd settings arguments') subgroup = group.add_mutually_exclusive_group() Loading src/features/gitlab.py +16 −0 Changes for src/features/gitlab.py: 16 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -562,6 +562,22 @@ class GitLabFeature: elif not self.__dry_run: project.unarchive() # Project set attribute def project_set_attribute( self, criteria: str, name: str, value: Union[bool, str], ) -> None: # Set project attribute project = self.project(criteria) if not self.__dry_run: setattr(project, name, value) # Save project project.save() # Project set avatar def project_set_avatar(self, criteria: str, file: str) -> None: Loading src/types/gitlab.py +10 −0 Changes for src/types/gitlab.py: 10 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -14,6 +14,16 @@ class AccessLevels: PRIVATE: str = 'private' ENABLED: str = 'enabled' # MergeRequestsMethod class class MergeRequestsMethod: ATTRIBUTE: str = 'merge_method' DEFAULT: str = 'Fast-forward' VALUES: Dict[str, str] = { 'Merge': 'merge', 'Semi-linear': 'rebase_merge', 'Fast-forward': 'ff', } # ProtectionLevels class class ProtectionLevels: NO_ONE: str = 'no-one' Loading Loading
README.md +4 −1 Changes for README.md: 4 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -57,7 +57,7 @@ usage: gitlab-projects-settings [-h] [--version] [--update-check] [--settings] [ [--set-avatar FILE] [--set-description TEXT] [--update-description] [--run-housekeeping] [--prune-unreachable-objects] [--archive-project | --unarchive-project] [--delete-group] [--delete-project] [--protect-branches] [--protect-tags [LEVEL]] [--protect-branches] [--protect-tags [LEVEL]] [--set-merge-method [METHOD]] [--erase-jobs-artifacts | --erase-jobs-contents] [--get-group-labels | --set-group-labels JSON] [--get-project-labels | --set-project-labels JSON] [--] Loading Loading @@ -107,6 +107,9 @@ repository settings arguments: --protect-branches # Protect branches with default master/main, develop and staging --protect-tags [LEVEL] # Protect tags at level [no-one,admins,maintainers,developers] (default: no-one) merge requests settings arguments: --set-merge-method [METHOD] # Set project merge requests method (Merge, Semi-linear, Fast-forward, default: Fast-forward) ci/cd settings arguments: --erase-jobs-artifacts # Erase all CI/CD jobs artifacts --erase-jobs-contents # Erase all CI/CD jobs artifacts and traces Loading
src/cli/entrypoint.py +16 −1 Changes for src/cli/entrypoint.py: 16 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -23,7 +23,10 @@ from ..prints.colors import Colors from ..prints.themes import Themes from ..system.platform import Platform from ..types.environments import Environments from ..types.gitlab import ProjectFeatures from ..types.gitlab import ( MergeRequestsMethod, ProjectFeatures, ) from ..types.namespaces import Namespaces # Entrypoint class, pylint: disable=too-few-public-methods Loading Loading @@ -596,6 +599,18 @@ class Entrypoint: f'{Colors.RESET}') Platform.flush() # Set project merge method if options.set_merge_method is not None: gitlab.project_set_attribute( criteria, MergeRequestsMethod.ATTRIBUTE, MergeRequestsMethod.VALUES[options.set_merge_method], ) print(f'{Colors.BOLD} - Set merge method: ' f'{Colors.CYAN}{options.set_merge_method}' f'{Colors.RESET}') Platform.flush() # Erase project jobs artifacts and traces if options.erase_jobs_contents: gitlab.project_erase_jobs_contents(criteria) Loading
src/cli/main.py +31 −1 Changes for src/cli/main.py: 31 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -19,12 +19,23 @@ from ..package.version import Version from ..prints.colors import Colors from ..system.platform import Platform from ..types.environments import Environments from ..types.gitlab import ProtectionLevels from ..types.gitlab import ( MergeRequestsMethod, MergeRequestsPipelines, MergeRequestsResolved, MergeRequestsSkipped, MergeRequestsSquash, ProtectionLevels, ) from .entrypoint import Entrypoint # Constants HELP_POSITION: int = 36 # Exception def exception(error: BaseException) -> None: raise error # Main, pylint: disable=too-many-branches,too-many-statements def main() -> None: Loading Loading @@ -268,6 +279,25 @@ def main() -> None: ' (default: %(const)s)', ) # Arguments merge requests settings definitions group = parser.add_argument_group('merge requests settings arguments') group.add_argument( '--set-merge-method', dest='set_merge_method', metavar='METHOD', nargs='?', type=lambda value: ( value if value in MergeRequestsMethod.VALUES # Keys else [key for key, _val in MergeRequestsMethod.VALUES.items() if _val == value][0] if value in MergeRequestsMethod.VALUES.values() # Values else exception(ValueError(value)) # Unknown ), const=MergeRequestsMethod.DEFAULT, help='Set project merge requests method' f' ({", ".join(MergeRequestsMethod.VALUES.keys())}, default: %(const)s)', ) # Arguments CI/CD settings definitions group = parser.add_argument_group('ci/cd settings arguments') subgroup = group.add_mutually_exclusive_group() Loading
src/features/gitlab.py +16 −0 Changes for src/features/gitlab.py: 16 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -562,6 +562,22 @@ class GitLabFeature: elif not self.__dry_run: project.unarchive() # Project set attribute def project_set_attribute( self, criteria: str, name: str, value: Union[bool, str], ) -> None: # Set project attribute project = self.project(criteria) if not self.__dry_run: setattr(project, name, value) # Save project project.save() # Project set avatar def project_set_avatar(self, criteria: str, file: str) -> None: Loading
src/types/gitlab.py +10 −0 Changes for src/types/gitlab.py: 10 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -14,6 +14,16 @@ class AccessLevels: PRIVATE: str = 'private' ENABLED: str = 'enabled' # MergeRequestsMethod class class MergeRequestsMethod: ATTRIBUTE: str = 'merge_method' DEFAULT: str = 'Fast-forward' VALUES: Dict[str, str] = { 'Merge': 'merge', 'Semi-linear': 'rebase_merge', 'Fast-forward': 'ff', } # ProtectionLevels class class ProtectionLevels: NO_ONE: str = 'no-one' Loading