#!/usr/bin/env python
#
# Copyright (C) 2005 by Async Open Source 
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

import os
import sys

# Required version of Python
REQUIRED_VERSION = (2, 1)

# Directory name, defaults to name of binary, it is relative to ..
# a, __init__.py and main.py is expected to be found there.
DIRNAME = 'kiwi'

# Application name, defaults to capitalized name of binary
APPNAME = None

# Do not modify code below this point
dirname = DIRNAME or os.path.split(sys.argv[0])[1]
appname = APPNAME or dirname.capitalize()

version_string = sys.version.split(' ')[0]
majmin = tuple(map(int, version_string.split('.')))
if majmin < REQUIRED_VERSION:
    raise SystemExit("ERROR: Python %s or higher is required to run %s, "
                     "%s found" % ('.'.join(map(str, REQUIRED_VERSION)),
                                   appname,
                                   version_string))

# Figure out the directy which is the prefix
# path-of-current-file/..
currentdir = os.path.dirname(os.path.abspath(sys.argv[0]))
basedir = os.path.abspath(os.path.join(currentdir, '..'))

# Add the base directory where the application is installed in to sys.path
if os.path.exists(os.path.join(basedir, 'lib')):
    pythondir = os.path.join(basedir, 'lib',
                             'python%d.%d' % sys.version_info[:2],
                             'site-packages')
    if not os.path.exists(pythondir):
        raise SystemExit("ERROR: Could not find required directory: %s" %
                         pythondir)
elif not os.path.exists(os.path.join(basedir, dirname)):
    raise SystemExit("ERROR: Could not find required directory: %s" %
                     os.path.join(basedir, dirname))
else:
    pythondir = basedir
    
sys.path.insert(0, pythondir)

main_module = 'kiwi.i18n.i18n'
try:
    module = __import__(main_module, globals(), locals(), 'main')
except Exception, e:
    raise SystemExit("ERROR: Failed to import required module %s\n\n"
                     "Exception raised during import:\n %s: %s\n" %
                     (main_module, e.__class__.__name__, e))

main = getattr(module, 'main', None)
if not main or not callable(main):
    raise SystemExit("ERROR: Could not find callable 'main' in module %s" %
                     main_module)

try:
    sys.exit(main(sys.argv))
except KeyboardInterrupt:
    raise SystemExit
