diff options
Diffstat (limited to 'lib/python/qmk/path.py')
| -rw-r--r-- | lib/python/qmk/path.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/python/qmk/path.py b/lib/python/qmk/path.py new file mode 100644 index 000000000..f2a8346a5 --- /dev/null +++ b/lib/python/qmk/path.py | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | """Functions that help us work with files and folders. | ||
| 2 | """ | ||
| 3 | import os | ||
| 4 | |||
| 5 | |||
| 6 | def keymap(keyboard): | ||
| 7 | """Locate the correct directory for storing a keymap. | ||
| 8 | |||
| 9 | Args: | ||
| 10 | keyboard | ||
| 11 | The name of the keyboard. Example: clueboard/66/rev3 | ||
| 12 | """ | ||
| 13 | for directory in ['.', '..', '../..', '../../..', '../../../..', '../../../../..']: | ||
| 14 | basepath = os.path.normpath(os.path.join('keyboards', keyboard, directory, 'keymaps')) | ||
| 15 | |||
| 16 | if os.path.exists(basepath): | ||
| 17 | return basepath | ||
| 18 | |||
| 19 | logging.error('Could not find keymaps directory!') | ||
| 20 | raise NoSuchKeyboardError('Could not find keymaps directory for: %s' % keyboard) | ||
| 21 | |||
| 22 | |||
| 23 | def normpath(path): | ||
| 24 | """Returns the fully resolved absolute path to a file. | ||
| 25 | |||
| 26 | This function will return the absolute path to a file as seen from the | ||
| 27 | directory the script was called from. | ||
| 28 | """ | ||
| 29 | if path and path[0] == '/': | ||
| 30 | return os.path.normpath(path) | ||
| 31 | |||
| 32 | return os.path.normpath(os.path.join(os.environ['ORIG_CWD'], path)) | ||
