Source code for osctiny.utils.base

"""
Common base classes
^^^^^^^^^^^^^^^^^^^
"""
# pylint: disable=too-few-public-methods,
import os

from lxml.etree import tounicode


[docs]class ExtensionBase: """ Base class for extensions of the :py:class:`Ocs` entry point. """ def __init__(self, osc_obj): self.osc = osc_obj
# pylint: disable=too-many-instance-attributes
[docs]class DataDir: """ Compatibility layer for the ``.osc`` data directory used by the ``osc`` CLI """ data_dir = ".osc" osclib_version_string = "1.0" # pylint: disable=too-many-arguments def __init__(self, osc, path, project, package=None, overwrite=False): self.osc = osc self.path = os.path.join(path, self.data_dir) self.project = project self.package = package self._apiurl = os.path.join(self.path, "_apiurl") self._project = os.path.join(self.path, "_project") self._package = os.path.join(self.path, "_package") self._files = os.path.join(self.path, "_files") self._osclib_version = os.path.join(self.path, "_osclib_version") if not os.path.isdir(self.path): os.makedirs(self.path) overwrite = True if overwrite: self.write_dir_contents()
[docs] def write_dir_contents(self): """ Create files with default content in ``.osc`` sub-directory """ with open(self._apiurl, "w") as filehandle: filehandle.write(self.osc.url + os.linesep) with open(self._osclib_version, "w") as filehandle: filehandle.write(self.osclib_version_string + os.linesep) with open(self._project, "w") as filehandle: filehandle.write(self.project + os.linesep) if self.package: with open(self._package, "w") as filehandle: filehandle.write(self.package + os.linesep) with open(self._files, "w") as filehandle: filehandle.write( tounicode(self.osc.packages.get_files(self.project, self.package)) )