# SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: Apache-2.0
def action_extensions(base_actions, project_path=None):
    def echo(name, *args, **kwargs):
        print(name, args, kwargs)

    def verbose(name, ctx, args):
        print('Output from test-verbose')
        if args.verbose:
            print('Verbose mode on')

    # Add global options
    extensions = {
        'global_options': [
            {
                'names': ['--test-0'],
                'help': 'Non-deprecated option.',
                'deprecated': False
            },
            {
                'names': ['--test-1'],
                'help': 'Deprecated option 1.',
                'deprecated': True
            },
            {
                'names': ['--test-2'],
                'help': 'Deprecated option 2.',
                'deprecated': 'Please update your parameters.'
            },
            {
                'names': ['--test-3'],
                'help': 'Deprecated option 3.',
                'deprecated': {
                    'custom_message': 'Please update your parameters.'
                }
            },
            {
                'names': ['--test-4'],
                'help': 'Deprecated option 4.',
                'deprecated': {
                    'since': 'v4.0',
                    'removed': 'v5.0'
                }
            },
            {
                'names': ['--test-5'],
                'help': 'Deprecated option 5.',
                'deprecated': {
                    'since': 'v2.0',
                    'removed': 'v3.0',
                    'exit_with_error': True
                }
            },
        ],
        'actions': {
            'test-verbose': {
                'callback': verbose,
                'help': 'Command that have some verbosity',
            },
            'test-0': {
                'callback': echo,
                'help': 'Non-deprecated command 0',
                'options': [
                    {
                        'names': ['--test-sub-0'],
                        'help': 'Non-deprecated subcommand option 0',
                        'default': None,
                    },
                    {
                        'names': ['--test-sub-1'],
                        'help': 'Deprecated subcommand option 1',
                        'default': None,
                        'deprecated': True
                    },
                ],
                'arguments': [{
                    'names': ['test-arg-0'],
                }],
            },
            'test-1': {
                'callback': echo,
                'help': 'Deprecated command 1',
                'deprecated': 'Please use alternative command.'
            },
            'test-2': {
                'callback': echo,
                'help': 'Deprecated command 2',
                'deprecated': {
                    'exit_with_error': True
                }
            },
        },
    }

    return extensions