Source

transifex-client / tx

Full commit
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from optparse import OptionParser
import os
import sys

from txclib import utils
from txclib import get_version

reload(sys) # WTF? Otherwise setdefaultencoding doesn't work

# This block ensures that ^C interrupts are handled quietly.
try:
    import signal

    def exithandler(signum,frame):
        signal.signal(signal.SIGINT, signal.SIG_IGN)
        signal.signal(signal.SIGTERM, signal.SIG_IGN)
        sys.exit(1)

    signal.signal(signal.SIGINT, exithandler)
    signal.signal(signal.SIGTERM, exithandler)
    if hasattr(signal, 'SIGPIPE'):
        signal.signal(signal.SIGPIPE, signal.SIG_DFL)

except KeyboardInterrupt:
    sys.exit(1)

# When we open file with f = codecs.open we specifi FROM what encoding to read
# This sets the encoding for the strings which are created with f.read()
sys.setdefaultencoding('utf-8')

def main(argv):
    """
    Here we parse the flags (short, long) and we instantiate the classes.
    """
    usage = "usage: %prog [options] command [cmd_options]"
    description = "This is the Transifex command line client which"\
		" allows you to manage your translations locally and sync"\
 	 	" them with the master Transifex server.\nIf you'd like to"\
		" check the available commands issue `%prog help` or if you"\
		" just want help with a specific command issue `%prog help"\
		" command`"

    parser = OptionParser(usage=usage, version=get_version(), description=description)
    parser.disable_interspersed_args()
    parser.add_option("-q", "--quiet", 
        action="store_true", dest="verbose", default=False,
        help="don't print status messages to stdout")
    parser.add_option("-r", "--root", action="store",
        dest="root_dir", type="string", default=None,
        help="change root directory (default is cwd)")
    parser.add_option("--traceback", action="store_true",
        dest="trace", default=False,
        help="print full traceback on exceptions")
    parser.add_option("--disable-colors", action="store_true",
        dest="color_disable", default=(os.name == 'nt'),
        help="print full traceback on exceptions")

    (options, args) = parser.parse_args()

    if len(args) < 1:
        parser.error("No command was given")

    utils.DISABLE_COLORS = options.color_disable

    # find .tx
    path_to_tx = options.root_dir or utils.find_dot_tx()

   
    cmd = args[0]
    try:
        utils.exec_command(cmd, args[1:], path_to_tx)
    except KeyError:
        utils.ERRMSG("tx: Command %s not found" % cmd)
    except SystemExit:
        sys.exit()
    except:
        import traceback
        if options.trace:
            traceback.print_exc()
        else:
            formatted_lines = traceback.format_exc().splitlines()    
            utils.ERRMSG(formatted_lines[-1])
        sys.exit(1)

# Run baby :) ... run
if __name__ == "__main__":
    # sys.argv[0] is the name of the script that we’re running.
    main(sys.argv[1:])