Source code for coalib.bears.requirements.JuliaRequirement
from coalib.bears.requirements.PackageRequirement import PackageRequirement
from coalib.misc.Shell import call_without_output
from coala_utils.string_processing import escape
[docs]class JuliaRequirement(PackageRequirement):
"""
This class is a subclass of ``PackageRequirement``. It specifies the proper
type for ``julia`` packages automatically and provide a function to check
for the requirement.
"""
def __init__(self, package, version=''):
"""
Constructs a new ``JuliaRequirement``, using the ``PackageRequirement``
constructor.
>>> pr = JuliaRequirement('Lint', '19.2')
>>> pr.type
'julia'
>>> pr.package
'Lint'
>>> pr.version
'19.2'
:param package: A string with the name of the package to be installed.
:param version: A version string. Leave empty to specify latest version.
"""
PackageRequirement.__init__(self, 'julia', package, version)
[docs] def is_installed(self):
"""
Checks if the dependency is installed.
:return: ``True`` if dependency is installed, ``False`` otherwise.
"""
# We need to check explicitly if `nothing` is returned, as this happens
# when the package is *registered*, but *not installed*. If it's not
# even registered, julia will throw an exception which lets julia exit
# with an error code different from 0.
code = 'Pkg.installed("{}")==nothing?exit(1):exit(0)'.format(
escape(self.package, '\\"'))
args = ('julia', '-e', code)
return not call_without_output(args)