Completed
Push — master ( 0e7781...b2dc6b )
by Alexandre M.
01:04
created

echo_list()   A

Complexity

Conditions 2

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 2
c 1
b 0
f 1
dl 0
loc 3
rs 10
1
# -*- coding: utf-8 -*-
2
"""
3
Utilities for the CLI functions.
4
"""
5
from __future__ import print_function, division, unicode_literals, absolute_import
6
7
import os.path as path
8
import re
9
10
import click
11
12
from .. import Crumb
13
14
15
# different context options
16
CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help'])
17
UNKNOWN_OPTIONS = dict(allow_extra_args=True,
18
                       ignore_unknown_options=True)
19
20
21
# specification of existing ParamTypes
22
ExistingDirPath  = click.Path(exists=True, file_okay=False, resolve_path=True)
23
ExistingFilePath = click.Path(exists=True,  dir_okay=False, resolve_path=True)
24
UnexistingFilePath = click.Path(dir_okay=False, resolve_path=True)
25
26
27
# validators
28
def check_not_none(ctx, param, value):
29
    if value is None:
30
        raise click.BadParameter('got {}.'.format(value))
31
    return value
32
33
34
# declare custom click.ParamType
35
class RegularExpression(click.ParamType):
36
    name = 'regex'
37
38
    def convert(self, value, param, ctx):
39
        try:
40
            rex = re.compile(value, re.IGNORECASE)
41
        except ValueError:
42
            self.fail('%s is not a valid regular expression.' % value, param, ctx)
43
        else:
44
            return rex
45
46
47
class CrumbPath(click.ParamType):
48
    name = 'crumb'
49
50
    def convert(self, value, param, ctx):
51
        try:
52
            cr = Crumb(path.expanduser(value))
53
        except ValueError:
54
            self.fail('%s is not a valid crumb path.' % value, param, ctx)
55
        else:
56
            return cr
57
58
# other utilities
59
def echo_list(alist):
60
    for i in alist:
61
        click.echo(i)
62