fixes in aero

This commit is contained in:
ville rantanen
2013-11-05 16:25:24 +02:00
parent e83ead218f
commit 959b7ca1e3

View File

@@ -2,6 +2,8 @@
import sys,os
from datetime import datetime
from datetime import timedelta
import re,signal
import subprocess
@@ -24,6 +26,9 @@ CLRLN = '\033[K'
CLRBLN = '\033[1K'
DOWN = '\033[1B'
SORTCONVERT = lambda text: float(text) if is_number(text) else -1
SORTKEY = lambda key: SORTCONVERT(key[2][:-1])
def setup_options():
''' Setup the command line options '''
from argparse import ArgumentParser
@@ -34,12 +39,10 @@ Tool to clean up and colorize the output of Anduril.
Example: anduril run yourscript.and | %(prog)s
You can tap in to an existing log with:
tail -f -n +0 log/_global | %(prog)s''',formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument("--time-stamp",'-t',action="store_true",dest="timestamp",default=False,
help="Print a timestamp on each line")
parser.add_argument("--no-colors",'--nc',action="store_false",dest="colors",default=True,
help="Disable colored output")
parser.add_argument("logfile",type=str,action="store",default="",nargs="?",
help="Log file to read, uses stdin automatically")
parser.add_argument("--version",action='version', version=VERSION)
options=parser.parse_args()
@@ -67,8 +70,7 @@ def colorize(string):
string=color_match[c][0].sub(color_match[c][1],string)
return string
SORTCONVERT = lambda text: float(text) if is_number(text) else -1
SORTKEY = lambda key: SORTCONVERT(key[2][:-1])
def count_running(string, stats):
''' Counts the running executions '''
@@ -76,6 +78,7 @@ def count_running(string, stats):
spl=[i.strip() for i in string.split('|')]
if len(spl)!=4:
return stats
spl.append(datetime.now())
if spl[3] in stats['files']:
index=stats['files'].index(spl[3])
stats['running'][index]=spl
@@ -94,18 +97,24 @@ def remove_running(stats):
''' Remove Done files '''
if not stats['running']:
return stats
# Remove Done/Fail older than 60sec
for e in enumerate(stats['running']):
if (datetime.now() - e[1][4] > timedelta(seconds=60)):
if e[1][2]=='Done' or e[1][2]=='Failed':
stats['running'].pop(e[0])
stats['files'].pop(e[0])
# Remove Done/Fail if there are too many:
if len(stats['running'])>(stats['size'][0]-3):
for e in enumerate(stats['running']):
if e[1][2]=='Done':
stats['running'].pop(e[0])
stats['files'].pop(e[0])
#remove just one failed
if len(stats['running'])>(stats['size'][0]-3):
for e in enumerate(stats['running']):
return stats
if e[1][2]=='Failed':
stats['running'].pop(e[0])
stats['files'].pop(e[0])
return stats
return stats
def is_number(s):
@@ -126,10 +135,9 @@ def str_short(s,stats):
return sNew
def print_stats(stats):
''' Prints logged errors, and the status line '''
sys.stdout.write(SAVE)
#sys.stdout.write(SAVE)
for e in range(2):
sys.stdout.write(pos(e+1,0)+CLRLN)
@@ -146,10 +154,10 @@ def print_stats(stats):
str_short(ex[1][3],stats)])+
CLRLN)
for i in range(stats['size'][0]-3-len(stats['running'])):
sys.stdout.write(pos(e+4+ex[0]+i,0)+"( )"+CLRLN)
sys.stdout.write(pos(e+4+ex[0]+i,0)+" "+CLRLN)
sys.stdout.write(DOWN+CLRBLN+CLRLN)
sys.stdout.write(LOAD)
#sys.stdout.write(LOAD)
def human_time():
t=datetime.now().strftime("%I:%M:%S %p")