"""
FrontEndCentral component invoke tests
"""
import sys
import os

import vbuild
from vbuild import npm_install
from invoke import Collection, run

BASE_DIR = os.path.abspath(os.path.dirname(__file__))

def setup_python_path():
    """Configure the python environment here."""
    config = vbuild.Config(BASE_DIR)
    fixed_paths = config.setup_python_path()
    os.environ['PYTHONPATH'] = os.pathsep.join(fixed_paths)

def pre_build_hook(ctx):
    """
    pre build hook
    """
    npm_install(ctx)
    run("npm run build:prod")


def pre_test_js_hook(ctx):
    """
    Pre build hook to compile source typescript, install npm packages, and then compile npm package typescript
    """
    npm_install(ctx)
    run("npm run build")

ns = Collection(vbuild.test_js, vbuild.lint_js, vbuild.deploy)

ns.configure({
    'setup_python_path': setup_python_path,
    'pre_build_hook': pre_build_hook,
    'pre_test_js_hook': pre_test_js_hook,
    'use_frontend_build': False,
    'use_gulp': False,
    'use_npm_build': True,
    'shrink_js': False,
    'prop': {
        'config_local_file': 'settings_local.py',
        'base_dir': BASE_DIR,
        'compass_config_dir': BASE_DIR,
        'src_dir': BASE_DIR + '/dist',
        'build_dir': os.path.join(BASE_DIR, 'build'),
        'js_path': 'doc/js',
    },
    'jasmine': {
        'browsers': ['PhantomJS'],
        'spec_dir': BASE_DIR,
    },
    'module_file_locations': {
        'default': 'app.yaml'
    },
})
