#!/usr/bin/python
# Copyright 2010 Cornell University. All rights reserved.
# 
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions 
# are met:
# 
#   1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 
#   2. Redistributions in binary form must reproduce the above 
# copyright notice, this list of conditions and the following 
# disclaimer in the documentation and/or other materials provided 
# with the distribution.
# 
#   3. Neither the name of the University nor the names of its 
# contributors may be used to endorse or promote products derived 
# from this software without specific prior written permission.
# 
# THIS SOFTWARE IS PROVIDED BY CORNELL UNIVERSITY  ``AS IS'' AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CORNELL UNIVERSITY OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 
# DAMAGE.
# 
# The views and conclusions contained in the software and documentation
# are those of the authors and should not be interpreted as representing 
# official policies, either expressed or implied, of Cornell University.
# 



# Usage: racs <config file>

import sys,os


pythonpath_dir = os.path.join(os.path.split(os.path.split(os.path.abspath(__file__))[0])[0],'python')

sys.path.append(pythonpath_dir)

from racs.server import *

def print_usage():
    from racs.repository import Repository
    rlist = '\n'.join(['\t'+x for x in Repository.all_repositories])
    print >> sys.stderr, """Usage: racs [config file]

Available repositories:
%s
""" % rlist

if __name__ == '__main__':
    if len(sys.argv) > 2:
        print_usage()
    try: 
        configfile = sys.argv[1] 
        if not os.path.exists(configfile):
            raise Exception
    except:
        configfile = 'racs.config'
    try:
        server = RACSHTTPServer(configfile = configfile)
    except ConfigNotFound, e:
        print >> sys.stderr, "Error: Can't find config file %s" % e.args[0]
        print_usage()
        sys.exit(1)

    if not server.unit_test_repositories:
        try:
            server.serve_forever()
        except KeyboardInterrupt, e:
            import traceback
            traceback.print_exc()

    if server.record_stats:
        print server.stats.dump()
