From 0b68c1edae0fcc62eddcfe62090480f7acc02c00 Mon Sep 17 00:00:00 2001 From: Alexander Nozik Date: Wed, 22 Jun 2022 20:00:27 +0300 Subject: [PATCH] minor API update --- build.gradle.kts | 2 +- .../space/kscience/dataforge/data/DataTree.kt | 7 +++++ .../space/kscience/dataforge/io/IOPlugin.kt | 2 ++ .../kscience/dataforge/io/workDirectory.kt | 28 +++++++++++++++++++ dataforge-workspace/build.gradle.kts | 4 +++ gradle.properties | 2 +- 6 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 dataforge-io/src/jvmMain/kotlin/space/kscience/dataforge/io/workDirectory.kt diff --git a/build.gradle.kts b/build.gradle.kts index e3961065..d153653d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { allprojects { group = "space.kscience" - version = "0.6.0-dev-9" + version = "0.6.0-dev-10" } subprojects { diff --git a/dataforge-data/src/commonMain/kotlin/space/kscience/dataforge/data/DataTree.kt b/dataforge-data/src/commonMain/kotlin/space/kscience/dataforge/data/DataTree.kt index 79a44b01..1cf8971c 100644 --- a/dataforge-data/src/commonMain/kotlin/space/kscience/dataforge/data/DataTree.kt +++ b/dataforge-data/src/commonMain/kotlin/space/kscience/dataforge/data/DataTree.kt @@ -6,6 +6,7 @@ import space.kscience.dataforge.names.* import kotlin.collections.component1 import kotlin.collections.component2 import kotlin.reflect.KType +import kotlin.reflect.typeOf public sealed class DataTreeItem { @@ -63,6 +64,12 @@ public interface DataTree : DataSet { * A name token used to designate tree node meta */ public val META_ITEM_NAME_TOKEN: NameToken = NameToken("@meta") + + public inline fun empty(meta: Meta = Meta.EMPTY): DataTree = object : DataTree { + override val items: Map> get() = emptyMap() + override val dataType: KType get() = typeOf() + override val meta: Meta get() = meta + } } } diff --git a/dataforge-io/src/commonMain/kotlin/space/kscience/dataforge/io/IOPlugin.kt b/dataforge-io/src/commonMain/kotlin/space/kscience/dataforge/io/IOPlugin.kt index 7b1a6b2c..640219d9 100644 --- a/dataforge-io/src/commonMain/kotlin/space/kscience/dataforge/io/IOPlugin.kt +++ b/dataforge-io/src/commonMain/kotlin/space/kscience/dataforge/io/IOPlugin.kt @@ -68,6 +68,8 @@ public class IOPlugin(meta: Meta) : AbstractPlugin(meta) { override val type: KClass = IOPlugin::class override fun build(context: Context, meta: Meta): IOPlugin = IOPlugin(meta) + + public val WORK_DIRECTORY_KEY: Name = Name.of("io", "workDirectory") } } diff --git a/dataforge-io/src/jvmMain/kotlin/space/kscience/dataforge/io/workDirectory.kt b/dataforge-io/src/jvmMain/kotlin/space/kscience/dataforge/io/workDirectory.kt new file mode 100644 index 00000000..4e799ee1 --- /dev/null +++ b/dataforge-io/src/jvmMain/kotlin/space/kscience/dataforge/io/workDirectory.kt @@ -0,0 +1,28 @@ +package space.kscience.dataforge.io + +import space.kscience.dataforge.context.ContextBuilder +import space.kscience.dataforge.meta.get +import space.kscience.dataforge.meta.set +import space.kscience.dataforge.meta.string +import java.nio.file.Path +import kotlin.io.path.Path + + +public val IOPlugin.workDirectory: Path + get() { + val workDirectoryPath = meta[IOPlugin.WORK_DIRECTORY_KEY].string + ?: context.properties[IOPlugin.WORK_DIRECTORY_KEY].string + ?: ".dataforge" + + return Path(workDirectoryPath) + } + +public fun ContextBuilder.workDirectory(path: String) { + properties { + set(IOPlugin.WORK_DIRECTORY_KEY, path) + } +} + +public fun ContextBuilder.workDirectory(path: Path){ + workDirectory(path.toAbsolutePath().toString()) +} diff --git a/dataforge-workspace/build.gradle.kts b/dataforge-workspace/build.gradle.kts index c6e62b36..5a8f911f 100644 --- a/dataforge-workspace/build.gradle.kts +++ b/dataforge-workspace/build.gradle.kts @@ -3,6 +3,10 @@ plugins { id("ru.mipt.npm.gradle.native") } +kscience{ + useCoroutines() +} + kotlin { sourceSets { commonMain{ diff --git a/gradle.properties b/gradle.properties index 93001b21..b0680497 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,4 +5,4 @@ kotlin.code.style=official kotlin.mpp.stability.nowarn=true #kotlin.incremental.js.ir=true -toolsVersion=0.11.5-kotlin-1.6.21 +toolsVersion=0.11.7-kotlin-1.7.0