azure-devops/azext_devops/dev/repos/arguments.py (132 lines of code) (raw):

# -------------------------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for license information. # -------------------------------------------------------------------------------------------- from knack.arguments import enum_choice_list from azure.cli.core.commands.parameters import get_enum_type, get_three_state_flag # CUSTOM CHOICE LISTS _BRANCH_MATCH_KIND_VALUES = ['prefix', 'exact'] _VOTE_VALUES = ['approve', 'approve-with-suggestions', 'reset', 'wait-for-author', 'reject'] _PR_STATUS_VALUES = ['all', 'active', 'completed', 'abandoned'] _PR_TARGET_STATUS_VALUES = ['active', 'completed', 'abandoned'] # pylint: disable=too-many-statements def load_code_arguments(self, _): with self.argument_context('repos') as context: context.argument('repository', options_list=('--repository', '-r')) context.argument('reviewers', nargs='*') with self.argument_context('repos policy') as context: context.argument('policy_configuration', options_list=('--policy-configuration', '--config'), help='Local file path for configuration file. ' + 'Please use \\backslash when typing in directory path.') context.argument('policy_id', options_list=('--policy-id', '--id'), help='ID of the policy.') context.argument('repository_id', help='Id of the repository on which to apply the policy') context.argument('branch', help='Branch on which this policy should be applied. For example: master') context.argument('branch_match_type', arg_type=get_enum_type(_BRANCH_MATCH_KIND_VALUES), help='Determines how the branch argument is used to apply a policy. ' + 'If value is \'exact\', the policy will be applied on a branch which has an ' + 'exact match on the --branch argument. ' + 'If value is \'prefix\' the policy is applied across all branch folders that ' + 'match the prefix provided by the --branch argument.') context.argument('blocking', arg_type=get_three_state_flag(), help='Whether the policy should be blocking or not') context.argument('enabled', arg_type=get_three_state_flag(), help='Whether the policy is enabled or not') context.argument('path_filter', help='Filter path(s) on which the policy is applied. ' + 'Supports absolute paths, wildcards and multiple paths separated by \';\'. ' + 'Example: /WebApp/Models/Data.cs, /WebApp/* or *.cs,' + '/WebApp/Models/Data.cs;ClientApp/Models/Data.cs') with self.argument_context('repos policy list') as context: context.argument('branch', help='Branch name to filter results by exact match of branch name. ' + 'The --repository-id parameter is required to use the branch filter. ' + 'For example: --branch master') context.argument('repository_id', help='ID of the repository to filter results by exact match of the repository ID. ' + 'For example --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345') with self.argument_context('repos policy approver-count') as context: context.argument('minimum_approver_count', help='Minimum number of approvers required. For example: 2') context.argument('creator_vote_counts', arg_type=get_three_state_flag(), help='Whether the creator\'s vote counts or not.') context.argument('allow_downvotes', arg_type=get_three_state_flag(), help='Whether to allow downvotes or not.') context.argument('reset_on_source_push', arg_type=get_three_state_flag(), help='Whether to reset source on push.') with self.argument_context('repos policy merge-strategy') as context: context.argument('use_squash_merge', arg_type=get_three_state_flag(), help='Whether to squash merge always. ' 'This option does not work for allowing other merge types.', deprecate_info=context.deprecate(redirect='--allow-squash', target='--use-squash-merge', hide=True)) context.argument('allow_squash', arg_type=get_three_state_flag(), help='Squash merge - Creates a linear history by condensing the source branch commits ' 'into a single new commit on the target branch.') context.argument('allow_rebase', arg_type=get_three_state_flag(), help='Rebase and fast-forward - Creates a linear history by replaying the source branch ' 'commits onto the target without a merge commit.') context.argument('allow_no_fast_forward', arg_type=get_three_state_flag(), help='Basic merge (no fast-forward) - Preserves nonlinear history exactly as it happened ' 'during development.') context.argument('allow_rebase_merge', arg_type=get_three_state_flag(), help='Rebase with merge commit - Creates a semi-linear history by replaying the source ' 'branch commits onto the target and then creating a merge commit.') with self.argument_context('repos policy build') as context: context.argument('build_definition_id', help='Build Definition Id.') context.argument('queue_on_source_update_only', arg_type=get_three_state_flag(), help='Queue Only on source update.') context.argument('manual_queue_only', arg_type=get_three_state_flag(), help='Whether to allow only manual queue of builds.') context.argument('display_name', help='Display name for this build policy to identify the policy. ' + 'For example: \'Manual queue policy\'') context.argument('valid_duration', help='Policy validity duration (in minutes).') with self.argument_context('repos policy file-size') as context: context.argument('maximum_git_blob_size', help='Maximum git blob size in bytes. ' + 'For example, to specify a 10byte limit, --maximum-git-blob-size 10.') context.argument('use_uncompressed_size', arg_type=get_three_state_flag(), help='Whether to use uncompressed size.') with self.argument_context('repos policy required-reviewer') as context: context.argument('required_reviewer_ids', help='Required reviewers email addresses separated by \';\'. ' + 'For example: john@contoso.com;alice@contoso.com') context.argument('message', help='Message.') with self.argument_context('repos pr') as context: context.argument('description', type=str, options_list=('--description', '-d'), nargs='*') context.argument('source_branch', options_list=('--source-branch', '-s')) context.argument('target_branch', options_list=('--target-branch', '-t')) context.argument('title', type=str) with self.argument_context('repos pr create') as context: context.argument('work_items', nargs='*') context.argument('draft', arg_type=get_three_state_flag()) context.argument('auto_complete', arg_type=get_three_state_flag()) context.argument('squash', arg_type=get_three_state_flag()) context.argument('delete_source_branch', arg_type=get_three_state_flag()) context.argument('bypass_policy', arg_type=get_three_state_flag()) context.argument('transition_work_items', arg_type=get_three_state_flag()) context.argument('optional_reviewers', options_list=('--reviewers', '--optional-reviewers'), nargs='+') context.argument('required_reviewers', nargs='+') with self.argument_context('repos pr list') as context: context.argument('status', **enum_choice_list(_PR_STATUS_VALUES)) with self.argument_context('repos pr reviewer') as context: context.argument('reviewers', nargs='+') with self.argument_context('repos pr reviewer add') as context: context.argument('required', arg_type=get_three_state_flag()) with self.argument_context('repos pr work-item') as context: context.argument('work_items', nargs='+') with self.argument_context('repos pr update') as context: context.argument('auto_complete', arg_type=get_three_state_flag()) context.argument('squash', arg_type=get_three_state_flag()) context.argument('delete_source_branch', arg_type=get_three_state_flag()) context.argument('bypass_policy', arg_type=get_three_state_flag()) context.argument('transition_work_items', arg_type=get_three_state_flag()) context.argument('draft', arg_type=get_three_state_flag()) context.argument('status', **enum_choice_list(_PR_TARGET_STATUS_VALUES)) with self.argument_context('repos pr policy') as context: context.argument('evaluation_id', options_list=('--evaluation-id', '-e')) with self.argument_context('repos pr set-vote') as context: context.argument('vote', **enum_choice_list(_VOTE_VALUES)) with self.argument_context('repos delete') as context: context.argument('yes', options_list=['--yes', '-y'], action='store_true', help='Do not prompt for confirmation.') with self.argument_context('repos import create') as context: context.argument('git_source_url', options_list=('--git-source-url', '--git-url')) with self.argument_context('repos ref') as context: context.argument('repository', options_list=('--repository', '-r')) context.argument('object_id', options_list=('--object-id'))