123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- from optparse import OptionParser, OptionValueError
- import os
- import sys
- from txclib import utils
- from txclib import get_version
- from txclib.log import set_log_level, logger
- 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(
- "-d", "--debug", action="store_true", dest="debug",
- default=False, help=("enable debug messages")
- )
- parser.add_option(
- "-q", "--quiet", action="store_true", dest="quiet",
- 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' or not sys.stdout.isatty()),
- help="disable colors in the output of commands"
- )
- (options, args) = parser.parse_args()
- if len(args) < 1:
- parser.error("No command was given")
- utils.DISABLE_COLORS = options.color_disable
- # set log level
- if options.quiet:
- set_log_level('WARNING')
- elif options.debug:
- set_log_level('DEBUG')
- # 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 utils.UnknownCommandError:
- logger.error("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()
- logger.error(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:])
|