Completed
Push — develop ( dc239e...76c4d9 )
by Jace
02:21
created

parse_arguments()   A

Complexity

Conditions 1

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1.4218

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
dl 0
loc 8
rs 9.4285
ccs 1
cts 4
cp 0.25
crap 1.4218
1 1
import os
2 1
import argparse
3 1
import logging
4
5
6 1
CONFIG_FILENAMES = ['.verchew', '.verchewrc', 'verchew.ini', '.verchew.ini']
7
8
9 1
log = logging.getLogger(__name__)
10
11
12 1
def main():
13
    args = parse_arguments()
14
    configure_logging(args.verbose)
15
    find_config()
16
17
18 1
def parse_arguments():
19
    parser = argparse.ArgumentParser()
20
    # TODO: add '--version' option
21
    # parser.add_argument('-V', '--version', action='version', version=VERSION)
22
    parser.add_argument('-v', '--verbose', action='count', default=0,
23
                        help="enable verbose logging")
24
25
    return parser.parse_args()
26
27
28 1
def configure_logging(count=0):
29
    if count == 0:
30
        level = logging.WARNING
31
    elif count == 1:
32
        level = logging.INFO
33
    else:
34
        level = logging.DEBUG
35
36
    logging.basicConfig(level=level, format="%(levelname)s: %(message)s")
37
38
39 1
def find_config(root=None, config_filenames=None):
40 1
    root = root or os.getcwd()
41 1
    config_filenames = config_filenames or CONFIG_FILENAMES
42
43 1
    path = None
44 1
    log.info("Looking for config file in: %s", root)
45 1
    log.debug("Filename options: %s", ", ".join(config_filenames))
46 1
    for filename in os.listdir(root):
47 1
        if filename in config_filenames:
48 1
            path = os.path.join(root, filename)
49 1
            log.info("Found config file: %s", path)
50 1
            return path
51
52 1
    msg = "No config file found in: {0}".format(root)
53 1
    raise RuntimeError(msg)
54
55
56
if __name__ == '__main__':  # pragma: no cover
57
    main()
58