Completed
Pull Request — master (#2393)
by Zatreanu
01:55
created

GoRequirement.install_command()   A

Complexity

Conditions 1

Size

Total Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
dl 0
loc 11
rs 9.4285
1
from coalib.bears.requirements.PackageRequirement import PackageRequirement
2
import shutil
3
4
class GoRequirement(PackageRequirement):
5
    """
6
    This class is a subclass of ``PackageRequirement``, and helps specifying
7
    requirements from ``go``, without using the manager name.
8
    """
9
10
    def __init__(self, package, version="", flag=""):
11
        """
12
        Constructs a new ``GoRequirement``, using the ``PackageRequirement``
13
        constructor.
14
15
        >>> pr = GoRequirement('github.com/golang/lint/golint', '19.2', '-u')
16
        >>> pr.manager
17
        'go'
18
        >>> pr.package
19
        'github.com/golang/lint/golint'
20
        >>> pr.version
21
        '19.2'
22
        >>> pr.flag
23
        '-u'
24
25
        :param package: A string with the name of the package to be installed.
26
        :param version: A version string. Leave empty to specify latest version.
27
        :param flag:    A string that specifies any additional flags, that
28
                        are passed to the manager.
29
        """
30
        PackageRequirement.__init__(self, 'go', package, version)
31
        self.flag = flag
32
33
    def install_command(self):
34
        """
35
        Creates the installation command for the instance of the class.
36
37
        >>> pr = PipRequirement('github.com/golang/lint/golint', '', '-u')
38
        >>> pr.install_command()
39
        'go get -u github.com/golang/lint/golint'
40
41
        :param return: A string with the installation command.
42
        """
43
        return "go get {} {}".format(self.flag, self.package)
44
45
    def is_installed(self):
46
        """
47
        Checks if the dependency is installed.
48
49
        >>> pr = GoRequirement('golint')
50
        >>> pr.is_installed()
51
        True
52
53
        >>> pr = GoRequirement('some_package')
54
        >>> pr.is_installed()
55
        False
56
57
        :param return: True if dependency is installed, false otherwise.
58
        """
59
        if shutil.which(self.package):
60
            return True
61
        else:
62
            return False
63