Skip to content

Instantly share code, notes, and snippets.

@schettino72
Created September 27, 2013 16:03
Show Gist options
  • Save schettino72/6730907 to your computer and use it in GitHub Desktop.
Save schettino72/6730907 to your computer and use it in GitHub Desktop.
doit progress bar demo
from pyterm import Term
from sample_bar import ProgressBar
from doit.reporter import ConsoleReporter
class ProgressReporter(ConsoleReporter):
"""use some colors in the report"""
def __init__(self, outstream, options):
ConsoleReporter.__init__(self, outstream, options)
self.term = Term()
self.prog_bar = ProgressBar(self.term, 'Nikola - building site')
self._prog = 0 # number of tasks executed
self._total_tasks = None
def initialize(self, tasks):
self._total_tasks = len([t for t in tasks if t.startswith('post:')])
def execute_task(self, task):
self.prog_bar.update(self._prog/float(self._total_tasks), task.name)
def add_success(self, task):
if task.name.startswith('post:'):
self._prog += 1
self.prog_bar.update(self._prog/float(self._total_tasks), task.name)
DOIT_CONFIG = {
'reporter': ProgressReporter,
'verbosity': 1,
}
def task_init():
return {'actions': ['sleep 1']}
def task_post():
for x in range(5):
yield {'name': str(x),
'actions': ['echo out %d' % x, 'sleep 1']}
diff -r 5f9fb17b49cc doit/runner.py
--- a/doit/runner.py Fri Sep 27 19:09:13 2013 +0700
+++ b/doit/runner.py Fri Sep 27 22:46:36 2013 +0700
@@ -232,6 +232,8 @@
@ivar task_dispatcher (TaskDispatcher)
"""
try:
+ if hasattr(self.reporter, 'initialize'):
+ self.reporter.initialize(task_dispatcher.tasks)
self.run_tasks(task_dispatcher)
except InvalidTask as exception:
self.reporter.runtime_error(str(exception))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment