# coding: utf-8

from celery.exceptions import SoftTimeLimitExceeded

from seecode_scanner.celeryctl import celery_app
from seecode_scanner.cli import start_scan
from seecode_scanner.lib.core.data import logger
from seecode_scanner.lib.core.option import init


@celery_app.task(ignore_result=True)
def start(**kwargs):
    """
    添加扫描任务
    :param kwargs: 任务配置
    :return:
    """
    pro = None
    try:
        init()
        result_file = '{0}.json'.format(kwargs.get("project_name"))
        kwargs['result_file'] = result_file
        pro = start_scan(**kwargs)
    except SoftTimeLimitExceeded as ex:
        logger.critical(ex)
        if pro:
            pro.update_scan_failed_status(ex)
    except Exception as ex:
        import traceback;traceback.print_exc()
        logger.critical(ex)
    except KeyboardInterrupt:
        logger.error("user aborted")
    except SystemExit:
        raise

    return False