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)) | ||