# SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: Apache-2.0
from typing import Dict, List

from click.core import Context
from idf_py_actions.tools import PropertyDict, ensure_build_directory, run_target


def action_extensions(base_actions: Dict, project_path: List) -> Dict:
    def uf2_target(target_name: str, ctx: Context, args: PropertyDict, md5_disable: bool) -> None:
        ensure_build_directory(args, ctx.info_name)
        extra = list()
        if md5_disable:
            extra.append('--md5-disable')
        run_target(target_name, args, env={'SERIAL_TOOL_EXTRA_ARGS': ' '.join(extra)})

    uf2_options = [
        {
            'names': ['--md5-disable'],
            'is_flag': True,
            'help': 'Disable MD5 checksum',
        },
    ]

    uf2_actions = {
        'actions': {
            'uf2': {
                'callback': uf2_target,
                'options': uf2_options,
                'short_help': 'Generate the UF2 binary with all the binaries included',
                'dependencies': ['all'],
            },
            'uf2-app': {
                'callback': uf2_target,
                'options': uf2_options,
                'short_help': 'Generate an UF2 binary for the application only',
                'dependencies': ['all'],
            },
        }
    }

    return uf2_actions