diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/python/qmk/cli/find.py | 2 | ||||
| -rwxr-xr-x | lib/python/qmk/cli/mass_compile.py | 2 | ||||
| -rw-r--r-- | lib/python/qmk/info.py | 22 | ||||
| -rw-r--r-- | lib/python/qmk/util.py | 21 | 
4 files changed, 38 insertions, 9 deletions
| diff --git a/lib/python/qmk/cli/find.py b/lib/python/qmk/cli/find.py index bfed91e22c..7d8b1b066c 100644 --- a/lib/python/qmk/cli/find.py +++ b/lib/python/qmk/cli/find.py @@ -1,5 +1,6 @@  """Command to search through all keyboards and keymaps for a given search criteria.  """ +import os  from milc import cli  from qmk.search import filter_help, search_keymap_targets  from qmk.util import maybe_exit_config @@ -20,6 +21,7 @@ from qmk.util import maybe_exit_config  def find(cli):      """Search through all keyboards and keymaps for a given search criteria.      """ +    os.environ.setdefault('SKIP_SCHEMA_VALIDATION', '1')      maybe_exit_config(should_exit=False, should_reraise=True)      targets = search_keymap_targets([('all', cli.config.find.keymap)], cli.args.filter) diff --git a/lib/python/qmk/cli/mass_compile.py b/lib/python/qmk/cli/mass_compile.py index cf9be0fd1e..4c4669d451 100755 --- a/lib/python/qmk/cli/mass_compile.py +++ b/lib/python/qmk/cli/mass_compile.py @@ -20,6 +20,8 @@ def mass_compile_targets(targets: List[BuildTarget], clean: bool, dry_run: bool,      if len(targets) == 0:          return +    os.environ.setdefault('SKIP_SCHEMA_VALIDATION', '1') +      make_cmd = find_make()      builddir = Path(QMK_FIRMWARE) / '.build'      makefile = builddir / 'parallel_kb_builds.mk' diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py index 0c6dd181d9..5dae353538 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py @@ -1,6 +1,7 @@  """Functions that help us generate and use info.json files.  """  import re +import os  from pathlib import Path  import jsonschema  from dotty_dict import dotty @@ -14,7 +15,7 @@ from qmk.keyboard import config_h, rules_mk  from qmk.commands import parse_configurator_json  from qmk.makefile import parse_rules_mk_file  from qmk.math import compute -from qmk.util import maybe_exit +from qmk.util import maybe_exit, truthy  true_values = ['1', 'on', 'yes']  false_values = ['0', 'off', 'no'] @@ -262,7 +263,9 @@ def info_json(keyboard, force_layout=None):          info_data["community_layouts"] = [force_layout]      # Validate -    _validate(keyboard, info_data) +    # Skip processing if necessary +    if not truthy(os.environ.get('SKIP_SCHEMA_VALIDATION'), False): +        _validate(keyboard, info_data)      # Check that the reported matrix size is consistent with the actual matrix size      _check_matrix(info_data) @@ -941,13 +944,14 @@ def merge_info_jsons(keyboard, info_data):              _log_error(info_data, "Invalid file %s, root object should be a dictionary." % (str(info_file),))              continue -        try: -            validate(new_info_data, 'qmk.keyboard.v1') -        except jsonschema.ValidationError as e: -            json_path = '.'.join([str(p) for p in e.absolute_path]) -            cli.log.error('Not including data from file: %s', info_file) -            cli.log.error('\t%s: %s', json_path, e.message) -            continue +        if not truthy(os.environ.get('SKIP_SCHEMA_VALIDATION'), False): +            try: +                validate(new_info_data, 'qmk.keyboard.v1') +            except jsonschema.ValidationError as e: +                json_path = '.'.join([str(p) for p in e.absolute_path]) +                cli.log.error('Not including data from file: %s', info_file) +                cli.log.error('\t%s: %s', json_path, e.message) +                continue          # Merge layout data in          if 'layout_aliases' in new_info_data: diff --git a/lib/python/qmk/util.py b/lib/python/qmk/util.py index b73fab89d1..8f99410e1d 100644 --- a/lib/python/qmk/util.py +++ b/lib/python/qmk/util.py @@ -27,6 +27,27 @@ def maybe_exit_config(should_exit: bool = True, should_reraise: bool = False):      maybe_exit_reraise = should_reraise +def truthy(value, value_if_unknown=False): +    """Returns True if the value is truthy, False otherwise. + +    Deals with: +        True: 1, true, t, yes, y, on +        False: 0, false, f, no, n, off +    """ +    if value in {False, True}: +        return bool(value) + +    test_value = str(value).strip().lower() + +    if test_value in {"1", "true", "t", "yes", "y", "on"}: +        return True + +    if test_value in {"0", "false", "f", "no", "n", "off"}: +        return False + +    return value_if_unknown + +  @contextlib.contextmanager  def parallelize():      """Returns a function that can be used in place of a map() call. | 
