def owPath = System.getenv("OPENWHISK_HOME") ?: '../open'
def owDirectory = new File(owPath)

if (!owDirectory.exists()) {
    throw new GradleScriptException("Environment variable OPENWHISK_HOME must point to a valid OpenWhisk build", null)
}

include 'common:scala'; project(':common:scala').projectDir = new File(owDirectory, 'common/scala')
include 'core:controller'; project(':core:controller').projectDir = new File(owDirectory, 'core/controller')
include 'core:invoker'; project(':core:invoker').projectDir = new File(owDirectory, 'core/invoker')
include 'whisktests'; project(':whisktests').projectDir = new File(owDirectory, 'tests')

include 'tests'

include 'core:nodejsActionBase'
include 'core:nodejs6Action'

rootProject.name = 'runtime-nodejs'

gradle.ext.scala = [
    version: '2.11.8',
    compileFlags: ['-feature', '-unchecked', '-deprecation', '-Xfatal-warnings', '-Ywarn-unused-import']
]

gradle.ext.scalafmt = [
    version: '1.5.0',
    config: new File(rootProject.projectDir, '.scalafmt.conf')
]
