#!/usr/bin/python

# PyChess startup script.
# This script is to check package requirements, and set up system/enviroment
# stuff, to make the PyChess Main class run smoothly.


###############################################################################
# Check requirements

import os, sys
if sys.version_info < (2, 5, 0):
    print 'ERROR: PyChess requires Python >= 2.5'
    sys.exit(1)

import pygtk
pygtk.require("2.0")

try:
    import rsvg
except ImportError:
    print 'ERROR: Could not load the rsvg module.'
    print 'You need to install the rsvg package which is called python-rsvg in'
    print 'Debian/Ubuntu and gnome-python2-rsvg in RPM based distributions like Fedora'
    sys.exit(1)


###############################################################################
# Fix environment

if not "HOME" in os.environ:
    os.environ["HOME"] = os.path.expanduser("~")
if "PYTHONPATH" in os.environ:
	os.environ["PYTHONPATH"] = os.path.abspath(os.environ["PYTHONPATH"])


###############################################################################
# Ensure access to data store

try:
    from pychess.System.prefix import addDataPrefix, getDataPrefix, isInstalled
except ImportError:
    print "ERROR: Could not import modules."
    print "Please try to run pychess as stated in the INSTALL file"
    sys.exit(1)


###############################################################################
# Set up translations

import gettext, gtk.glade
if isInstalled():
    gettext.install("pychess", unicode=1, names=('ngettext',))
    gtk.glade.bindtextdomain("pychess")
else:
    gettext.install("pychess", localedir=addDataPrefix("lang"), unicode=1, names=('ngettext',))
    gtk.glade.bindtextdomain("pychess", addDataPrefix("lang"))
gtk.glade.textdomain("pychess")


###############################################################################
# Parse command line arguments

import pychess
no_debug = False
glock_debug = False
thread_debug = False
chess_file = sys.argv[1] if len(sys.argv) > 1 else None
try:
    import argparse
except ImportError:
    print "argparse library not found, so thread debugging will be turned off"
else:
    version = "%s (%s)" % (pychess.VERSION, pychess.VERSION_NAME)
    description = "The PyChess chess client, version %s." % version
    
    parser = argparse.ArgumentParser(description=description)
    parser.add_argument('--version', action='version',
        version="%(prog)s" + " %s" % version)
    parser.add_argument('--no-debug', action='store_true',
        help='turn off debugging output')
    parser.add_argument('--glock-debug', action='store_true',
        help='turn on glock debugging output (WARNING: creates alot of output)')
    parser.add_argument('--thread-debug', action='store_true',
        help='turn on thread debugging output')
    parser.add_argument('chess_file', nargs='?', metavar='chessfile',
        help='a chess file in PGN, EPD, FEN, or HTML (Chess Alpha 2 Diagram) format')
    
    args = parser.parse_args()
    no_debug = args.no_debug
    glock_debug = args.glock_debug
    thread_debug = args.thread_debug
    chess_file = args.chess_file


###############################################################################
# Let's rumble!

import pychess.Main
pychess.Main.run(no_debug, glock_debug, thread_debug, chess_file)
