diff --git a/kibot/bom/xlsx_writer.py b/kibot/bom/xlsx_writer.py index 1a6289f1..bcdf5aed 100644 --- a/kibot/bom/xlsx_writer.py +++ b/kibot/bom/xlsx_writer.py @@ -18,7 +18,8 @@ from base64 import b64decode from .columnlist import ColumnList from .kibot_logo import KIBOT_LOGO from .. import log -from ..misc import W_NOKICOST, W_UNKDIST +from ..misc import W_NOKICOST, W_UNKDIST, KICOST_ERROR +from ..error import trace_dump from ..__main__ import __version__ try: from xlsxwriter import Workbook @@ -38,7 +39,7 @@ try: sys.path.insert(0, rel_path) # Init the logger first logger = log.get_logger(__name__) - from kicost.global_vars import set_logger + from kicost.global_vars import set_logger, KiCostError set_logger(logger) from kicost import PartGroup from kicost.kicost import query_part_info @@ -470,7 +471,7 @@ def create_meta_sheets(workbook, used_parts, fmt_head, fmt_cols, cfg): fmt_cols, cfg.xlsx.max_col_width) -def create_kicost_sheet(workbook, groups, image_data, fmt_title, fmt_info, fmt_subtitle, fmt_head, fmt_cols, cfg): +def _create_kicost_sheet(workbook, groups, image_data, fmt_title, fmt_info, fmt_subtitle, fmt_head, fmt_cols, cfg): if not KICOST_SUPPORT: logger.warning(W_NOKICOST, 'KiCost sheet requested but failed to load KiCost support') return @@ -610,6 +611,15 @@ def create_kicost_sheet(workbook, groups, image_data, fmt_title, fmt_info, fmt_s return colors +def create_kicost_sheet(workbook, groups, image_data, fmt_title, fmt_info, fmt_subtitle, fmt_head, fmt_cols, cfg): + try: + _create_kicost_sheet(workbook, groups, image_data, fmt_title, fmt_info, fmt_subtitle, fmt_head, fmt_cols, cfg) + except KiCostError as e: + trace_dump() + logger.error('KiCost error: `{}` ({})'.format(e.msg, e.id)) + exit(KICOST_ERROR) + + def write_xlsx(filename, groups, col_fields, head_names, cfg): """ Write BoM out to a XLSX file diff --git a/kibot/misc.py b/kibot/misc.py index 9d874161..0f6dbd02 100644 --- a/kibot/misc.py +++ b/kibot/misc.py @@ -34,6 +34,7 @@ PCBDRAW_ERR = 20 SVG_SCH_PRINT = 21 CORRUPTED_SCH = 22 WRONG_INSTALL = 23 +KICOST_ERROR = 24 error_level_to_name = ['NONE', 'INTERNAL_ERROR', 'WRONG_ARGUMENTS', @@ -58,6 +59,7 @@ error_level_to_name = ['NONE', 'SVG_SCH_PRINT', 'CORRUPTED_SCH', 'WRONG_INSTALL', + 'KICOST_ERROR', ] CMD_EESCHEMA_DO = 'eeschema_do' URL_EESCHEMA_DO = 'https://github.com/INTI-CMNB/kicad-automation-scripts' diff --git a/submodules/KiCost b/submodules/KiCost index d1b07317..e1777129 160000 --- a/submodules/KiCost +++ b/submodules/KiCost @@ -1 +1 @@ -Subproject commit d1b0731775e7fd5cc8c659af5e0f6c810b02d09f +Subproject commit e17771291b100e60516542d22e715d7593c19117