Passed
Branch v4.0-dev (e005f1)
by Emmanuel
05:49
created

file_utils   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Test Coverage

Coverage 94.74%

Importance

Changes 0
Metric Value
wmc 7
eloc 19
dl 0
loc 38
ccs 18
cts 19
cp 0.9474
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A stakkr.file_utils.get_file() 0 3 1
A stakkr.file_utils.get_lib_basedir() 0 3 1
A stakkr.file_utils.find_project_dir() 0 11 4
A stakkr.file_utils.get_dir() 0 3 1
1
# coding: utf-8
2 1
"""
3
Files Utils to find dir, files, etc.
4
5
Such as : static files locations or directories location
6
"""
7
8 1
from os import getcwd, listdir
9 1
from os.path import dirname, realpath
10
11
12 1
def get_lib_basedir():
13
    """Return the base directory of stakkr, where all files are, to read services and config."""
14 1
    return dirname(realpath(__file__))
15
16
17 1
def get_dir(directory: str):
18
    """Detect if stakkr is a package or a clone and gives the right path for a directory."""
19 1
    return '{}/{}'.format(get_lib_basedir(), directory)
20
21
22 1
def get_file(directory: str, filename: str):
23
    """Detect if stakkr is a package or a clone and gives the right path for a file."""
24 1
    return get_dir(directory) + '/' + filename.lstrip('/')
25
26
27 1
def find_project_dir():
28 1
    path = getcwd()
29 1
    while True:
30 1
        files = listdir(path)
31 1
        if 'stakkr.yml' in files:
32 1
            return path
33
34 1
        new_path = dirname(path)
35 1
        if new_path == path:
36 1
            raise FileNotFoundError('Could not find config file (stakkr.yml)')
37
        path = new_path
38