Make the modem manager check more pythonic
This commit is contained in:
		| @@ -21,17 +21,17 @@ def main(cli): | ||||
|         * [ ] Compile a trivial program with each compiler | ||||
|         * [ ] Check for udev entries on linux | ||||
|     """ | ||||
|     cli.log.info('QMK Doctor is checking your environment.') | ||||
|  | ||||
|     # Make sure the basic CLI tools we need are available and can be executed. | ||||
|     binaries = ['dfu-programmer', 'avrdude', 'dfu-util', 'avr-gcc', 'arm-none-eabi-gcc'] | ||||
|     binaries += glob('bin/qmk-*') | ||||
|  | ||||
|     cli.log.info('QMK Doctor is checking your environment') | ||||
|  | ||||
|     ok = True | ||||
|  | ||||
|     for binary in binaries: | ||||
|         res = shutil.which(binary) | ||||
|         if res is None: | ||||
|             cli.log.error("{fg_red}QMK can't find %s in your path", binary) | ||||
|             cli.log.error("{fg_red}QMK can't find %s in your path.", binary) | ||||
|             ok = False | ||||
|         else: | ||||
|             try: | ||||
| @@ -40,20 +40,36 @@ def main(cli): | ||||
|                 cli.log.error("{fg_red}Can't run `%s --version`", binary) | ||||
|                 ok = False | ||||
|  | ||||
|     # Determine our OS and run platform specific tests | ||||
|     OS = platform.system() | ||||
|  | ||||
|     if OS == "Darwin": | ||||
|         cli.log.info("Detected {fg_cyan}macOS") | ||||
|         cli.log.info("Detected {fg_cyan}macOS.") | ||||
|  | ||||
|     elif OS == "Linux": | ||||
|         cli.log.info("Detected {fg_cyan}linux") | ||||
|         cli.log.info("Detected {fg_cyan}Linux.") | ||||
|         if shutil.which('systemctl'): | ||||
|             test = 'systemctl list-unit-files | grep enabled | grep -i ModemManager' | ||||
|             if os.system(test) == 0: | ||||
|                 cli.log.warn("{bg_yellow}Detected modem manager. Please disable it if you are using Pro Micros") | ||||
|             mm_check = subprocess.run(['systemctl', 'list-unit-files'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=10) | ||||
|             if mm_check.returncode == 0: | ||||
|                 mm = True | ||||
|                 for line in mm_check.stdout.split('\n'): | ||||
|                     if 'ModemManager' in line and 'enabled' in line: | ||||
|                         mm = False | ||||
|  | ||||
|                 if mm: | ||||
|                     cli.log.warn("{bg_yellow}Detected ModemManager. Please disable it if you are using a Pro-Micro.") | ||||
|  | ||||
|             else: | ||||
|                 cli.log.error('{bg_red}Could not run `systemctl list-unit-files`:') | ||||
|                 cli.log.error(mm_check.stderr) | ||||
|  | ||||
|         else: | ||||
|             cli.log.warn("Can't find systemctl to check for ModemManager.") | ||||
|     else: | ||||
|         cli.log.info("Assuming {fg_cyan}Windows") | ||||
|  | ||||
|     else: | ||||
|         cli.log.info("Assuming {fg_cyan}Windows.") | ||||
|  | ||||
|     # Report a summary of our findings to the user | ||||
|     if ok: | ||||
|         cli.log.info('{fg_green}QMK is ready to go') | ||||
|     else: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user