Few fixes for Workspaces builders.

This commit is contained in:
Alexander Nozik 2019-03-31 17:39:44 +03:00
parent 58e65ba71e
commit 5480d90a36
16 changed files with 70 additions and 56 deletions

View File

@ -45,7 +45,7 @@ allprojects {
}
group = "hep.dataforge"
version = "0.1.2-dev-2"
version = "0.1.2-dev-3"
// apply bintray configuration
apply(from = "${rootProject.rootDir}/gradle/bintray.gradle")
@ -117,38 +117,43 @@ subprojects {
}
configure<NodeExtension>{
nodeModulesDir = file("$buildDir/node_modules")
}
val runJsTests by ext(false)
val compileKotlinJs by tasks.getting(Kotlin2JsCompile::class)
val compileTestKotlinJs by tasks.getting(Kotlin2JsCompile::class)
if(runJsTests) {
val populateNodeModules by tasks.registering(Copy::class) {
dependsOn(compileKotlinJs)
from(compileKotlinJs.destinationDir)
compilations["test"].runtimeDependencyFiles.forEach {
if (it.exists() && !it.isDirectory) {
from(zipTree(it.absolutePath).matching { include("*.js") })
}
configure<NodeExtension> {
nodeModulesDir = file("$buildDir/node_modules")
}
into("$buildDir/node_modules")
}
val compileKotlinJs by tasks.getting(Kotlin2JsCompile::class)
val compileTestKotlinJs by tasks.getting(Kotlin2JsCompile::class)
val installMocha by tasks.registering(NpmTask::class) {
setWorkingDir(buildDir)
setArgs(listOf("install", "mocha"))
}
val populateNodeModules by tasks.registering(Copy::class) {
dependsOn(compileKotlinJs)
from(compileKotlinJs.destinationDir)
val runMocha by tasks.registering(NodeTask::class) {
dependsOn(compileTestKotlinJs, populateNodeModules, installMocha)
setScript(file("$buildDir/node_modules/mocha/bin/mocha"))
setArgs(listOf(compileTestKotlinJs.outputFile))
}
compilations["test"].runtimeDependencyFiles.forEach {
if (it.exists() && !it.isDirectory) {
from(zipTree(it.absolutePath).matching { include("*.js") })
}
}
tasks["jsTest"].dependsOn(runMocha)
into("$buildDir/node_modules")
}
val installMocha by tasks.registering(NpmTask::class) {
setWorkingDir(buildDir)
setArgs(listOf("install", "mocha"))
}
val runMocha by tasks.registering(NodeTask::class) {
dependsOn(compileTestKotlinJs, populateNodeModules, installMocha)
setScript(file("$buildDir/node_modules/mocha/bin/mocha"))
setArgs(listOf(compileTestKotlinJs.outputFile))
}
tasks["jsTest"].dependsOn(runMocha)
}
}
sourceSets {

View File

@ -0,0 +1,6 @@
package hep.dataforge.io
import kotlinx.io.core.Input
//TODO replace by abstraction
typealias Binary = Input

View File

@ -1,4 +1,4 @@
package hep.dataforge.meta.io
package hep.dataforge.io
import hep.dataforge.meta.*
import hep.dataforge.values.*

View File

@ -1,4 +1,4 @@
package hep.dataforge.meta.io
package hep.dataforge.io
import hep.dataforge.meta.Meta
import hep.dataforge.meta.get
@ -9,13 +9,6 @@ interface Envelope {
val data: Binary?
companion object {
// /**
// * Property keys
// */
// const val TYPE_PROPERTY = "type"
// const val META_TYPE_PROPERTY = "metaType"
// const val META_LENGTH_PROPERTY = "metaLength"
// const val DATA_LENGTH_PROPERTY = "dataLength"
/**
* meta keys

View File

@ -1,4 +1,4 @@
package hep.dataforge.meta.io
package hep.dataforge.io
import hep.dataforge.meta.Meta
import hep.dataforge.meta.MetaItem

View File

@ -1,4 +1,4 @@
package hep.dataforge.meta.io
package hep.dataforge.io
import hep.dataforge.meta.Meta
import kotlinx.io.core.*

View File

@ -1,4 +1,4 @@
package hep.dataforge.meta.io
package hep.dataforge.io
import hep.dataforge.meta.buildMeta
import kotlin.test.Test

View File

@ -0,0 +1,2 @@
hep.dataforge.io.BinaryMetaFormatFactory
hep.dataforge.io.JsonMetaFormatFactory

View File

@ -1,7 +0,0 @@
package hep.dataforge.meta.io
import kotlinx.io.ByteBuffer
import kotlinx.io.core.Input
//TODO replace by abstraction
typealias Binary = Input

View File

@ -1,2 +0,0 @@
hep.dataforge.meta.io.BinaryMetaFormatFactory
hep.dataforge.meta.io.JsonMetaFormatFactory

View File

@ -9,7 +9,7 @@ kotlin {
val commonMain by getting{
dependencies {
api(project(":dataforge-context"))
api(project(":dataforge-meta-io"))
api(project(":dataforge-io"))
}
}
}

View File

@ -2,6 +2,7 @@ package hep.dataforge.scripting
import hep.dataforge.context.Context
import hep.dataforge.context.Global
import hep.dataforge.workspace.SimpleWorkspaceBuilder
import hep.dataforge.workspace.Workspace
import hep.dataforge.workspace.WorkspaceBuilder
import java.io.File
@ -14,11 +15,12 @@ import kotlin.script.experimental.jvmhost.BasicJvmScriptingHost
object Builders {
fun buildWorkspace(source: SourceCode, context: Context = Global): Workspace {
val builder = WorkspaceBuilder(context)
val builder = SimpleWorkspaceBuilder(context)
val workspaceScriptConfiguration = ScriptCompilationConfiguration {
baseClass(Any::class)
implicitReceivers(WorkspaceBuilder::class)
defaultImports("hep.dataforge.workspace.*")
jvm {
dependenciesFromCurrentContext(wholeClasspath = true)
}
@ -31,8 +33,10 @@ object Builders {
BasicJvmScriptingHost().eval(source, workspaceScriptConfiguration, evaluationConfiguration).onFailure {
it.reports.forEach { scriptDiagnostic ->
when (scriptDiagnostic.severity) {
ScriptDiagnostic.Severity.FATAL, ScriptDiagnostic.Severity.ERROR ->
ScriptDiagnostic.Severity.FATAL, ScriptDiagnostic.Severity.ERROR -> {
context.logger.error(scriptDiagnostic.exception) { scriptDiagnostic.toString() }
error(scriptDiagnostic.toString())
}
ScriptDiagnostic.Severity.WARNING -> context.logger.warn { scriptDiagnostic.toString() }
ScriptDiagnostic.Severity.INFO -> context.logger.info { scriptDiagnostic.toString() }
ScriptDiagnostic.Severity.DEBUG -> context.logger.debug { scriptDiagnostic.toString() }

View File

@ -1,20 +1,33 @@
package hep.dataforge.scripting
import hep.dataforge.context.Global
import hep.dataforge.meta.get
import hep.dataforge.meta.int
import hep.dataforge.workspace.*
import org.junit.Test
import kotlin.test.assertEquals
class BuildersKtTest {
@Test
fun checkBuilder(){
val workspace = SimpleWorkspaceBuilder(Global).apply {
println("I am working")
context("test")
target("testTarget"){
"a" to 12
}
}
}
@Test
fun testWorkspaceBuilder() {
val script = """
println("I am working")
context{
name = "test"
}
context("test")
target("testTarget"){
"a" to 12

View File

@ -26,7 +26,7 @@ interface WorkspaceBuilder {
/**
* Set the context for future workspcace
*/
fun WorkspaceBuilder.context(name: String, block: ContextBuilder.() -> Unit) {
fun WorkspaceBuilder.context(name: String, block: ContextBuilder.() -> Unit = {}) {
context = ContextBuilder(name, parentContext).apply(block).build()
}

View File

@ -21,7 +21,7 @@ enableFeaturePreview("GRADLE_METADATA")
rootProject.name = "dataforge-core"
include(
":dataforge-meta",
":dataforge-meta-io",
":dataforge-io",
":dataforge-context",
":dataforge-data",
":dataforge-output",