diff --git a/osc/core.py b/osc/core.py index 5eafceac..f30135ba 100644 --- a/osc/core.py +++ b/osc/core.py @@ -54,6 +54,7 @@ from . import output from . import store as osc_store from .connection import http_request, http_GET, http_POST, http_PUT, http_DELETE from .obs_scm import File +from .obs_scm import Linkinfo from .obs_scm import Serviceinfo from .output import sanitize_text from .store import Store @@ -265,71 +266,6 @@ def revision_is_empty(rev: Union[None, str, int]): return rev in (None, "") -class Linkinfo: - """linkinfo metadata (which is part of the xml representing a directory) - """ - - def __init__(self): - """creates an empty linkinfo instance""" - self.project = None - self.package = None - self.xsrcmd5 = None - self.lsrcmd5 = None - self.srcmd5 = None - self.error = None - self.rev = None - self.baserev = None - - def read(self, linkinfo_node): - """read in the linkinfo metadata from the ```` element passed as - elementtree node. - If the passed element is ``None``, the method does nothing. - """ - if linkinfo_node is None: - return - self.project = linkinfo_node.get('project') - self.package = linkinfo_node.get('package') - self.xsrcmd5 = linkinfo_node.get('xsrcmd5') - self.lsrcmd5 = linkinfo_node.get('lsrcmd5') - self.srcmd5 = linkinfo_node.get('srcmd5') - self.error = linkinfo_node.get('error') - self.rev = linkinfo_node.get('rev') - self.baserev = linkinfo_node.get('baserev') - - def islink(self): - """:return: ``True`` if the linkinfo is not empty, otherwise ``False``""" - if self.xsrcmd5 or self.lsrcmd5 or self.error is not None: - return True - return False - - def isexpanded(self): - """:return: ``True`` if the package is an expanded link""" - if self.lsrcmd5 and not self.xsrcmd5: - return True - return False - - def haserror(self): - """:return: ``True`` if the link is in error state (could not be applied)""" - if self.error: - return True - return False - - def __str__(self): - """return an informatory string representation""" - if self.islink() and not self.isexpanded(): - return 'project %s, package %s, xsrcmd5 %s, rev %s' \ - % (self.project, self.package, self.xsrcmd5, self.rev) - elif self.islink() and self.isexpanded(): - if self.haserror(): - return 'broken link to project %s, package %s, srcmd5 %s, lsrcmd5 %s: %s' \ - % (self.project, self.package, self.srcmd5, self.lsrcmd5, self.error) - else: - return 'expanded link to project %s, package %s, srcmd5 %s, lsrcmd5 %s' \ - % (self.project, self.package, self.srcmd5, self.lsrcmd5) - else: - return 'None' - - class DirectoryServiceinfo: def __init__(self): self.code = None diff --git a/osc/obs_scm/__init__.py b/osc/obs_scm/__init__.py index 8ce0a462..403f952d 100644 --- a/osc/obs_scm/__init__.py +++ b/osc/obs_scm/__init__.py @@ -1,2 +1,3 @@ from .file import File +from .linkinfo import Linkinfo from .serviceinfo import Serviceinfo \ No newline at end of file diff --git a/osc/obs_scm/linkinfo.py b/osc/obs_scm/linkinfo.py new file mode 100644 index 00000000..11e94bbb --- /dev/null +++ b/osc/obs_scm/linkinfo.py @@ -0,0 +1,63 @@ +class Linkinfo: + """linkinfo metadata (which is part of the xml representing a directory) + """ + + def __init__(self): + """creates an empty linkinfo instance""" + self.project = None + self.package = None + self.xsrcmd5 = None + self.lsrcmd5 = None + self.srcmd5 = None + self.error = None + self.rev = None + self.baserev = None + + def read(self, linkinfo_node): + """read in the linkinfo metadata from the ```` element passed as + elementtree node. + If the passed element is ``None``, the method does nothing. + """ + if linkinfo_node is None: + return + self.project = linkinfo_node.get('project') + self.package = linkinfo_node.get('package') + self.xsrcmd5 = linkinfo_node.get('xsrcmd5') + self.lsrcmd5 = linkinfo_node.get('lsrcmd5') + self.srcmd5 = linkinfo_node.get('srcmd5') + self.error = linkinfo_node.get('error') + self.rev = linkinfo_node.get('rev') + self.baserev = linkinfo_node.get('baserev') + + def islink(self): + """:return: ``True`` if the linkinfo is not empty, otherwise ``False``""" + if self.xsrcmd5 or self.lsrcmd5 or self.error is not None: + return True + return False + + def isexpanded(self): + """:return: ``True`` if the package is an expanded link""" + if self.lsrcmd5 and not self.xsrcmd5: + return True + return False + + def haserror(self): + """:return: ``True`` if the link is in error state (could not be applied)""" + if self.error: + return True + return False + + def __str__(self): + """return an informatory string representation""" + if self.islink() and not self.isexpanded(): + return 'project %s, package %s, xsrcmd5 %s, rev %s' \ + % (self.project, self.package, self.xsrcmd5, self.rev) + elif self.islink() and self.isexpanded(): + if self.haserror(): + return 'broken link to project %s, package %s, srcmd5 %s, lsrcmd5 %s: %s' \ + % (self.project, self.package, self.srcmd5, self.lsrcmd5, self.error) + else: + return 'expanded link to project %s, package %s, srcmd5 %s, lsrcmd5 %s' \ + % (self.project, self.package, self.srcmd5, self.lsrcmd5) + else: + return 'None'