Friendly wrapper around Popen. Return stdout output, stderr output, and OS status code.
(args, stdout_encoding="utf-8")
| 15 | |
| 16 | |
| 17 | def popen_wrapper(args, stdout_encoding="utf-8"): |
| 18 | """ |
| 19 | Friendly wrapper around Popen. |
| 20 | |
| 21 | Return stdout output, stderr output, and OS status code. |
| 22 | """ |
| 23 | try: |
| 24 | p = run(args, capture_output=True, close_fds=os.name != "nt") |
| 25 | except OSError as err: |
| 26 | raise CommandError("Error executing %s" % args[0]) from err |
| 27 | return ( |
| 28 | p.stdout.decode(stdout_encoding), |
| 29 | p.stderr.decode(DEFAULT_LOCALE_ENCODING, errors="replace"), |
| 30 | p.returncode, |
| 31 | ) |
| 32 | |
| 33 | |
| 34 | def handle_extensions(extensions): |