# -*- coding: utf-8 -*- # Copyright (C) 2012 Anaconda, Inc # SPDX-License-Identifier: BSD-3-Clause import os from .. import env class RequirementsSpec(object): ''' Reads depedencies from a requirements.txt file and returns an Environment object from it. ''' msg = None extensions = set(['.txt', ]) def __init__(self, filename=None, name=None, **kwargs): self.filename = filename self.name = name self.msg = None def _valid_file(self): if os.path.exists(self.filename): return True else: self.msg = "There is no requirements.txt" return False def _valid_name(self): if self.name is None: self.msg = "Environment with requirements.txt file needs a name" return False else: return True def can_handle(self): return self._valid_file() and self._valid_name() @property def environment(self): dependencies = [] with open(self.filename) as reqfile: for line in reqfile: line = line.strip() if not line or line.startswith('#'): continue dependencies.append(line) return env.Environment( name=self.name, dependencies=dependencies )