diff options
| author | Nick Brassel <nick@tzarc.org> | 2025-03-19 12:45:28 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-19 12:45:28 +1100 |
| commit | 386a5019a8147136c2732452cd87954378e0ec16 (patch) | |
| tree | 9c172e40a59919ca98fcc123dd7ca4abf6794b27 /lib/python/qmk/path.py | |
| parent | 271efeb8bc99922e6ce1a664f82bc922cd2e8121 (diff) | |
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 @@ | |||
| 3 | import logging | 3 | import logging |
| 4 | import os | 4 | import os |
| 5 | import argparse | 5 | import argparse |
| 6 | from pathlib import Path | 6 | from pathlib import Path, PureWindowsPath, PurePosixPath |
| 7 | 7 | ||
| 8 | from qmk.constants import MAX_KEYBOARD_SUBFOLDERS, QMK_FIRMWARE, QMK_USERSPACE, HAS_QMK_USERSPACE | 8 | from qmk.constants import MAX_KEYBOARD_SUBFOLDERS, QMK_FIRMWARE, QMK_USERSPACE, HAS_QMK_USERSPACE |
| 9 | from qmk.errors import NoSuchKeyboardError | 9 | from qmk.errors import NoSuchKeyboardError |
| @@ -146,6 +146,28 @@ def normpath(path): | |||
| 146 | return Path(os.environ['ORIG_CWD']) / path | 146 | return Path(os.environ['ORIG_CWD']) / path |
| 147 | 147 | ||
| 148 | 148 | ||
| 149 | def unix_style_path(path): | ||
| 150 | """Converts a Windows-style path with drive letter to a Unix path. | ||
| 151 | |||
| 152 | Path().as_posix() normally returns the path with drive letter and forward slashes, so is inappropriate for `Makefile` paths. | ||
| 153 | |||
| 154 | Passes through unadulterated if the path is not a Windows-style path. | ||
| 155 | |||
| 156 | Args: | ||
| 157 | |||
| 158 | path | ||
| 159 | The path to convert. | ||
| 160 | |||
| 161 | Returns: | ||
| 162 | The input path converted to Unix format. | ||
| 163 | """ | ||
| 164 | if isinstance(path, PureWindowsPath): | ||
| 165 | p = list(path.parts) | ||
| 166 | p[0] = f'/{p[0][0].lower()}' # convert from `X:/` to `/x` | ||
| 167 | path = PurePosixPath(*p) | ||
| 168 | return path | ||
| 169 | |||
| 170 | |||
| 149 | class FileType(argparse.FileType): | 171 | class FileType(argparse.FileType): |
| 150 | def __init__(self, *args, **kwargs): | 172 | def __init__(self, *args, **kwargs): |
| 151 | # Use UTF8 by default for stdin | 173 | # Use UTF8 by default for stdin |
