diff options
author | Nick Brassel <[email protected]> | 2025-03-19 12:45:28 +1100 |
---|---|---|
committer | GitHub <[email protected]> | 2025-03-19 12:45:28 +1100 |
commit | 386a5019a8147136c2732452cd87954378e0ec16 (patch) | |
tree | 9c172e40a59919ca98fcc123dd7ca4abf6794b27 /lib/python/qmk/path.py | |
parent | 271efeb8bc99922e6ce1a664f82bc922cd2e8121 (diff) | |
download | qmk_firmware-386a5019a8147136c2732452cd87954378e0ec16.tar.gz qmk_firmware-386a5019a8147136c2732452cd87954378e0ec16.zip |
Fixup MSYS + unix-style paths in Community Modules. (#25012)
Fixup MSYS + unix-style paths.
Diffstat (limited to 'lib/python/qmk/path.py')
-rw-r--r-- | lib/python/qmk/path.py | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/lib/python/qmk/path.py b/lib/python/qmk/path.py index 61daad585f..c47ed18362 100644 --- a/lib/python/qmk/path.py +++ b/lib/python/qmk/path.py @@ -3,7 +3,7 @@ import logging import os import argparse -from pathlib import Path +from pathlib import Path, PureWindowsPath, PurePosixPath from qmk.constants import MAX_KEYBOARD_SUBFOLDERS, QMK_FIRMWARE, QMK_USERSPACE, HAS_QMK_USERSPACE from qmk.errors import NoSuchKeyboardError @@ -146,6 +146,28 @@ def normpath(path): return Path(os.environ['ORIG_CWD']) / path +def unix_style_path(path): + """Converts a Windows-style path with drive letter to a Unix path. + + Path().as_posix() normally returns the path with drive letter and forward slashes, so is inappropriate for `Makefile` paths. + + Passes through unadulterated if the path is not a Windows-style path. + + Args: + + path + The path to convert. + + Returns: + The input path converted to Unix format. + """ + if isinstance(path, PureWindowsPath): + p = list(path.parts) + p[0] = f'/{p[0][0].lower()}' # convert from `X:/` to `/x` + path = PurePosixPath(*p) + return path + + class FileType(argparse.FileType): def __init__(self, *args, **kwargs): # Use UTF8 by default for stdin |