import * as plugins from './npmci.plugins'
import {bash} from './npmci.bash'
import {install} from './npmci.install'
import * as env from './npmci.env'
import * as NpmciBuildDocker from './npmci.build.docker'

export let test = (versionArg) => {
    let done = plugins.q.defer()
    if (versionArg === 'docker') {
        testDocker()
            .then(() => {
                done.resolve()
            })
    } else {
        install(versionArg)
            .then(npmDependencies)
            .then(npmTest)
            .then(() => {
                done.resolve()
            })
    }
    return done.promise
}

let npmDependencies = function(){
    let done = plugins.q.defer()
    plugins.beautylog.info('now installing dependencies:')
    bash('npm install')
    done.resolve()
    return done.promise
}

let npmTest = () => {
    let done = plugins.q.defer()
    plugins.beautylog.info('now starting tests:')
    bash('npm test')
    done.resolve()
    return done.promise
}

let testDocker = function(){
    let done = plugins.q.defer()
    NpmciBuildDocker.readDockerfiles()
        .then(NpmciBuildDocker.pullDockerfileImages)
        .then(NpmciBuildDocker.testDockerfiles)
        .then(done.resolve)
    return done.promise
}