Source code for pkgcore.sync.bzr

__all__ = ("bzr_syncer",)

import os

from snakeoil.process.spawn import spawn_get_output

from . import base


[docs] class bzr_syncer(base.VcsSyncer): binary = "bzr" supported_uris = (("bzr+", 5),)
[docs] @classmethod def is_usable_on_filepath(cls, path): bzr_path = os.path.join(path, ".bzr") if cls.disabled or not os.path.isdir(bzr_path): return None code, data = spawn_get_output([cls.binary, "info", path]) if code != 0: # should alert the user somehow return None for line in data: line = line.strip().split(":", 1) if len(line) != 2: continue if line[0] == "parent branch": uri = f"bzr+{line[1].strip()}" return (cls._rewrite_uri_from_stat(bzr_path, uri),) return None
[docs] @staticmethod def parse_uri(raw_uri): if not raw_uri.startswith("bzr+"): raise base.UriError(raw_uri, "doesn't start with bzr+") return raw_uri[4:]
def _initial_pull(self): return [self.binary_path, "branch", self.uri, self.basedir] def _update_existing(self): return [self.binary_path, "pull", self.uri]