summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server/Plugins/Packages/Readers
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Bcfg2/Server/Plugins/Packages/Readers')
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Packages/Readers/Bzip2.py14
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Packages/Readers/Gzip.py11
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Packages/Readers/None.py10
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Packages/Readers/Xz.py11
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Packages/Readers/__init__.py36
5 files changed, 82 insertions, 0 deletions
diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/Readers/Bzip2.py b/src/lib/Bcfg2/Server/Plugins/Packages/Readers/Bzip2.py
new file mode 100644
index 000000000..2267197ca
--- /dev/null
+++ b/src/lib/Bcfg2/Server/Plugins/Packages/Readers/Bzip2.py
@@ -0,0 +1,14 @@
+""" Reader for bzip2 compressed package sources. """
+
+import bz2
+from Bcfg2.Server.Plugins.Packages.Readers import Reader
+
+
+class Bzip2Reader(Reader):
+ extension = 'bz'
+
+ def _open(self, filename):
+ return bz2.BZ2File(filename)
+
+ def readable(self):
+ return True
diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/Readers/Gzip.py b/src/lib/Bcfg2/Server/Plugins/Packages/Readers/Gzip.py
new file mode 100644
index 000000000..8e67e2b33
--- /dev/null
+++ b/src/lib/Bcfg2/Server/Plugins/Packages/Readers/Gzip.py
@@ -0,0 +1,11 @@
+""" Reader for gzip compressed package sources. """
+
+import gzip
+from Bcfg2.Server.Plugins.Packages.Readers import Reader
+
+
+class GzipReader(Reader):
+ extension = 'gz'
+
+ def _open(self, filename):
+ return gzip.GzipFile(filename)
diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/Readers/None.py b/src/lib/Bcfg2/Server/Plugins/Packages/Readers/None.py
new file mode 100644
index 000000000..2f7a18d84
--- /dev/null
+++ b/src/lib/Bcfg2/Server/Plugins/Packages/Readers/None.py
@@ -0,0 +1,10 @@
+""" Reader for uncompressed package sources. """
+
+from Bcfg2.Server.Plugins.Packages.Readers import Reader
+
+
+class NoneReader(Reader):
+ extension = ''
+
+ def _open(self, filename):
+ return open(filename)
diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/Readers/Xz.py b/src/lib/Bcfg2/Server/Plugins/Packages/Readers/Xz.py
new file mode 100644
index 000000000..39a058767
--- /dev/null
+++ b/src/lib/Bcfg2/Server/Plugins/Packages/Readers/Xz.py
@@ -0,0 +1,11 @@
+""" Reader for lzma compressed package sources. """
+
+import lzma
+from Bcfg2.Server.Plugins.Packages.Readers import Reader
+
+
+class XzReader(Reader):
+ extension = 'xz'
+
+ def _open(self, filename):
+ return lzma.LZMAFile(filename)
diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/Readers/__init__.py b/src/lib/Bcfg2/Server/Plugins/Packages/Readers/__init__.py
new file mode 100644
index 000000000..51b4fb79c
--- /dev/null
+++ b/src/lib/Bcfg2/Server/Plugins/Packages/Readers/__init__.py
@@ -0,0 +1,36 @@
+"""This module implements different readers for package files."""
+
+from io import IOBase
+from Bcfg2.Compat import walk_packages
+
+
+def get_readers():
+ """ Return all available packages readers. """
+ return [m[1] # pylint: disable=C0103
+ for m in walk_packages(path=__path__)]
+
+
+class Reader(IOBase):
+ extension = None
+
+ def __init__(self, name):
+ self.name = name
+ self._file = self._open(name)
+
+ def _open(self, filename):
+ raise NotImplementedError
+
+ def read(self, size=-1):
+ return self._file.read(size)
+
+ def readable(self):
+ return self._file.readable()
+
+ def readline(self, size=-1):
+ return self._file.readline(size)
+
+ def readlines(self, hint=None):
+ return self._file.readlines(size)
+
+ def writelines(self, lines):
+ self._unsupported("writelines")