Beispiel #1
0
    def install_extension(self, extension_path):
        """Install the extension from the file or directory extension_path"""
        self.logger.log("Request to install '%s'" % extension_path)
        if os.path.isfile(extension_path):
            # it is a file.  if it ends with .zip, assume it is a zip archive.
            # otherwise assume it is a tarball.
            extension_dir = None
            member_names = []
            try:
                if extension_path[-4:] == '.zip':
                    member_names = weecfg.extract_zip(extension_path,
                                                      self.tmpdir, self.logger)
                else:
                    member_names = weecfg.extract_tar(extension_path,
                                                      self.tmpdir, self.logger)
                extension_reldir = os.path.commonprefix(member_names)
                if extension_reldir == '':
                    raise InstallError(
                        "Unable to install from '%s': no common path "
                        "(the extension archive contains more than a "
                        "single root directory)" % extension_path)
                extension_dir = os.path.join(self.tmpdir, extension_reldir)
                self.install_from_dir(extension_dir)
            finally:
                if extension_dir:
                    shutil.rmtree(extension_dir, ignore_errors=True)
        elif os.path.isdir(extension_path):
            # It's a directory, presumably containing the extension components.
            # Install directly
            self.install_from_dir(extension_path)
        else:
            raise InstallError("Extension '%s' not found." % extension_path)

        self.logger.log("Finished installing extension '%s'" % extension_path)
Beispiel #2
0
 def install_extension(self, extension_path):
     """Install the extension from the file or directory extension_path"""
     self.logger.log("Request to install '%s'" % extension_path)
     if os.path.isfile(extension_path):
         # it is a file.  if it ends with .zip, assume it is a zip archive.
         # otherwise assume it is a tarball.
         extension_dir = None
         member_names = []
         try:
             if extension_path[-4:] == '.zip':
                 member_names = weecfg.extract_zip(extension_path,
                                                   self.tmpdir, self.logger)
             else:
                 member_names = weecfg.extract_tar(extension_path,
                                                   self.tmpdir, self.logger)
             extension_reldir = os.path.commonprefix(member_names)
             if extension_reldir == '':
                 raise InstallError("Unable to install from '%s': no common path (the extension archive contains more than a single root directory)" % extension_path)
             extension_dir = os.path.join(self.tmpdir, extension_reldir)
             self.install_from_dir(extension_dir)
         finally:
             if extension_dir:
                 shutil.rmtree(extension_dir, ignore_errors=True)
     elif os.path.isdir(extension_path):
         # It's a directory, presumably containing the extension components.
         # Install directly
         self.install_from_dir(extension_path)
     else:
         raise InstallError("Extension '%s' not found." % extension_path)
 
     self.logger.log("Finished installing extension '%s'" % extension_path)