#!/usr/bin/env python
# -*- coding: utf-8 -*-
from rt.zps.app.finder import ZProcessFinder
from rt.zps.streams import zfatalerror
from rt.zps.templates.errors import PID_ERROR
import getopt
import sys

__usage__ = """
USAGE:
 zps
 zps --help
 zps --pid 1111
 zps --port 8080
 zps --grep plone
""".lstrip()


def checkopt():
    """
    Checking command line options
    """
    flags = {'pid': 0, 'port': '', 'grep': ''}
    opt_short = ''
    opt_long = ['grep=', 'pid=', 'port=']

    try:
        opts, args = getopt.gnu_getopt(sys.argv[1:], opt_short, opt_long)
    except getopt.GetoptError, e:
        zfatalerror("ERROR: %s\n\n%s" % (e, __usage__))

    for opt, optarg in opts:
        if opt == '--pid':
            if not optarg.isdigit():
                zfatalerror(PID_ERROR)
            flags['pid'] = int(optarg)
        elif opt == '--port':
            flags['port'] = optarg
        elif opt == '--grep':
            flags['grep'] = optarg

    return opts, args, flags

opts, args, flags = checkopt()

if __name__ == "__main__":
    zpf = ZProcessFinder(flags)
    zpf()
