1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-12-30 19:56:14 +01:00

Merge branch 'rework_meter_py' of https://github.com/lethliel/osc

Simplify code that uses meter.TextMeter (for the details, see the
discussion in https://github.com/openSUSE/osc/pull/502).
This commit is contained in:
Marcus Huewe 2019-01-16 12:57:51 +01:00
commit 218e77aadc
5 changed files with 35 additions and 23 deletions

View File

@ -33,7 +33,7 @@ except ImportError:
from .conf import config, cookiejar from .conf import config, cookiejar
from .meter import TextMeter from .meter import create_text_meter
change_personality = { change_personality = {
'i686': 'linux32', 'i686': 'linux32',
@ -305,10 +305,9 @@ def get_preinstall_image(apiurl, arch, cache_dir, img_info):
print('packagecachedir is not writable for you?', file=sys.stderr) print('packagecachedir is not writable for you?', file=sys.stderr)
print(e, file=sys.stderr) print(e, file=sys.stderr)
sys.exit(1) sys.exit(1)
if sys.stdout.isatty() and TextMeter:
progress_obj = TextMeter()
else:
progress_obj = None progress_obj = None
if sys.stdout.isatty():
progress_obj = create_text_meter(use_pb_fallback=False)
gr = OscFileGrabber(progress_obj=progress_obj) gr = OscFileGrabber(progress_obj=progress_obj)
try: try:
gr.urlgrab(url, filename=ifile_path_part, text='fetching image') gr.urlgrab(url, filename=ifile_path_part, text='fetching image')

View File

@ -166,9 +166,8 @@ class Osc(cmdln.Cmdln):
self.options.verbose = conf.config['verbose'] self.options.verbose = conf.config['verbose']
self.download_progress = None self.download_progress = None
if conf.config.get('show_download_progress', False): if conf.config.get('show_download_progress', False):
from .meter import TextMeter from .meter import create_text_meter
if TextMeter: self.download_progress = create_text_meter()
self.download_progress = TextMeter()
def get_cmd_help(self, cmdname): def get_cmd_help(self, cmdname):

View File

@ -4617,15 +4617,11 @@ def get_binary_file(apiurl, prj, repo, arch,
progress_meter = False): progress_meter = False):
progress_obj = None progress_obj = None
if progress_meter: if progress_meter:
from .meter import TextMeter from .meter import create_text_meter
if TextMeter: progress_obj = create_text_meter()
progress_obj = TextMeter()
target_filename = target_filename or filename target_filename = target_filename or filename
if progress_meter and not progress_obj:
print('Downloading %s' % target_filename)
where = package or '_repository' where = package or '_repository'
u = makeurl(apiurl, ['build', prj, repo, arch, where, filename]) u = makeurl(apiurl, ['build', prj, repo, arch, where, filename])
download(u, target_filename, progress_obj, target_mtime) download(u, target_filename, progress_obj, target_mtime)

View File

@ -23,19 +23,15 @@ from . import oscerr
import tempfile import tempfile
import re import re
from .meter import TextMeter from .meter import create_text_meter
if not TextMeter:
print('Please install the progressbar module')
class Fetcher: class Fetcher:
def __init__(self, cachedir='/tmp', api_host_options={}, urllist=[], def __init__(self, cachedir='/tmp', api_host_options={}, urllist=[],
http_debug=False, cookiejar=None, offline=False, enable_cpio=True): http_debug=False, cookiejar=None, offline=False, enable_cpio=True):
# set up progress bar callback # set up progress bar callback
if sys.stdout.isatty() and TextMeter:
self.progress_obj = TextMeter()
else:
self.progress_obj = None self.progress_obj = None
if sys.stdout.isatty():
self.progress_obj = create_text_meter(use_pb_fallback=False)
self.cachedir = cachedir self.cachedir = cachedir
self.urllist = urllist self.urllist = urllist

View File

@ -29,8 +29,30 @@ class PBTextMeter(object):
self.bar.finish() self.bar.finish()
class NoPBTextMeter(object):
_complained = False
def start(self, basename, size=None):
if not self._complained:
print('Please install the progressbar module')
NoPBTextMeter._complained = True
print('Processing: %s' % basename)
def update(self, *args, **kwargs):
pass
def end(self, *args, **kwargs):
pass
def create_text_meter(*args, **kwargs):
use_pb_fallback = kwargs.pop('use_pb_fallback', True)
if have_pb_module or use_pb_fallback:
return TextMeter(*args, **kwargs)
return None
if have_pb_module: if have_pb_module:
TextMeter = PBTextMeter TextMeter = PBTextMeter
else: else:
TextMeter = None TextMeter = NoPBTextMeter
# vim: sw=4 et # vim: sw=4 et