#!/usr/bin/python

# Copyright Redshift Software, Inc. 2007
#
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)

import os
import os.path
import shutil
import sys
import urllib

#~ Using --skip-script-download is useful to avoid repeated downloading of
#~ the regression scripts when doing the regression commands individually.
no_update_argument = "--skip-script-download"
no_update = no_update_argument in sys.argv
if no_update:
    del sys.argv[sys.argv.index(no_update_argument)]

use_local_argument = '--use-local'
use_local = use_local_argument in sys.argv
if use_local:
    del sys.argv[sys.argv.index(use_local_argument)]

use_git_argument = '--use-git'
use_git = use_git_argument in sys.argv

#~ The directory this file is in.
if use_local:
    root = os.path.abspath(os.path.realpath(os.path.curdir))
else:
    root = os.path.abspath(os.path.dirname(os.path.realpath(__file__)))
print '# Running regressions in %s...' % root

script_sources = [ 'collect_and_upload_logs.py', 'process_jam_log.py', 'regression.py' ]
script_local = os.path.join(root,'tools','regression','src')
if use_local:
    script_remote = 'file://'+os.path.abspath(os.path.dirname(os.path.realpath(__file__)))
elif use_git:
    script_remote = 'https://raw.github.com/boostorg/boost/master/tools/regression/src'
else:
    script_remote = 'http://svn.boost.org/svn/boost/trunk/tools/regression/src'
script_dir = os.path.join(root,'tools_regression_src')

if not no_update:
    #~ Bootstrap.
    #~ * Clear out any old versions of the scripts
    print '# Creating regression scripts at %s...' % script_dir
    if os.path.exists(script_dir):
        shutil.rmtree(script_dir)
    os.mkdir(script_dir)
    #~ * Get new scripts, either from local working copy, or from svn
    if os.path.exists(script_local):
        print '# Copying regression scripts from %s...' % script_local
        for src in script_sources:
            shutil.copyfile( os.path.join(script_local,src), os.path.join(script_dir,src) )
    else:
        print '# Dowloading regression scripts from %s...' % script_remote
        proxy = None
        for a in sys.argv[1:]:
            if a.startswith('--proxy='):
                proxy = {'http' : a.split('=')[1] }
                print '--- %s' %(proxy['http'])
                break
        for src in script_sources:
            urllib.FancyURLopener(proxy).retrieve(
                '%s/%s' % (script_remote,src), os.path.join(script_dir,src) )

#~ * Make the scripts are available to Python
sys.path.insert(0,os.path.join(root,'tools_regression_src'))

#~ Launch runner.
from regression import runner
runner(root)
