# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
#
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# --------------------------------------------------------------------------
# pylint: disable=too-many-lines
# pylint: disable=too-many-statements

from azure.cli.core.commands.parameters import (
    tags_type,
    get_enum_type,
    resource_group_name_type,
    get_location_type
)
from azure.cli.core.commands.validators import (
    get_default_location_from_resource_group,
    validate_file_or_dict
)
from azext_datashare.action import (
    AddAdlsGen2FileDataSetMapping,
    AddAdlsGen2FileSystemDataSetMapping,
    AddAdlsGen2FolderDataSetMapping,
    AddBlobContainerDataSetMapping,
    AddBlobDataSetMapping,
    AddBlobFolderDataSetMapping,
    AddKustoClusterDataSetMapping,
    AddKustoDatabaseDataSetMapping,
    AddKustoTableDataSetMapping,
    AddSqldbTableDataSetMapping,
    AddSqldwTableDataSetMapping,
    AddSynapseWorkspaceSqlPoolTableDataSetMapping,
    AddScheduledSynchronizationSetting,
    AddScheduledTrigger
)


def load_arguments(self, _):

    with self.argument_context('datashare account list') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('skip_token', type=str, help='Continuation token')

    with self.argument_context('datashare account show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', options_list=['--name', '-n', '--account-name'], type=str, help='The name of the '
                   'share account.', id_part='name')

    with self.argument_context('datashare account create') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', options_list=['--name', '-n', '--account-name'], type=str, help='The name of the '
                   'share account.')
        c.argument('location', arg_type=get_location_type(self.cli_ctx), required=False,
                   validator=get_default_location_from_resource_group)
        c.argument('tags', tags_type)

    with self.argument_context('datashare account update') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', options_list=['--name', '-n', '--account-name'], type=str, help='The name of the '
                   'share account.', id_part='name')
        c.argument('tags', tags_type)

    with self.argument_context('datashare account delete') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', options_list=['--name', '-n', '--account-name'], type=str, help='The name of the '
                   'share account.', id_part='name')

    with self.argument_context('datashare account wait') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', options_list=['--name', '-n', '--account-name'], type=str, help='The name of the '
                   'share account.', id_part='name')

    with self.argument_context('datashare consumer-invitation show') as c:
        c.argument('location', arg_type=get_location_type(self.cli_ctx))
        c.argument('invitation_id', type=str, help='An invitation id')

    with self.argument_context('datashare consumer-invitation list-invitation') as c:
        c.argument('skip_token', type=str, help='The continuation token')

    with self.argument_context('datashare consumer-invitation reject-invitation') as c:
        c.argument('location', arg_type=get_location_type(self.cli_ctx))
        c.argument('invitation_id', type=str, help='Unique id of the invitation.')

    with self.argument_context('datashare data-set list') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('share_name', type=str, help='The name of the share.')
        c.argument('skip_token', type=str, help='continuation token')
        c.argument('filter_', options_list=['--filter'], type=str, help='Filters the results using OData syntax.')
        c.argument('orderby', type=str, help='Sorts the results using OData syntax.')

    with self.argument_context('datashare data-set show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_name', type=str, help='The name of the share.', id_part='child_name_1')
        c.argument('data_set_name', options_list=['--name', '-n', '--data-set-name'], type=str, help='The name of the '
                   'dataSet.', id_part='child_name_2')

    with self.argument_context('datashare data-set create') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('share_name', type=str, help='The name of the share to add the data set to.')
        c.argument('data_set_name', options_list=['--name', '-n', '--data-set-name'], type=str, help='The name of the '
                   'dataSet.')
        c.argument('data_set', type=validate_file_or_dict, help='The new data set information. Expected value: '
                   'json-string/json-file/@json-file.')

    with self.argument_context('datashare data-set delete') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_name', type=str, help='The name of the share.', id_part='child_name_1')
        c.argument('data_set_name', options_list=['--name', '-n', '--data-set-name'], type=str, help='The name of the '
                   'dataSet.', id_part='child_name_2')

    with self.argument_context('datashare data-set wait') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_name', type=str, help='The name of the share.', id_part='child_name_1')
        c.argument('data_set_name', options_list=['--name', '-n', '--data-set-name'], type=str, help='The name of the '
                   'dataSet.', id_part='child_name_2')

    with self.argument_context('datashare data-set-mapping list') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('share_subscription_name', type=str, help='The name of the share subscription.')
        c.argument('skip_token', type=str, help='Continuation token')
        c.argument('filter_', options_list=['--filter'], type=str, help='Filters the results using OData syntax.')
        c.argument('orderby', type=str, help='Sorts the results using OData syntax.')

    with self.argument_context('datashare data-set-mapping show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_subscription_name', type=str, help='The name of the shareSubscription.',
                   id_part='child_name_1')
        c.argument('data_set_mapping_name', options_list=['--name', '-n', '--data-set-mapping-name'], type=str,
                   help='The name of the dataSetMapping.', id_part='child_name_2')

    with self.argument_context('datashare data-set-mapping create') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('share_subscription_name', type=str, help='The name of the share subscription which will hold the '
                   'data set sink.')
        c.argument('data_set_mapping_name', options_list=['--name', '-n', '--data-set-mapping-name'], type=str,
                   help='The name of the data set mapping to be created.')
        c.argument('adls_gen2_file_data_set_mapping', action=AddAdlsGen2FileDataSetMapping, nargs='+', help='An ADLS '
                   'Gen2 file data set mapping.', arg_group='DataSetMapping')
        c.argument('adls_gen2_file_system_data_set_mapping', action=AddAdlsGen2FileSystemDataSetMapping, nargs='+',
                   help='An ADLS Gen2 file system data set mapping.', arg_group='DataSetMapping')
        c.argument('adls_gen2_folder_data_set_mapping', action=AddAdlsGen2FolderDataSetMapping, nargs='+', help='An '
                   'ADLS Gen2 folder data set mapping.', arg_group='DataSetMapping')
        c.argument('blob_container_data_set_mapping', action=AddBlobContainerDataSetMapping, nargs='+', help='A Blob '
                   'container data set mapping.', arg_group='DataSetMapping')
        c.argument('blob_data_set_mapping', action=AddBlobDataSetMapping, nargs='+', help='A Blob data set mapping.',
                   arg_group='DataSetMapping')
        c.argument('blob_folder_data_set_mapping', action=AddBlobFolderDataSetMapping, nargs='+', help='A Blob folder '
                   'data set mapping.', arg_group='DataSetMapping')
        c.argument('kusto_cluster_data_set_mapping', action=AddKustoClusterDataSetMapping, nargs='+', help='A Kusto '
                   'cluster data set mapping', arg_group='DataSetMapping')
        c.argument('kusto_database_data_set_mapping', action=AddKustoDatabaseDataSetMapping, nargs='+', help='A Kusto '
                   'database data set mapping', arg_group='DataSetMapping')
        c.argument('kusto_table_data_set_mapping', action=AddKustoTableDataSetMapping, nargs='+', help='A Kusto '
                   'database data set mapping', arg_group='DataSetMapping')
        c.argument('sqldb_table_data_set_mapping', action=AddSqldbTableDataSetMapping, nargs='+', help='A SQL DB Table '
                   'data set mapping.', arg_group='DataSetMapping')
        c.argument('sqldw_table_data_set_mapping', action=AddSqldwTableDataSetMapping, nargs='+', help='A SQL DW Table '
                   'data set mapping.', arg_group='DataSetMapping')
        c.argument('synapse_workspace_sql_pool_table_data_set_mapping',
                   action=AddSynapseWorkspaceSqlPoolTableDataSetMapping, nargs='+', help='A Synapse Workspace Sql Pool '
                   'Table data set mapping', arg_group='DataSetMapping')

    with self.argument_context('datashare data-set-mapping delete') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_subscription_name', type=str, help='The name of the shareSubscription.',
                   id_part='child_name_1')
        c.argument('data_set_mapping_name', options_list=['--name', '-n', '--data-set-mapping-name'], type=str,
                   help='The name of the dataSetMapping.', id_part='child_name_2')

    with self.argument_context('datashare email-registration activate-email') as c:
        c.argument('location', arg_type=get_location_type(self.cli_ctx))
        c.argument('activation_code', type=str, help='Activation code for the registration')

    with self.argument_context('datashare email-registration register-email') as c:
        c.argument('location', arg_type=get_location_type(self.cli_ctx))

    with self.argument_context('datashare invitation list') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('share_name', type=str, help='The name of the share.')
        c.argument('skip_token', type=str, help='The continuation token')
        c.argument('filter_', options_list=['--filter'], type=str, help='Filters the results using OData syntax.')
        c.argument('orderby', type=str, help='Sorts the results using OData syntax.')

    with self.argument_context('datashare invitation show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_name', type=str, help='The name of the share.', id_part='child_name_1')
        c.argument('invitation_name', options_list=['--name', '-n', '--invitation-name'], type=str, help='The name of '
                   'the invitation.', id_part='child_name_2')

    with self.argument_context('datashare invitation create') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('share_name', type=str, help='The name of the share to send the invitation for.')
        c.argument('invitation_name', options_list=['--name', '-n', '--invitation-name'], type=str, help='The name of '
                   'the invitation.')
        c.argument('expiration_date', help='The expiration date for the invitation and share subscription.')
        c.argument('target_active_directory_id', type=str, help='The target Azure AD Id. Can\'t be combined with '
                   'email.')
        c.argument('target_email', type=str, help='The email the invitation is directed to.')
        c.argument('target_object_id', type=str, help='The target user or application Id that invitation is being sent '
                   'to. Must be specified along TargetActiveDirectoryId. This enables sending invitations to specific '
                   'users or applications in an AD tenant.')

    with self.argument_context('datashare invitation delete') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_name', type=str, help='The name of the share.', id_part='child_name_1')
        c.argument('invitation_name', options_list=['--name', '-n', '--invitation-name'], type=str, help='The name of '
                   'the invitation.', id_part='child_name_2')

    with self.argument_context('datashare list') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('skip_token', type=str, help='Continuation Token')
        c.argument('filter_', options_list=['--filter'], type=str, help='Filters the results using OData syntax.')
        c.argument('orderby', type=str, help='Sorts the results using OData syntax.')

    with self.argument_context('datashare show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_name', options_list=['--name', '-n', '--share-name'], type=str, help='The name of the share '
                   'to retrieve.', id_part='child_name_1')

    with self.argument_context('datashare create') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('share_name', options_list=['--name', '-n', '--share-name'], type=str,
                   help='The name of the share.')
        c.argument('description', type=str, help='Share description.')
        c.argument('share_kind', arg_type=get_enum_type(['CopyBased', 'InPlace']), help='Share kind.')
        c.argument('terms', type=str, help='Share terms.')

    with self.argument_context('datashare delete') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_name', options_list=['--name', '-n', '--share-name'], type=str,
                   help='The name of the share.', id_part='child_name_1')

    with self.argument_context('datashare list-synchronization') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('share_name', options_list=['--name', '-n', '--share-name'], type=str,
                   help='The name of the share.')
        c.argument('skip_token', type=str, help='Continuation token')
        c.argument('filter_', options_list=['--filter'], type=str, help='Filters the results using OData syntax.')
        c.argument('orderby', type=str, help='Sorts the results using OData syntax.')

    with self.argument_context('datashare list-synchronization-detail') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('share_name', options_list=['--name', '-n', '--share-name'], type=str,
                   help='The name of the share.')
        c.argument('skip_token', type=str, help='Continuation token')
        c.argument('filter_', options_list=['--filter'], type=str, help='Filters the results using OData syntax.')
        c.argument('orderby', type=str, help='Sorts the results using OData syntax.')
        c.argument('consumer_email', type=str, help='Email of the user who created the synchronization')
        c.argument('consumer_name', type=str, help='Name of the user who created the synchronization')
        c.argument('consumer_tenant_name', type=str,
                   help='Tenant name of the consumer who created the synchronization')
        c.argument('duration_ms', type=int, help='synchronization duration')
        c.argument('end_time', help='End time of synchronization')
        c.argument('message', type=str, help='message of synchronization')
        c.argument('start_time', help='start time of synchronization')
        c.argument('status', type=str, help='Raw Status')
        c.argument('synchronization_id', type=str, help='Synchronization id')

    with self.argument_context('datashare wait') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_name', options_list=['--name', '-n', '--share-name'], type=str, help='The name of the share '
                   'to retrieve.', id_part='child_name_1')

    with self.argument_context('datashare provider-share-subscription list') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('share_name', type=str, help='The name of the share.')
        c.argument('skip_token', type=str, help='Continuation Token')

    with self.argument_context('datashare provider-share-subscription show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_name', type=str, help='The name of the share.', id_part='child_name_1')
        c.argument('provider_share_subscription_id', type=str, help='To locate shareSubscription',
                   id_part='child_name_2')

    with self.argument_context('datashare provider-share-subscription adjust') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_name', type=str, help='The name of the share.', id_part='child_name_1')
        c.argument('provider_share_subscription_id', type=str, help='To locate shareSubscription',
                   id_part='child_name_2')
        c.argument('expiration_date', help='Expiration date of the share subscription in UTC format')

    with self.argument_context('datashare provider-share-subscription reinstate') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_name', type=str, help='The name of the share.', id_part='child_name_1')
        c.argument('provider_share_subscription_id', type=str, help='To locate shareSubscription',
                   id_part='child_name_2')
        c.argument('expiration_date', help='Expiration date of the share subscription in UTC format')

    with self.argument_context('datashare provider-share-subscription revoke') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_name', type=str, help='The name of the share.', id_part='child_name_1')
        c.argument('provider_share_subscription_id', type=str, help='To locate shareSubscription',
                   id_part='child_name_2')

    with self.argument_context('datashare provider-share-subscription wait') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_name', type=str, help='The name of the share.', id_part='child_name_1')
        c.argument('provider_share_subscription_id', type=str, help='To locate shareSubscription',
                   id_part='child_name_2')

    with self.argument_context('datashare share-subscription list') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('skip_token', type=str, help='Continuation Token')
        c.argument('filter_', options_list=['--filter'], type=str, help='Filters the results using OData syntax.')
        c.argument('orderby', type=str, help='Sorts the results using OData syntax.')

    with self.argument_context('datashare share-subscription show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_subscription_name', options_list=['--name', '-n', '--share-subscription-name'], type=str,
                   help='The name of the shareSubscription.', id_part='child_name_1')

    with self.argument_context('datashare share-subscription create') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('share_subscription_name', options_list=['--name', '-n', '--share-subscription-name'], type=str,
                   help='The name of the shareSubscription.')
        c.argument('expiration_date', help='The expiration date of the share subscription.')
        c.argument('invitation_id', type=str, help='The invitation id.')
        c.argument('source_share_location', type=str, help='Source share location.')

    with self.argument_context('datashare share-subscription delete') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_subscription_name', options_list=['--name', '-n', '--share-subscription-name'], type=str,
                   help='The name of the shareSubscription.', id_part='child_name_1')

    with self.argument_context('datashare share-subscription cancel-synchronization') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_subscription_name', options_list=['--name', '-n', '--share-subscription-name'], type=str,
                   help='The name of the shareSubscription.', id_part='child_name_1')
        c.argument('synchronization_id', type=str, help='Synchronization id')

    with self.argument_context('datashare share-subscription list-source-share-synchronization-setting') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('share_subscription_name', options_list=['--name', '-n', '--share-subscription-name'], type=str,
                   help='The name of the shareSubscription.')
        c.argument('skip_token', type=str, help='Continuation token')

    with self.argument_context('datashare share-subscription list-synchronization') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('share_subscription_name', options_list=['--name', '-n', '--share-subscription-name'], type=str,
                   help='The name of the share subscription.')
        c.argument('skip_token', type=str, help='Continuation token')
        c.argument('filter_', options_list=['--filter'], type=str, help='Filters the results using OData syntax.')
        c.argument('orderby', type=str, help='Sorts the results using OData syntax.')

    with self.argument_context('datashare share-subscription list-synchronization-detail') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('share_subscription_name', options_list=['--name', '-n', '--share-subscription-name'], type=str,
                   help='The name of the share subscription.')
        c.argument('skip_token', type=str, help='Continuation token')
        c.argument('filter_', options_list=['--filter'], type=str, help='Filters the results using OData syntax.')
        c.argument('orderby', type=str, help='Sorts the results using OData syntax.')
        c.argument('synchronization_id', type=str, help='Synchronization id')

    with self.argument_context('datashare share-subscription synchronize') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_subscription_name', options_list=['--name', '-n', '--share-subscription-name'], type=str,
                   help='The name of share subscription', id_part='child_name_1')
        c.argument('synchronization_mode', arg_type=get_enum_type(['Incremental', 'FullSync']), help='Mode of '
                   'synchronization used in triggers and snapshot sync. Incremental by default')

    with self.argument_context('datashare share-subscription wait') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_subscription_name', options_list=['--name', '-n', '--share-subscription-name'], type=str,
                   help='The name of the shareSubscription.', id_part='child_name_1')

    with self.argument_context('datashare consumer-source-data-set list') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('share_subscription_name', type=str, help='The name of the shareSubscription.')
        c.argument('skip_token', type=str, help='Continuation token')

    with self.argument_context('datashare synchronization-setting list') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('share_name', type=str, help='The name of the share.')
        c.argument('skip_token', type=str, help='continuation token')

    with self.argument_context('datashare synchronization-setting show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_name', type=str, help='The name of the share.', id_part='child_name_1')
        c.argument('synchronization_setting_name', options_list=['--name', '-n', '--synchronization-setting-name'],
                   type=str, help='The name of the synchronizationSetting.', id_part='child_name_2')

    with self.argument_context('datashare synchronization-setting create') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('share_name', type=str, help='The name of the share to add the synchronization setting to.')
        c.argument('synchronization_setting_name', options_list=['--name', '-n', '--synchronization-setting-name'],
                   type=str, help='The name of the synchronizationSetting.')
        c.argument('scheduled_synchronization_setting', action=AddScheduledSynchronizationSetting, nargs='+', help='A '
                   'type of synchronization setting based on schedule', arg_group='SynchronizationSetting')

    with self.argument_context('datashare synchronization-setting delete') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_name', type=str, help='The name of the share.', id_part='child_name_1')
        c.argument('synchronization_setting_name', options_list=['--name', '-n', '--synchronization-setting-name'],
                   type=str, help='The name of the synchronizationSetting .', id_part='child_name_2')

    with self.argument_context('datashare synchronization-setting wait') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_name', type=str, help='The name of the share.', id_part='child_name_1')
        c.argument('synchronization_setting_name', options_list=['--name', '-n', '--synchronization-setting-name'],
                   type=str, help='The name of the synchronizationSetting.', id_part='child_name_2')

    with self.argument_context('datashare trigger list') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('share_subscription_name', type=str, help='The name of the share subscription.')
        c.argument('skip_token', type=str, help='Continuation token')

    with self.argument_context('datashare trigger show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_subscription_name', type=str, help='The name of the shareSubscription.',
                   id_part='child_name_1')
        c.argument('trigger_name', options_list=['--name', '-n', '--trigger-name'], type=str, help='The name of the '
                   'trigger.', id_part='child_name_2')

    with self.argument_context('datashare trigger create') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.')
        c.argument('share_subscription_name', type=str, help='The name of the share subscription which will hold the '
                   'data set sink.')
        c.argument('trigger_name', options_list=['--name', '-n', '--trigger-name'], type=str, help='The name of the '
                   'trigger.')
        c.argument('scheduled_trigger', action=AddScheduledTrigger, nargs='+', help='A type of trigger based on '
                   'schedule', arg_group='Trigger')

    with self.argument_context('datashare trigger delete') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_subscription_name', type=str, help='The name of the shareSubscription.',
                   id_part='child_name_1')
        c.argument('trigger_name', options_list=['--name', '-n', '--trigger-name'], type=str, help='The name of the '
                   'trigger.', id_part='child_name_2')

    with self.argument_context('datashare trigger wait') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('account_name', type=str, help='The name of the share account.', id_part='name')
        c.argument('share_subscription_name', type=str, help='The name of the shareSubscription.',
                   id_part='child_name_1')
        c.argument('trigger_name', options_list=['--name', '-n', '--trigger-name'], type=str, help='The name of the '
                   'trigger.', id_part='child_name_2')
