#!/usr/bin/env python
# -*- python-mode -*-
"""Takes care of starting the Init function
"""

__copyright__ = """
Copyright (C) 2005, Catalin Marinas <catalin.marinas@gmail.com>

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 as
published by the Free Software Foundation.

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 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 sys, os, pdb

# Try to detect where it is run from and set prefix and the search path.
# It is assumed that the user installed StGIT using the --prefix= option
prefix, bin = os.path.split(sys.path[0])

if bin == 'bin' and prefix != sys.prefix:
    sys.prefix = prefix
    sys.exec_prefix = prefix

    major, minor = sys.version_info[0:2]
    local_path = [os.path.join(prefix, 'lib', 'python'),
                  os.path.join(prefix, 'lib', 'python%s.%s' % (major, minor)),
                  os.path.join(prefix, 'lib', 'python%s.%s' % (major, minor),
                               'site-packages')]
    sys.path = local_path + sys.path

from stgit.main import main

if __name__ == '__main__':
    pdb.run('main()')
