Completed
Pull Request — master (#2395)
by Mischa
01:50
created

NpmRequirement.install_command()   A

Complexity

Conditions 1

Size

Total Lines 10

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 10
rs 9.4285
1
from coalib.bears.requirements.PackageRequirement import PackageRequirement
2
from coalib.misc.Shell import call_without_output
3
4
5
class NpmRequirement(PackageRequirement):
6
    """
7
    This class is a subclass of ``PackageRequirement``, and helps specifying
8
    requirements from ``npm``, without using the manager name.
9
    """
10
11
    def __init__(self, package, version=""):
12
        """
13
        Constructs a new ``NpmRequirement``, using the ``PackageRequirement``
14
        constructor.
15
16
        >>> pr = NpmRequirement('ramllint', '6.2')
17
        >>> pr.manager
18
        'npm'
19
        >>> pr.package
20
        'ramllint'
21
        >>> pr.version
22
        '6.2'
23
24
        :param package: A string with the name of the package to be installed.
25
        :param version: A version string. Leave empty to specify latest version.
26
        """
27
        PackageRequirement.__init__(self, 'npm', package, version)
28
29
    def install_command(self):
30
        """
31
        Creates the installation command for the instance of the class.
32
33
        >>> NpmRequirement('alex', '2').install_command()
34
        'npm install alex@2'
35
36
        :param return: A string with the installation command.
37
        """
38
        return "npm install {}@{}".format(self.package, self.version)
39
40
    def is_installed(self):
41
        """
42
        Checks if the dependency is installed.
43
44
        :param return: True if dependency is installed, false otherwise.
45
        """
46
        return not call_without_output(['npm', 'show', self.package])
47