azure-devops/azext_devops/dev/team/arguments.py (149 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
from azext_devops.dev.common.utils import FILE_ENCODING_TYPES
# CUSTOM CHOICE LISTS
_SOURCE_CONTROL_VALUES = ['git', 'tfvc']
_WIKI_TYPE_VALUES = ['projectwiki', 'codewiki']
_SCOPE_VALUES = ['project', 'organization']
_PROJECT_VISIBILITY_VALUES = ['private', 'public']
_STATE_VALUES = ['invalid', 'unchanged', 'all', 'new', 'wellformed', 'deleting', 'createpending']
_PROJECT_GET_STATE_VALUE_FILTER = ['all', 'createPending', 'deleted', 'deleting', 'new', 'unchanged', 'wellFormed']
_HTTP_METHOD_VALUES = ['GET', 'POST', 'PATCH', 'DELETE', 'OPTIONS', 'PUT', 'HEAD']
_LICENSE_TYPES = ['advanced', 'earlyAdopter', 'express', 'professional', 'stakeholder']
_RELATIONSHIP_TYPES = ['members', 'memberof']
_FILE_ENCODING_TYPE_VALUES = FILE_ENCODING_TYPES
def load_global_args(context):
context.argument('organization', options_list=('--organization', '--org'),
help='Azure DevOps organization URL. You can configure the default organization using '
'az devops configure -d organization=ORG_URL. Required if not configured as '
'default or picked up via git config. Example: https://dev.azure.com/MyOrganizationName/')
context.argument('detect', arg_type=get_three_state_flag(),
help='Automatically detect organization.')
context.argument('project', options_list=('--project', '-p'),
help='Name or ID of the project. You can configure the default project using '
'az devops configure -d project=NAME_OR_ID. Required if not configured as '
'default or picked up via git config.')
# pylint: disable=too-many-statements
def load_team_arguments(self, _):
with self.argument_context('devops login') as context:
context.argument('organization',
help='Azure DevOps organization URL. Example: https://dev.azure.com/MyOrganizationName')
with self.argument_context('devops logout') as context:
context.argument('organization',
help='Azure DevOps organization URL. Example: https://dev.azure.com/MyOrganizationName/. '
'If no organization is specified, all organizations will be logged out.')
with self.argument_context('devops configure') as context:
context.argument('defaults', options_list=('--defaults', '-d'), nargs='*')
context.argument('use_git_aliases', arg_type=get_three_state_flag())
context.argument('list_config', options_list=('--list', '-l'))
with self.argument_context('devops') as context:
context.argument('repository', options_list=('--repository', '-r'))
with self.argument_context('devops project') as context:
context.argument('process', options_list=('--process', '-p'))
context.argument('source_control', options_list=('--source-control', '-s'),
**enum_choice_list(_SOURCE_CONTROL_VALUES))
context.argument('description', options_list=('--description', '-d'))
context.argument('state', **enum_choice_list(_STATE_VALUES))
context.argument('visibility', **enum_choice_list(_PROJECT_VISIBILITY_VALUES))
with self.argument_context('devops project delete') as context:
context.argument('yes', options_list=['--yes', '-y'], action='store_true',
help='Do not prompt for confirmation.')
with self.argument_context('devops project list') as context:
context.argument('state_filter', arg_type=get_enum_type(_PROJECT_GET_STATE_VALUE_FILTER),
help='State filter.')
context.argument('continuation_token',
help='Continuation token. '
'This can be retrived from previous run of this command if more results are present.')
context.argument('get_default_team_image_url', arg_type=get_three_state_flag(),
help='Whether to get default team image url or not.')
with self.argument_context('devops service-endpoint create') as context:
context.argument('encoding',
help='Encoding of the input file.',
**enum_choice_list(_FILE_ENCODING_TYPE_VALUES))
with self.argument_context('devops service-endpoint update') as context:
context.argument('enable_for_all',
help='Allow all pipelines to access this service endpoint.',
arg_type=get_three_state_flag())
with self.argument_context('devops invoke') as context:
context.argument('route_parameters', nargs='*',
help='Specifies the list of route parameters')
context.argument('query_parameters', nargs='*',
help='Specifies the list of query parameters')
context.argument('http_method', arg_type=get_enum_type(_HTTP_METHOD_VALUES),
help='Specifies the method used for the request.')
context.argument('media_type',
help='Specifies the content type of the request.')
context.argument('accept_media_type',
help='Specifies the content type of the response.')
context.argument('in_file',
help='Path and file name to the file that contains the contents of the request.')
context.argument('encoding',
help='Encoding of the input file. Used in conjunction with --in-file.',
**enum_choice_list(_FILE_ENCODING_TYPE_VALUES))
context.argument('out_file',
help='Path and file name to the file for which this function saves the response body.')
context.argument('area',
help='The area to find the resource.')
context.argument('resource',
help='The name of the resource to operate on.')
context.argument('api_version',
help='The version of the API to target')
with self.argument_context('devops user') as context:
context.argument('license_type', arg_type=get_enum_type(_LICENSE_TYPES))
with self.argument_context('devops user add') as context:
context.argument('send_email_invite', arg_type=get_three_state_flag(),
help='Whether to send email invite for new user or not.')
with self.argument_context('devops security group create') as context:
context.argument('project',
help='Name or ID of the project in which Azure DevOps group should be created.')
context.argument('scope', **enum_choice_list(_SCOPE_VALUES))
with self.argument_context('devops security group list') as context:
context.argument('project',
help='List groups for a particular project')
context.argument('scope', **enum_choice_list(_SCOPE_VALUES))
with self.argument_context('devops security group membership') as context:
context.argument('relationship', arg_type=get_enum_type(_RELATIONSHIP_TYPES),
help='Get member of/members for this group.')
with self.argument_context('devops security permission') as context:
context.argument('namespace_id', options_list=('--namespace-id', '--id'),
help='ID of security namespace')
context.argument('token',
help='Security token.')
context.argument('subject',
help='User Email ID or Group descriptor')
with self.argument_context('devops security permission update') as context:
context.argument('merge', arg_type=get_three_state_flag(),
help='If set, the existing ACE has its allow and deny merged with \
the incoming ACE\'s allow and deny. If unset, the existing ACE is displaced.')
context.argument('allow_bit', type=int,
help='Allow bit or addition of bits. Required if --deny-bit is missing.')
context.argument('deny_bit', type=int,
help='Deny bit or addition of bits. Required if --allow-bit is missing.')
with self.argument_context('devops security permission reset') as context:
context.argument('permission_bit', type=int,
help='Permission bit or addition of permission bits which needs to be reset\
for given user/group and token.')
with self.argument_context('devops extension') as context:
context.argument('include_built_in', arg_type=get_three_state_flag(),
help='Include built in extensions.')
context.argument('include_disabled', arg_type=get_three_state_flag(),
help='Include disabled extensions.')
context.argument('publisher_id', help='Publisher Id. This will map to publisher-name \
in the az devops extension search output. ')
context.argument('extension_id', help='Extension Id. This will map to extension-name \
in the az devops extension search output.')
context.argument('search_query', options_list=('--search-query', '-q'), help='Search term')
with self.argument_context('devops') as context:
load_global_args(context)
with self.argument_context('repos') as context:
load_global_args(context)
with self.argument_context('artifacts') as context:
load_global_args(context)
with self.argument_context('boards') as context:
load_global_args(context)
with self.argument_context('pipelines') as context:
load_global_args(context)
with self.argument_context('devops wiki') as context:
context.argument('wiki_type', options_list=('--wiki-type', '--type'), **enum_choice_list(_WIKI_TYPE_VALUES))
context.argument('version', options_list=('--version', '-v'))
context.argument('encoding', **enum_choice_list(_FILE_ENCODING_TYPE_VALUES))
with self.argument_context('devops wiki list') as context:
context.argument('scope', **enum_choice_list(_SCOPE_VALUES))