Passed
Push — develop ( 6fb855...7cfc9a )
by Dean
02:39
created

BackupGroup   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Test Coverage

Coverage 31.58%
Metric Value
dl 0
loc 28
ccs 6
cts 19
cp 0.3158
rs 10
wmc 8

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __init__() 0 3 1
A load() 0 5 1
B list() 0 14 5
A __repr__() 0 2 1
1 1
from plugin.core.backup.constants import BACKUP_PATH
2
3 1
import os
4
5
6 1
class BackupGroup(object):
7 1
    def __init__(self, name, path):
8
        self.name = name
9
        self.path = path
10
11 1
    @classmethod
12
    def load(cls, path):
13
        name = os.path.relpath(path, BACKUP_PATH)
14
15
        return cls(name, path)
16
17 1
    @classmethod
18 1
    def list(cls, search_path=BACKUP_PATH, max_depth=0):
19
        names = os.listdir(search_path)
20
21
        for name in names:
22
            path = os.path.join(search_path, name)
23
24
            if path.endswith('.bgr'):
25
                # Load backup group
26
                yield cls.load(path)
27
            elif max_depth > 0:
28
                # Search sub-directory for backup groups
29
                for p in cls.list(path, max_depth - 1):
30
                    yield p
31
32 1
    def __repr__(self):
33
        return '<BackupGroup name: %r>' % self.name
34