summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server/Plugins/Packages/Readers/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Bcfg2/Server/Plugins/Packages/Readers/__init__.py')
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Packages/Readers/__init__.py36
1 files changed, 36 insertions, 0 deletions
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")