#! /usr/bin/env python

try:
    import psutil
    has_psutil = True
except ImportError:
    import os
    has_psutil = False

from getpass import getuser
from datetime import datetime
from re import search
from vcsn.demangle import pretty_plugin


def user_proc(proc):
    for elt in proc.cmdline():
        cmd = search('.*vcsn.compile.*\'.*?(/plugins/[^/]+/.*)\.cc\'.*$', elt)
        if cmd:
            title, message = pretty_plugin(cmd.group(1))
            delta = datetime.now() - datetime.fromtimestamp(proc.create_time())
            print('{}:{:0>2}: {:<10} {}'.format(int(delta.seconds / 60),
                                                delta.seconds % 60,
                                                title + ':', message))

if has_psutil:
    for proc in psutil.process_iter():
        try:
            if proc.username() == getuser():
                user_proc(proc)
        except (psutil.AccessDenied, psutil.NoSuchProcess):
            pass
else:
    cmd = \
    '''ps uxww |
        grep -v perl |
        grep "vcsn compile" |
        perl -ne "s{^.*'.*?/lib/plugins/(.*?)\.cc'.*$}{\$1}g && print \$_"'''
    os.system(cmd)
