File: //lib/fm-agent/library/progress_printer.py
# Perhaps this should go in the utils module.
import sys
import time
class ProgressPrinter(object):
"Utility class for printing some simple progress output for installs/uninstalls"
def __init__(self, msg, section=False, indent=0):
self.start = time.time()
if indent:
sys.stdout.write(" " * indent)
if section:
sys.stdout.write(msg)
else:
sys.stdout.write("%s..." % msg)
sys.stdout.flush()
def finish(self, msg="done"):
end = time.time()
elapsed = max(min((end - self.start) * 20, 2), 0.5)
finish_at = end + elapsed
now = end
while now < finish_at:
sys.stdout.write(".")
sys.stdout.flush()
time.sleep(0.05)
now = time.time()
sys.stdout.write("%s\n" % msg)
sys.stdout.flush()