瀏覽代碼

Handle `cli._subcommand.__name__` deprecation warning (#24533)

Joel Challis 1 年之前
父節點
當前提交
e6daffce46
共有 1 個文件被更改,包括 19 次插入6 次删除
  1. 19 6
      lib/python/qmk/decorators.py

+ 19 - 6
lib/python/qmk/decorators.py

@@ -9,6 +9,15 @@ from qmk.keyboard import find_keyboard_from_dir
 from qmk.keymap import find_keymap_from_dir
 
 
+def _get_subcommand_name():
+    """Handle missing cli.subcommand_name on older versions of milc
+    """
+    try:
+        return cli.subcommand_name
+    except AttributeError:
+        return cli._subcommand.__name__
+
+
 def automagic_keyboard(func):
     """Sets `cli.config.<subcommand>.keyboard` based on environment.
 
@@ -16,13 +25,15 @@ def automagic_keyboard(func):
     """
     @functools.wraps(func)
     def wrapper(*args, **kwargs):
+        cmd = _get_subcommand_name()
+
         # Ensure that `--keyboard` was not passed and CWD is under `qmk_firmware/keyboards`
-        if cli.config_source[cli._subcommand.__name__]['keyboard'] != 'argument':
+        if cli.config_source[cmd]['keyboard'] != 'argument':
             keyboard = find_keyboard_from_dir()
 
             if keyboard:
-                cli.config[cli._subcommand.__name__]['keyboard'] = keyboard
-                cli.config_source[cli._subcommand.__name__]['keyboard'] = 'keyboard_directory'
+                cli.config[cmd]['keyboard'] = keyboard
+                cli.config_source[cmd]['keyboard'] = 'keyboard_directory'
 
         return func(*args, **kwargs)
 
@@ -36,13 +47,15 @@ def automagic_keymap(func):
     """
     @functools.wraps(func)
     def wrapper(*args, **kwargs):
+        cmd = _get_subcommand_name()
+
         # Ensure that `--keymap` was not passed and that we're under `qmk_firmware`
-        if cli.config_source[cli._subcommand.__name__]['keymap'] != 'argument':
+        if cli.config_source[cmd]['keymap'] != 'argument':
             keymap_name, keymap_type = find_keymap_from_dir()
 
             if keymap_name:
-                cli.config[cli._subcommand.__name__]['keymap'] = keymap_name
-                cli.config_source[cli._subcommand.__name__]['keymap'] = keymap_type
+                cli.config[cmd]['keymap'] = keymap_name
+                cli.config_source[cmd]['keymap'] = keymap_type
 
         return func(*args, **kwargs)