Make the udev rules easier to read and manage
This commit is contained in:
		@@ -2,6 +2,7 @@
 | 
			
		||||
 | 
			
		||||
Check up for QMK environment.
 | 
			
		||||
"""
 | 
			
		||||
import os
 | 
			
		||||
import platform
 | 
			
		||||
import shutil
 | 
			
		||||
import subprocess
 | 
			
		||||
@@ -9,6 +10,13 @@ import glob
 | 
			
		||||
 | 
			
		||||
from milc import cli
 | 
			
		||||
 | 
			
		||||
def _udev_rule(vid, pid = None):
 | 
			
		||||
    """ Helper function that return udev rules
 | 
			
		||||
    """
 | 
			
		||||
    if pid:
 | 
			
		||||
        return 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="%s", ATTRS{idProduct}=="%s", MODE:="0666"' % (vid, pid)
 | 
			
		||||
    else:
 | 
			
		||||
        return 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="%s", MODE:="0666"' % vid
 | 
			
		||||
 | 
			
		||||
@cli.subcommand('Basic QMK environment checks')
 | 
			
		||||
def doctor(cli):
 | 
			
		||||
@@ -18,7 +26,6 @@ def doctor(cli):
 | 
			
		||||
 | 
			
		||||
    TODO(unclaimed):
 | 
			
		||||
        * [ ] Compile a trivial program with each compiler
 | 
			
		||||
        * [ ] Check for udev entries on linux
 | 
			
		||||
    """
 | 
			
		||||
    cli.log.info('QMK Doctor is checking your environment.')
 | 
			
		||||
 | 
			
		||||
@@ -50,15 +57,17 @@ def doctor(cli):
 | 
			
		||||
        # Checking for udev rules
 | 
			
		||||
        udev_dir = "/etc/udev/rules.d/"
 | 
			
		||||
        # These are the recommended udev rules
 | 
			
		||||
        desired_rules = {"dfu": {'SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff4", MODE:="0666"',
 | 
			
		||||
                                 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffb", MODE:="0666"',
 | 
			
		||||
                                 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff0", MODE:="0666"'},
 | 
			
		||||
                         "tmk": {'SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"'},
 | 
			
		||||
                         "input-club": {'SUBSYSTEMS=="usb", ATTRS{idVendor}=="1c11", MODE:="0666"'},
 | 
			
		||||
                         "stm32": {'SUBSYSTEMS=="usb", ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0003", MODE:="0666"',
 | 
			
		||||
                                   'SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE:="0666"'},
 | 
			
		||||
                         "caterina": {'ATTRS{idVendor}=="2a03", ENV{ID_MM_DEVICE_IGNORE}="1"',
 | 
			
		||||
                                      'ATTRS{idVendor}=="2341", ENV{ID_MM_DEVICE_IGNORE}="1"'}}
 | 
			
		||||
        desired_rules = dict(dfu = {_udev_rule("03eb", "2ff4"),_udev_rule("03eb", "2ffb"), _udev_rule("03eb", "2ff0")},
 | 
			
		||||
 | 
			
		||||
                             tmk = {_udev_rule("feed")},
 | 
			
		||||
 | 
			
		||||
                             input_club = {_udev_rule("1c11")},
 | 
			
		||||
 | 
			
		||||
                             stm32 = {_udev_rule("1eaf", "0003"),_udev_rule("0483", "df11")},
 | 
			
		||||
 | 
			
		||||
                             caterina = {'ATTRS{idVendor}=="2a03", ENV{ID_MM_DEVICE_IGNORE}="1"',
 | 
			
		||||
                                         'ATTRS{idVendor}=="2341", ENV{ID_MM_DEVICE_IGNORE}="1"'}
 | 
			
		||||
                             )
 | 
			
		||||
        if os.path.exists(udev_dir):
 | 
			
		||||
            udev_rules = [rule for rule in glob.iglob(os.path.join(udev_dir, "*.rules")) if os.path.isfile(rule)]
 | 
			
		||||
            # Collect all rules from the config files
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user