Module mfplugin.file
Classes
class PluginFile (plugin_filepath)-
Expand source code
class PluginFile(object): def __init__(self, plugin_filepath): self.plugins_base_dir = get_default_plugins_base_dir() """Plugins base directory (string).""" if not os.path.isfile(plugin_filepath): raise BadPluginFile("file: %s not found" % plugin_filepath) self.plugin_filepath = plugin_filepath """Plugin file path (string).""" self.__loaded = False def load(self): if self.__loaded: return self.__loaded = True if not os.path.isfile(self.plugin_filepath): raise BadPluginFile("%s does not exist" % self.plugin_filepath) try: tf = tarfile.open(name=self.plugin_filepath, mode='r') except Exception as e: raise BadPluginFile( "can't open %s as a tar.gz file => this is probably not a " "metwork >= 1.0 plugin" % self.plugin_filepath, original_exception=e) try: reader1 = tf.extractfile("metwork_plugin/.layerapi2_label") label = reader1.read().decode('utf8').strip() self._name = layerapi2_label_to_plugin_name(label) except Exception as e: raise BadPluginFile( "can't read/find metwork_plugin/.layerapi2_label file in " "plugin", original_exception=e) try: reader2 = tf.extractfile("metwork_plugin/.metadata.json") metadata = json.loads(reader2.read().decode('utf8').strip()) self._version = metadata['version'] self._release = metadata['release'] self._build_host = metadata['build_host'] self._build_date = metadata['build_date'] self._size = metadata['size'] self._summary = metadata['summary'] self._license = metadata['license'] self._packager = metadata['packager'] self._vendor = metadata['vendor'] self._url = metadata['url'] except Exception as e: raise BadPluginFile( "can't read/find metwork_plugin/.metadata.json file in " "plugin", original_exception=e) try: reader3 = tf.extractfile("metwork_plugin/.files.json") self._files = json.loads(reader3.read().decode('utf8').strip()) except Exception as e: raise BadPluginFile( "can't read/find metwork_plugin/.files.json file in " "plugin", original_exception=e) @property def summary(self): self.load() return self._summary @property def license(self): self.load() return self._license @property def packager(self): self.load() return self._packager @property def name(self): self.load() return self._name @property def vendor(self): self.load() return self._vendor @property def url(self): self.load() return self._url @property def version(self): self.load() return self._version @property def release(self): self.load() return self._release @property def size(self): self.load() return self._size @property def build_host(self): self.load() return self._build_host @property def build_date(self): self.load() return self._build_date @property def files(self): self.load() return self._files @property def home(self): return NoneInstance variables
prop build_date-
Expand source code
@property def build_date(self): self.load() return self._build_date prop build_host-
Expand source code
@property def build_host(self): self.load() return self._build_host prop files-
Expand source code
@property def files(self): self.load() return self._files prop home-
Expand source code
@property def home(self): return None prop license-
Expand source code
@property def license(self): self.load() return self._license prop name-
Expand source code
@property def name(self): self.load() return self._name prop packager-
Expand source code
@property def packager(self): self.load() return self._packager var plugin_filepath-
Plugin file path (string).
var plugins_base_dir-
Plugins base directory (string).
prop release-
Expand source code
@property def release(self): self.load() return self._release prop size-
Expand source code
@property def size(self): self.load() return self._size prop summary-
Expand source code
@property def summary(self): self.load() return self._summary prop url-
Expand source code
@property def url(self): self.load() return self._url prop vendor-
Expand source code
@property def vendor(self): self.load() return self._vendor prop version-
Expand source code
@property def version(self): self.load() return self._version
Methods
def load(self)-
Expand source code
def load(self): if self.__loaded: return self.__loaded = True if not os.path.isfile(self.plugin_filepath): raise BadPluginFile("%s does not exist" % self.plugin_filepath) try: tf = tarfile.open(name=self.plugin_filepath, mode='r') except Exception as e: raise BadPluginFile( "can't open %s as a tar.gz file => this is probably not a " "metwork >= 1.0 plugin" % self.plugin_filepath, original_exception=e) try: reader1 = tf.extractfile("metwork_plugin/.layerapi2_label") label = reader1.read().decode('utf8').strip() self._name = layerapi2_label_to_plugin_name(label) except Exception as e: raise BadPluginFile( "can't read/find metwork_plugin/.layerapi2_label file in " "plugin", original_exception=e) try: reader2 = tf.extractfile("metwork_plugin/.metadata.json") metadata = json.loads(reader2.read().decode('utf8').strip()) self._version = metadata['version'] self._release = metadata['release'] self._build_host = metadata['build_host'] self._build_date = metadata['build_date'] self._size = metadata['size'] self._summary = metadata['summary'] self._license = metadata['license'] self._packager = metadata['packager'] self._vendor = metadata['vendor'] self._url = metadata['url'] except Exception as e: raise BadPluginFile( "can't read/find metwork_plugin/.metadata.json file in " "plugin", original_exception=e) try: reader3 = tf.extractfile("metwork_plugin/.files.json") self._files = json.loads(reader3.read().decode('utf8').strip()) except Exception as e: raise BadPluginFile( "can't read/find metwork_plugin/.files.json file in " "plugin", original_exception=e)