Пример #1
0
    def use(self, name):
        envPath = os.path.normpath(os.path.join(self.envsPath, name))
        if not os.path.isdir(envPath):
            return Fail(InvalidOptionError("Environment '%s' does not exist."))

        envSpec = SubenvSpec.fromEnvPath(envPath)
        current = os.path.join(self.basePath, "current")

        return Try.attempt(makeSymlink, envSpec.envPath, current, True) \
            .then(dinfo("Current substance environment now: '%s'" % envSpec.name))
Пример #2
0
 def ls(self):
     envs = []
     current = self._getCurrentEnv()
     for f in os.listdir(self.envsPath):
         path = os.path.join(self.envsPath, f)
         if os.path.isdir(path):
             env = SubenvSpec.fromEnvPath(path)
             if current and env.envPath == current.envPath:
                 env.current = True
             envs.append(env)
     return OK(envs)
Пример #3
0
 def _getCurrentEnv(self):
     try:
         current = readSymlink(os.path.join(self.basePath, "current"))
         return SubenvSpec.fromEnvPath(current)
     except Exception as err:
         return None
Пример #4
0
 def init(self, path, env={}):
     logger.info("Initializing subenv from: %s" % path)
     return SubenvSpec.fromSpecPath(path, env) \
         .bind(self._applyEnv)
Пример #5
0
 def _loadEnvSpec(self, name):
     envPath = os.path.normpath(os.path.join(self.envsPath, name))
     if not os.path.isdir(envPath):
         return Fail(
             InvalidOptionError("Environment '%s' does not exist." % name))
     return OK(SubenvSpec.fromEnvPath(envPath))