From a8a4d7c66d2a25f5e271f1eac789b814d07afd67 Mon Sep 17 00:00:00 2001 From: Frantisek Hrbata Date: Wed, 1 Mar 2023 15:30:29 +0100 Subject: [PATCH] tools: add get_sdkconfig_filename() helper Get project's current sdkconfig file name. It looks in SDKCONFIG cmake var defined by the -D option and project_description.json. If not found return default sdkconfig. Signed-off-by: Frantisek Hrbata --- tools/idf_py_actions/tools.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tools/idf_py_actions/tools.py b/tools/idf_py_actions/tools.py index d82380dc2f..e50a1e3a8f 100644 --- a/tools/idf_py_actions/tools.py +++ b/tools/idf_py_actions/tools.py @@ -1,6 +1,7 @@ # SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD # SPDX-License-Identifier: Apache-2.0 import asyncio +import json import os import re import subprocess @@ -532,6 +533,27 @@ def merge_action_lists(*action_lists: Dict) -> Dict: return merged_actions +def get_sdkconfig_filename(args: 'PropertyDict', cache_cmdl: Dict=None) -> str: + """ + Get project's sdkconfig file name. + """ + if not cache_cmdl: + cache_cmdl = _parse_cmdl_cmakecache(args.define_cache_entry) + config = cache_cmdl.get('SDKCONFIG') + if config: + return os.path.abspath(config) + + proj_desc_path = os.path.join(args.build_dir, 'project_description.json') + try: + with open(proj_desc_path, 'r') as f: + proj_desc = json.load(f) + return str(proj_desc['config_file']) + except (OSError, KeyError): + pass + + return os.path.join(args.project_dir, 'sdkconfig') + + def get_sdkconfig_value(sdkconfig_file: str, key: str) -> Optional[str]: """ Return the value of given key from sdkconfig_file.