mirror of https://github.com/borgbackup/borg.git
helpers: fix imports and helpers.exit_code location
code expects to be able to assign to helpers.exit_code (which stopped working correctly when exit_code was moved to helpers.misc module).
This commit is contained in:
parent
558282df58
commit
a5f7c7a1ce
|
@ -9,3 +9,25 @@ package, which are imported into here for compatibility.
|
|||
# misc.py is just the moved/renamed old helpers.py for an easy start.
|
||||
# over time, more and more stuff shall be moved from misc to other modules.
|
||||
from .misc import *
|
||||
|
||||
|
||||
"""
|
||||
The global exit_code variable is used so that modules other than archiver can increase the program exit code if a
|
||||
warning or error occurred during their operation. This is different from archiver.exit_code, which is only accessible
|
||||
from the archiver object.
|
||||
|
||||
Note: keep this in helpers/__init__.py as the code expects to be able to assign to helpers.exit_code.
|
||||
"""
|
||||
exit_code = EXIT_SUCCESS
|
||||
|
||||
|
||||
def set_ec(ec):
|
||||
"""
|
||||
Sets the exit code of the program, if an exit code higher or equal than this is set, this does nothing. This
|
||||
makes EXIT_ERROR override EXIT_WARNING, etc..
|
||||
|
||||
ec: exit code to set
|
||||
"""
|
||||
global exit_code
|
||||
exit_code = max(exit_code, ec)
|
||||
return exit_code
|
||||
|
|
|
@ -34,36 +34,16 @@ from shutil import get_terminal_size
|
|||
import msgpack
|
||||
import msgpack.fallback
|
||||
|
||||
from .logger import create_logger
|
||||
from ..logger import create_logger
|
||||
logger = create_logger()
|
||||
|
||||
import borg.crypto.low_level
|
||||
from . import __version__ as borg_version
|
||||
from . import __version_tuple__ as borg_version_tuple
|
||||
from . import chunker
|
||||
from . import hashindex
|
||||
from . import shellpattern
|
||||
from .constants import * # NOQA
|
||||
|
||||
|
||||
'''
|
||||
The global exit_code variable is used so that modules other than archiver can increase the program exit code if a
|
||||
warning or error occurred during their operation. This is different from archiver.exit_code, which is only accessible
|
||||
from the archiver object.
|
||||
'''
|
||||
exit_code = EXIT_SUCCESS
|
||||
|
||||
|
||||
def set_ec(ec):
|
||||
'''
|
||||
Sets the exit code of the program, if an exit code higher or equal than this is set, this does nothing. This
|
||||
makes EXIT_ERROR override EXIT_WARNING, etc..
|
||||
|
||||
ec: exit code to set
|
||||
'''
|
||||
global exit_code
|
||||
exit_code = max(exit_code, ec)
|
||||
return exit_code
|
||||
from .. import __version__ as borg_version
|
||||
from .. import __version_tuple__ as borg_version_tuple
|
||||
from .. import chunker
|
||||
from .. import hashindex
|
||||
from .. import shellpattern
|
||||
from ..constants import * # NOQA
|
||||
|
||||
|
||||
class Error(Exception):
|
||||
|
@ -130,7 +110,7 @@ class MandatoryFeatureUnsupported(Error):
|
|||
|
||||
|
||||
def check_extension_modules():
|
||||
from . import platform, compress, item
|
||||
from .. import platform, compress, item
|
||||
if hashindex.API_VERSION != '1.1_07':
|
||||
raise ExtensionModuleError
|
||||
if chunker.API_VERSION != '1.1_01':
|
||||
|
@ -323,9 +303,9 @@ class Manifest:
|
|||
|
||||
@classmethod
|
||||
def load(cls, repository, operations, key=None, force_tam_not_required=False):
|
||||
from .item import ManifestItem
|
||||
from .crypto.key import key_factory, tam_required_file, tam_required
|
||||
from .repository import Repository
|
||||
from ..item import ManifestItem
|
||||
from ..crypto.key import key_factory, tam_required_file, tam_required
|
||||
from ..repository import Repository
|
||||
try:
|
||||
cdata = repository.get(cls.MANIFEST_ID)
|
||||
except Repository.ObjectNotFound:
|
||||
|
@ -384,7 +364,7 @@ class Manifest:
|
|||
return result
|
||||
|
||||
def write(self):
|
||||
from .item import ManifestItem
|
||||
from ..item import ManifestItem
|
||||
if self.key.tam_required:
|
||||
self.config[b'tam_required'] = True
|
||||
# self.timestamp needs to be strictly monotonically increasing. Clocks often are not set correctly
|
||||
|
@ -1332,7 +1312,7 @@ def ellipsis_truncate(msg, space):
|
|||
shorten a long string by adding ellipsis between it and return it, example:
|
||||
this_is_a_very_long_string -------> this_is..._string
|
||||
"""
|
||||
from .platform import swidth
|
||||
from ..platform import swidth
|
||||
ellipsis_width = swidth('...')
|
||||
msg_width = swidth(msg)
|
||||
if space < 8:
|
||||
|
@ -1681,7 +1661,7 @@ class ArchiveFormatter(BaseFormatter):
|
|||
def archive(self):
|
||||
"""lazy load / update loaded archive"""
|
||||
if self._archive is None or self._archive.id != self.id:
|
||||
from .archive import Archive
|
||||
from ..archive import Archive
|
||||
self._archive = Archive(self.repository, self.key, self.manifest, self.name)
|
||||
return self._archive
|
||||
|
||||
|
@ -1723,7 +1703,7 @@ class ItemFormatter(BaseFormatter):
|
|||
class FakeArchive:
|
||||
fpr = name = ""
|
||||
|
||||
from .item import Item
|
||||
from ..item import Item
|
||||
fake_item = Item(mode=0, path='', user='', group='', mtime=0, uid=0, gid=0)
|
||||
formatter = cls(FakeArchive, "")
|
||||
keys = []
|
||||
|
@ -2078,7 +2058,7 @@ def swidth_slice(string, max_width):
|
|||
*max_width* is in units of character cells (or "columns").
|
||||
Latin characters are usually one cell wide, many CJK characters are two cells wide.
|
||||
"""
|
||||
from .platform import swidth
|
||||
from ..platform import swidth
|
||||
reverse = max_width < 0
|
||||
max_width = abs(max_width)
|
||||
if reverse:
|
||||
|
@ -2097,10 +2077,10 @@ def swidth_slice(string, max_width):
|
|||
|
||||
class BorgJsonEncoder(json.JSONEncoder):
|
||||
def default(self, o):
|
||||
from .repository import Repository
|
||||
from .remote import RemoteRepository
|
||||
from .archive import Archive
|
||||
from .cache import LocalCache, AdHocCache
|
||||
from ..repository import Repository
|
||||
from ..remote import RemoteRepository
|
||||
from ..archive import Archive
|
||||
from ..cache import LocalCache, AdHocCache
|
||||
if isinstance(o, Repository) or isinstance(o, RemoteRepository):
|
||||
return {
|
||||
'id': bin_to_hex(o.id),
|
||||
|
|
Loading…
Reference in New Issue