#!/usr/bin/env python3
# =============================================================================
#
# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
# All rights reserved.
# Confidential and Proprietary - Qualcomm Technologies, Inc.
#
# =============================================================================

import sys

from qti.aisw.accuracy_debugger.argparser.constants import COMPONENT
from qti.aisw.accuracy_debugger.argparser.debugger_parser import AccuracyDebuggerParser
from qti.aisw.accuracy_debugger.component_runner import (
    execute_compare_encodings,
    execute_framework_runner,
    execute_inference_engine,
    execute_model_snooper,
    execute_tensor_visualizer,
    execute_verification,
)


def main():
    """This method parses system arguments for accuracy component and invokes component handler"""
    sys_args = sys.argv[1:]
    parser = AccuracyDebuggerParser()
    parsed_args, unknown_args = parser.parse(sys_args)

    if parsed_args.component == COMPONENT.FRAMEWORK_RUNNER.value:
        execute_framework_runner(unknown_args)
    elif parsed_args.component == COMPONENT.INFERENCE_ENGINE.value:
        execute_inference_engine(unknown_args)
    elif parsed_args.component == COMPONENT.VERIFICATION.value:
        execute_verification(unknown_args)
    elif parsed_args.component == COMPONENT.COMPARE_ENCODINGS.value:
        execute_compare_encodings(unknown_args)
    elif parsed_args.component == COMPONENT.TENSOR_VISUALIZER.value:
        execute_tensor_visualizer(unknown_args)
    elif parsed_args.component == COMPONENT.SNOOPING.value:
        execute_model_snooper(unknown_args)
    else:
        ValueError("No valid component selected")


if __name__ == "__main__":
    main()
