diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a5c5b1..24e922d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,23 @@ # Changelog -### 0.3.3 +## 0.4.0 + +**BREAKING CHANGES** +Package of project has been changed. Migration: + +* Replace in your dependencies `com.insanusmokrassar:krontab` by `dev.inmo:krontab` +* Replace in your project all imports `com.insanusmokrassar.krontab` by `dev.inmo.krontab` + +* Versions: + * `Kotlin`: `1.4.10` -> `1.4.20` + * `Klock`: `1.12.1` -> `2.0.0` + +## 0.3.3 * Versions: * `Coroutines`: `1.3.9` -> `1.4.1` -### 0.3.2 +## 0.3.2 * Function `TimeBuilder#each` was added (works as `at`) * Add opportunity to use `first` shortcuts: @@ -15,7 +27,7 @@ * Value property `TimeBuilder#last` for including via functions like `TimeBuilder#at` * Shortcut for kron string format `l` or `L` -### 0.3.1 +## 0.3.1 * Versions: * `Kotlin`: `1.4.0` -> `1.4.10` @@ -37,7 +49,7 @@ * Coroutines `1.3.7` -> `1.3.8` * Ranges support were included. Now it is possible to correctly use syntax `0-5` in strings schedules -### 0.2.3 +## 0.2.3 * Updates in libraries: * Kotlin `1.3.70` -> `1.3.72` @@ -49,14 +61,14 @@ * `KronScheduler#doWhile` was rewritten to use `KronScheduler#doOnce` for calculations of `block` result * New `buildSchedule(String)` function as a shortcut for `createSimpleScheduler(String)` -### 0.2.2 +## 0.2.2 * Updates in libraries: * Kotlin `1.3.61` -> `1.3.70` * Coroutines `1.3.3` -> `1.3.5` * Klock `1.8.6` -> `1.10.0` -### 0.2.1 +## 0.2.1 * Added support of flows: now any `KronScheduler` can be convert to `Flow` using `asFlow` extension diff --git a/README.md b/README.md index 7f1e21f..0f63b0a 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # krontab [ ![Download](https://api.bintray.com/packages/insanusmokrassar/InsanusMokrassar/krontab-mpp/images/download.svg) ](https://bintray.com/insanusmokrassar/InsanusMokrassar/krontab-mpp/_latestVersion) - [![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.insanusmokrassar/krontab/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.insanusmokrassar/krontab) + [![Maven Central](https://maven-badges.herokuapp.com/maven-central/dev.inmo/krontab/badge.svg)](https://maven-badges.herokuapp.com/maven-central/dev.inmo/krontab) [![Build Status](https://travis-ci.com/InsanusMokrassar/krontab.svg?branch=master)](https://travis-ci.com/InsanusMokrassar/krontab) Library was created to give oppotunity to launch some things from time to time according to some schedule in @@ -39,7 +39,7 @@ If you want to include `krontab` in your project, just add next line to your dependencies part: ```groovy -implementation "com.insanusmokrassar:krontab:$krontab_version" +implementation "dev.inmo:krontab:$krontab_version" ``` Next version is the latest currently for the library: diff --git a/build.gradle b/build.gradle index b9f3a7d..cf3dcc9 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,6 @@ buildscript { dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:$gradle_bintray_plugin_version" classpath "com.github.breadmoirai:github-release:$github_release_plugin_version" } } @@ -17,8 +16,8 @@ plugins { id "org.jetbrains.dokka" version "$dokka_version" } -project.version = "0.3.3" -project.group = "com.insanusmokrassar" +project.version = "0.4.0" +project.group = "dev.inmo" apply from: "publish.gradle" apply from: "github_release.gradle" @@ -55,16 +54,12 @@ kotlin { implementation kotlin('test-annotations-common') } } - jvmMain { - dependencies { - } - } jvmTest { dependencies { implementation kotlin('test-junit') } } - jsMain { + jsTest { dependencies { implementation kotlin('test-js') } diff --git a/dokka.gradle b/dokka.gradle index 4248c4b..3b006a7 100644 --- a/dokka.gradle +++ b/dokka.gradle @@ -13,7 +13,7 @@ dokka { multiplatform { global { perPackageOption { - prefix = "com.insanusmokrassar" + prefix = "dev.inmo" skipDeprecated = true includeNonPublic = true reportUndocumented = true diff --git a/gradle.properties b/gradle.properties index c21a52b..8784046 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,14 +5,12 @@ kotlin.incremental=true kotlin.incremental.js=true -kotlin_version=1.4.10 +kotlin_version=1.4.20 kotlin_coroutines_version=1.4.1 dokka_version=0.10.1 -gradle_bintray_plugin_version=1.8.5 - -klockVersion=1.12.1 +klockVersion=2.0.0 github_release_plugin_version=2.2.12 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1204836..2238b10 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip diff --git a/maven.publish.gradle b/maven.publish.gradle deleted file mode 100644 index 4857684..0000000 --- a/maven.publish.gradle +++ /dev/null @@ -1,53 +0,0 @@ -apply plugin: 'maven-publish' - -task javadocsJar(type: Jar) { - classifier = 'javadoc' -} - -afterEvaluate { - project.publishing.publications.all { - // rename artifacts - groupId "${project.group}" - if (it.name.contains('kotlinMultiplatform')) { - artifactId = "${project.name}" - } else { - artifactId = "${project.name}-$name" - } - } -} - -publishing { - publications.all { - artifact javadocsJar - - pom { - description = "It is an analog of crontab util for Kotlin Coroutines" - name = "Krontab" - url = "https://git.insanusmokrassar.com/InsanusMokrassar/krontab" - - scm { - developerConnection = "scm:git:[fetch=]https://git.insanusmokrassar.com:8322/InsanusMokrassar/krontab.git[push=]https://git.insanusmokrassar.com:8322/InsanusMokrassar/krontab.git" - url = "https://git.insanusmokrassar.com:8322/InsanusMokrassar/krontab.git" - } - - developers { - - developer { - id = "InsanusMokrassar" - name = "Ovsiannikov Aleksei" - email = "ovsyannikov.alexey95@gmail.com" - } - - } - - licenses { - - license { - name = "Apache Software License 2.0" - url = "https://git.insanusmokrassar.com/InsanusMokrassar/krontab/src/master/LICENSE" - } - - } - } - } -} \ No newline at end of file diff --git a/mpp_config.kpsb b/mpp_config.kpsb index 1800050..5f442c0 100644 --- a/mpp_config.kpsb +++ b/mpp_config.kpsb @@ -1 +1 @@ -{"bintrayConfig":{"repo":"InsanusMokrassar","packageName":"${project.name}-mpp","packageVcs":"https://git.insanusmokrassar.com/InsanusMokrassar/krontab","autoPublish":true,"overridePublish":true},"licenses":[{"id":"Apache-2.0","title":"Apache Software License 2.0","url":"https://git.insanusmokrassar.com/InsanusMokrassar/krontab/src/master/LICENSE"}],"mavenConfig":{"name":"Krontab","description":"It is an analog of crontab util for Kotlin Coroutines","url":"https://git.insanusmokrassar.com/InsanusMokrassar/krontab","vcsUrl":"https://git.insanusmokrassar.com:8322/InsanusMokrassar/krontab.git","developers":[{"id":"InsanusMokrassar","name":"Ovsiannikov Aleksei","eMail":"ovsyannikov.alexey95@gmail.com"}]},"type":"Multiplatform"} \ No newline at end of file +{"bintrayConfig":{"repo":"InsanusMokrassar","packageName":"${project.name}-mpp","packageVcs":"https://git.insanusmokrassar.com/InsanusMokrassar/krontab","autoPublish":true,"overridePublish":true},"licenses":[{"id":"Apache-2.0","title":"Apache Software License 2.0","url":"https://git.insanusmokrassar.com/InsanusMokrassar/krontab/src/master/LICENSE"}],"mavenConfig":{"name":"Krontab","description":"It is an analog of crontab util for Kotlin Coroutines","url":"https://git.insanusmokrassar.com/InsanusMokrassar/krontab","vcsUrl":"https://git.insanusmokrassar.com:8322/InsanusMokrassar/krontab.git","developers":[{"id":"InsanusMokrassar","name":"Ovsiannikov Aleksei","eMail":"ovsyannikov.alexey95@gmail.com"}]}} \ No newline at end of file diff --git a/publish.gradle b/publish.gradle index 4161722..49e2a8b 100644 --- a/publish.gradle +++ b/publish.gradle @@ -1,59 +1,65 @@ -apply plugin: 'com.jfrog.bintray' +apply plugin: 'maven-publish' -apply from: "maven.publish.gradle" - -bintray { - user = project.hasProperty('BINTRAY_USER') ? project.property('BINTRAY_USER') : System.getenv('BINTRAY_USER') - key = project.hasProperty('BINTRAY_KEY') ? project.property('BINTRAY_KEY') : System.getenv('BINTRAY_KEY') - filesSpec { - from "${buildDir}/publications/" - eachFile { - String directorySubname = it.getFile().parentFile.name - if (it.getName() == "module.json") { - if (directorySubname == "kotlinMultiplatform") { - it.setPath("${project.name}/${project.version}/${project.name}-${project.version}.module") - } else { - it.setPath("${project.name}-${directorySubname}/${project.version}/${project.name}-${directorySubname}-${project.version}.module") - } - } else { - if (directorySubname == "kotlinMultiplatform" && it.getName() == "pom-default.xml") { - it.setPath("${project.name}/${project.version}/${project.name}-${project.version}.pom") - } else { - it.exclude() - } - } - } - into "${project.group}".replace(".", "/") - } - - publish = true - override = true - - pkg { - repo = "InsanusMokrassar" - name = "${project.name}-mpp" - vcsUrl = "https://git.insanusmokrassar.com/InsanusMokrassar/krontab" - licenses = ["Apache-2.0"] - version { - name = "${project.version}" - released = new Date() - vcsTag = "${project.version}" - gpg { - sign = true - passphrase = project.hasProperty('signing.gnupg.passphrase') ? project.property('signing.gnupg.passphrase') : System.getenv('signing.gnupg.passphrase') - } - } - } +task javadocsJar(type: Jar) { + classifier = 'javadoc' } -bintrayUpload.doFirst { - publications = publishing.publications.collect { +afterEvaluate { + project.publishing.publications.all { + // rename artifacts + groupId "${project.group}" if (it.name.contains('kotlinMultiplatform')) { - null + artifactId = "${project.name}" } else { - it.name + artifactId = "${project.name}-$name" } - } - null + } } -bintrayUpload.dependsOn publishToMavenLocal \ No newline at end of file +publishing { + publications.all { + artifact javadocsJar + + pom { + description = "It is an analog of crontab util for Kotlin Coroutines" + name = "Krontab" + url = "https://git.insanusmokrassar.com/InsanusMokrassar/krontab" + + scm { + developerConnection = "scm:git:[fetch=]https://git.insanusmokrassar.com:8322/InsanusMokrassar/krontab.git[push=]https://git.insanusmokrassar.com:8322/InsanusMokrassar/krontab.git" + url = "https://git.insanusmokrassar.com:8322/InsanusMokrassar/krontab.git" + } + + developers { + + developer { + id = "InsanusMokrassar" + name = "Ovsiannikov Aleksei" + email = "ovsyannikov.alexey95@gmail.com" + } + + } + + licenses { + + license { + name = "Apache Software License 2.0" + url = "https://git.insanusmokrassar.com/InsanusMokrassar/krontab/src/master/LICENSE" + } + + } + } + + repositories { + maven { + name = "bintray" + url = uri("https://api.bintray.com/maven/${project.hasProperty('BINTRAY_USER') ? project.property('BINTRAY_USER') : System.getenv('BINTRAY_USER')}/InsanusMokrassar/${project.name}-mpp/;publish=1;override=1") + credentials { + username = project.hasProperty('BINTRAY_USER') ? project.property('BINTRAY_USER') : System.getenv('BINTRAY_USER') + password = project.hasProperty('BINTRAY_KEY') ? project.property('BINTRAY_KEY') : System.getenv('BINTRAY_KEY') + } + } + } + + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/CronDateTimeScheduler.kt b/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/CronDateTimeScheduler.kt deleted file mode 100644 index 627d4c2..0000000 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/CronDateTimeScheduler.kt +++ /dev/null @@ -1,32 +0,0 @@ -package com.insanusmokrassar.krontab.internal - -import com.insanusmokrassar.krontab.KronScheduler -import com.insanusmokrassar.krontab.anyCronDateTime -import com.soywiz.klock.DateTime - -/** - * Cron-oriented realisation of [KronScheduler] - * - * @see com.insanusmokrassar.krontab.AnyTimeScheduler - * @see com.insanusmokrassar.krontab.EverySecondScheduler - * @see com.insanusmokrassar.krontab.EveryMinuteScheduler - * @see com.insanusmokrassar.krontab.EveryHourScheduler - * @see com.insanusmokrassar.krontab.EveryDayOfMonthScheduler - * @see com.insanusmokrassar.krontab.EveryMonthScheduler - * - * @see com.insanusmokrassar.krontab.builder.buildSchedule - * @see com.insanusmokrassar.krontab.builder.SchedulerBuilder - */ -internal data class CronDateTimeScheduler internal constructor( - internal val cronDateTimes: List -) : KronScheduler { - /** - * @return Near date using [cronDateTimes] list and getting the [Iterable.min] one - * - * @see toNearDateTime - */ - override suspend fun next(relatively: DateTime): DateTime { - return cronDateTimes.map { it.toNearDateTime(relatively) }.minOrNull() ?: anyCronDateTime.toNearDateTime(relatively) - } -} - diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/Executes.kt b/src/commonMain/kotlin/dev/inmo/krontab/Executes.kt similarity index 95% rename from src/commonMain/kotlin/com/insanusmokrassar/krontab/Executes.kt rename to src/commonMain/kotlin/dev/inmo/krontab/Executes.kt index aab03af..18daaff 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/Executes.kt +++ b/src/commonMain/kotlin/dev/inmo/krontab/Executes.kt @@ -1,7 +1,6 @@ -package com.insanusmokrassar.krontab +package dev.inmo.krontab import com.soywiz.klock.DateTime -import kotlinx.coroutines.Deferred import kotlinx.coroutines.delay /** diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/KronScheduler.kt b/src/commonMain/kotlin/dev/inmo/krontab/KronScheduler.kt similarity index 63% rename from src/commonMain/kotlin/com/insanusmokrassar/krontab/KronScheduler.kt rename to src/commonMain/kotlin/dev/inmo/krontab/KronScheduler.kt index 827e8bb..4c5385c 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/KronScheduler.kt +++ b/src/commonMain/kotlin/dev/inmo/krontab/KronScheduler.kt @@ -1,21 +1,21 @@ -package com.insanusmokrassar.krontab +package dev.inmo.krontab import com.soywiz.klock.DateTime /** * This interface was created for abstraction of [next] operation. Currently, there is only - * [com.insanusmokrassar.krontab.internal.CronDateTimeScheduler] realisation of this interface inside of this library, + * [dev.inmo.krontab.internal.CronDateTimeScheduler] realisation of this interface inside of this library, * but you it is possible to create your own realisation of this interface for scheduling, for example, depending of * users activity or something like this * - * @see com.insanusmokrassar.krontab.internal.CronDateTimeScheduler + * @see dev.inmo.krontab.internal.CronDateTimeScheduler */ interface KronScheduler { /** * @return Next [DateTime] when some action must be triggered according to settings of this instance * - * @see com.insanusmokrassar.krontab.internal.CronDateTimeScheduler.next + * @see dev.inmo.krontab.internal.CronDateTimeScheduler.next */ suspend fun next(relatively: DateTime = DateTime.now()): DateTime } diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/SchedulerShortcuts.kt b/src/commonMain/kotlin/dev/inmo/krontab/SchedulerShortcuts.kt similarity index 84% rename from src/commonMain/kotlin/com/insanusmokrassar/krontab/SchedulerShortcuts.kt rename to src/commonMain/kotlin/dev/inmo/krontab/SchedulerShortcuts.kt index ef05f6f..c3cadc7 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/SchedulerShortcuts.kt +++ b/src/commonMain/kotlin/dev/inmo/krontab/SchedulerShortcuts.kt @@ -1,8 +1,8 @@ -package com.insanusmokrassar.krontab +package dev.inmo.krontab -import com.insanusmokrassar.krontab.builder.buildSchedule -import com.insanusmokrassar.krontab.internal.CronDateTime -import com.insanusmokrassar.krontab.internal.CronDateTimeScheduler +import dev.inmo.krontab.builder.buildSchedule +import dev.inmo.krontab.internal.CronDateTime +import dev.inmo.krontab.internal.CronDateTimeScheduler internal val anyCronDateTime by lazy { CronDateTime() diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/StringParser.kt b/src/commonMain/kotlin/dev/inmo/krontab/StringParser.kt similarity index 92% rename from src/commonMain/kotlin/com/insanusmokrassar/krontab/StringParser.kt rename to src/commonMain/kotlin/dev/inmo/krontab/StringParser.kt index 01f5d5c..845ad5d 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/StringParser.kt +++ b/src/commonMain/kotlin/dev/inmo/krontab/StringParser.kt @@ -1,6 +1,6 @@ -package com.insanusmokrassar.krontab +package dev.inmo.krontab -import com.insanusmokrassar.krontab.internal.* +import dev.inmo.krontab.internal.* /** * @see createSimpleScheduler @@ -45,7 +45,7 @@ typealias KrontabTemplate = String * * "0/15 30 * * *" for every 15th seconds in a half of each hour * * "1 2 3 F,4,L 5" for triggering in near first second of second minute of third hour of fourth day of may * - * @see com.insanusmokrassar.krontab.internal.createKronScheduler + * @see dev.inmo.krontab.internal.createKronScheduler */ fun createSimpleScheduler(incoming: KrontabTemplate): KronScheduler { val (secondsSource, minutesSource, hoursSource, dayOfMonthSource, monthSource) = incoming.split(" ") diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/builder/SchedulerBuilder.kt b/src/commonMain/kotlin/dev/inmo/krontab/builder/SchedulerBuilder.kt similarity index 81% rename from src/commonMain/kotlin/com/insanusmokrassar/krontab/builder/SchedulerBuilder.kt rename to src/commonMain/kotlin/dev/inmo/krontab/builder/SchedulerBuilder.kt index 57d4aec..d1db013 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/builder/SchedulerBuilder.kt +++ b/src/commonMain/kotlin/dev/inmo/krontab/builder/SchedulerBuilder.kt @@ -1,15 +1,12 @@ -package com.insanusmokrassar.krontab.builder +package dev.inmo.krontab.builder -import com.insanusmokrassar.krontab.KronScheduler -import com.insanusmokrassar.krontab.internal.* -import com.insanusmokrassar.krontab.internal.CronDateTime -import com.insanusmokrassar.krontab.internal.CronDateTimeScheduler -import com.insanusmokrassar.krontab.internal.fillWith +import dev.inmo.krontab.KronScheduler +import dev.inmo.krontab.internal.createKronScheduler /** * Will help to create an instance of [KronScheduler] * - * @see com.insanusmokrassar.krontab.createSimpleScheduler + * @see dev.inmo.krontab.createSimpleScheduler */ fun buildSchedule(settingsBlock: SchedulerBuilder.() -> Unit): KronScheduler { val builder = SchedulerBuilder() @@ -100,8 +97,8 @@ class SchedulerBuilder( /** * @return Completely built and independent [KronScheduler] * - * @see com.insanusmokrassar.krontab.createSimpleScheduler - * @see com.insanusmokrassar.krontab.internal.createKronScheduler + * @see dev.inmo.krontab.createSimpleScheduler + * @see dev.inmo.krontab.internal.createKronScheduler */ fun build(): KronScheduler = createKronScheduler(seconds, minutes, hours, dayOfMonth, month) } diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/builder/TimeBuilder.kt b/src/commonMain/kotlin/dev/inmo/krontab/builder/TimeBuilder.kt similarity index 96% rename from src/commonMain/kotlin/com/insanusmokrassar/krontab/builder/TimeBuilder.kt rename to src/commonMain/kotlin/dev/inmo/krontab/builder/TimeBuilder.kt index 467e48d..a250cbe 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/builder/TimeBuilder.kt +++ b/src/commonMain/kotlin/dev/inmo/krontab/builder/TimeBuilder.kt @@ -1,7 +1,7 @@ -package com.insanusmokrassar.krontab.builder +package dev.inmo.krontab.builder -import com.insanusmokrassar.krontab.internal.* -import com.insanusmokrassar.krontab.utils.clamp +import dev.inmo.krontab.internal.* +import dev.inmo.krontab.utils.clamp /** * This class was created for incapsulation of builder work with specified [restrictionsRange]. For example, diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/CronDateTime.kt b/src/commonMain/kotlin/dev/inmo/krontab/internal/CronDateTime.kt similarity index 95% rename from src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/CronDateTime.kt rename to src/commonMain/kotlin/dev/inmo/krontab/internal/CronDateTime.kt index e354b65..ed89c96 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/CronDateTime.kt +++ b/src/commonMain/kotlin/dev/inmo/krontab/internal/CronDateTime.kt @@ -1,9 +1,8 @@ -package com.insanusmokrassar.krontab.internal +package dev.inmo.krontab.internal -import com.insanusmokrassar.krontab.KronScheduler -import com.insanusmokrassar.krontab.utils.clamp import com.soywiz.klock.DateTime import com.soywiz.klock.DateTimeSpan +import dev.inmo.krontab.KronScheduler /** * @param month 0-11 diff --git a/src/commonMain/kotlin/dev/inmo/krontab/internal/CronDateTimeScheduler.kt b/src/commonMain/kotlin/dev/inmo/krontab/internal/CronDateTimeScheduler.kt new file mode 100644 index 0000000..c178620 --- /dev/null +++ b/src/commonMain/kotlin/dev/inmo/krontab/internal/CronDateTimeScheduler.kt @@ -0,0 +1,32 @@ +package dev.inmo.krontab.internal + +import com.soywiz.klock.DateTime +import dev.inmo.krontab.KronScheduler +import dev.inmo.krontab.anyCronDateTime + +/** + * Cron-oriented realisation of [KronScheduler] + * + * @see dev.inmo.krontab.AnyTimeScheduler + * @see dev.inmo.krontab.EverySecondScheduler + * @see dev.inmo.krontab.EveryMinuteScheduler + * @see dev.inmo.krontab.EveryHourScheduler + * @see dev.inmo.krontab.EveryDayOfMonthScheduler + * @see dev.inmo.krontab.EveryMonthScheduler + * + * @see dev.inmo.krontab.builder.buildSchedule + * @see dev.inmo.krontab.builder.SchedulerBuilder + */ +internal data class CronDateTimeScheduler internal constructor( + internal val cronDateTimes: List +) : KronScheduler { + /** + * @return Near date using [cronDateTimes] list and getting the [Iterable.min] one + * + * @see toNearDateTime + */ + override suspend fun next(relatively: DateTime): DateTime { + return cronDateTimes.map { it.toNearDateTime(relatively) }.minOrNull() ?: anyCronDateTime.toNearDateTime(relatively) + } +} + diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/Parser.kt b/src/commonMain/kotlin/dev/inmo/krontab/internal/Parser.kt similarity index 95% rename from src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/Parser.kt rename to src/commonMain/kotlin/dev/inmo/krontab/internal/Parser.kt index 3c9b2cf..04b71ff 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/Parser.kt +++ b/src/commonMain/kotlin/dev/inmo/krontab/internal/Parser.kt @@ -1,6 +1,6 @@ -package com.insanusmokrassar.krontab.internal +package dev.inmo.krontab.internal -import com.insanusmokrassar.krontab.utils.clamp +import dev.inmo.krontab.utils.clamp private fun createSimpleScheduler(from: String, dataRange: IntRange): Array? { val things = from.split(",") diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/Ranges.kt b/src/commonMain/kotlin/dev/inmo/krontab/internal/Ranges.kt similarity index 80% rename from src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/Ranges.kt rename to src/commonMain/kotlin/dev/inmo/krontab/internal/Ranges.kt index 26c60fa..58586f1 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/Ranges.kt +++ b/src/commonMain/kotlin/dev/inmo/krontab/internal/Ranges.kt @@ -1,4 +1,4 @@ -package com.insanusmokrassar.krontab.internal +package dev.inmo.krontab.internal internal val monthRange = 0 .. 11 internal val dayOfMonthRange = 0 .. 30 diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/utils/Data.kt b/src/commonMain/kotlin/dev/inmo/krontab/utils/Data.kt similarity index 90% rename from src/commonMain/kotlin/com/insanusmokrassar/krontab/utils/Data.kt rename to src/commonMain/kotlin/dev/inmo/krontab/utils/Data.kt index 5060708..f442496 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/utils/Data.kt +++ b/src/commonMain/kotlin/dev/inmo/krontab/utils/Data.kt @@ -1,4 +1,4 @@ -package com.insanusmokrassar.krontab.utils +package dev.inmo.krontab.utils /** * @return [min] in case if [this] less than [min]. Otherwise will check that [max] grant than [this] and return [this] diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/utils/SchedulerFlow.kt b/src/commonMain/kotlin/dev/inmo/krontab/utils/SchedulerFlow.kt similarity index 87% rename from src/commonMain/kotlin/com/insanusmokrassar/krontab/utils/SchedulerFlow.kt rename to src/commonMain/kotlin/dev/inmo/krontab/utils/SchedulerFlow.kt index 0d756ec..eca31f2 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/utils/SchedulerFlow.kt +++ b/src/commonMain/kotlin/dev/inmo/krontab/utils/SchedulerFlow.kt @@ -1,7 +1,7 @@ -package com.insanusmokrassar.krontab.utils +package dev.inmo.krontab.utils -import com.insanusmokrassar.krontab.KronScheduler import com.soywiz.klock.DateTime +import dev.inmo.krontab.KronScheduler import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.delay import kotlinx.coroutines.flow.* diff --git a/src/commonTest/kotlin/com/insanusmokrassar/krontab/utils/FailJob.kt b/src/commonTest/kotlin/dev/inmo/krontab/utils/FailJob.kt similarity index 83% rename from src/commonTest/kotlin/com/insanusmokrassar/krontab/utils/FailJob.kt rename to src/commonTest/kotlin/dev/inmo/krontab/utils/FailJob.kt index 43530fe..836c38b 100644 --- a/src/commonTest/kotlin/com/insanusmokrassar/krontab/utils/FailJob.kt +++ b/src/commonTest/kotlin/dev/inmo/krontab/utils/FailJob.kt @@ -1,4 +1,4 @@ -package com.insanusmokrassar.krontab.utils +package dev.inmo.krontab.utils import kotlinx.coroutines.* diff --git a/src/commonTest/kotlin/com/insanusmokrassar/krontab/utils/RunTest.kt b/src/commonTest/kotlin/dev/inmo/krontab/utils/RunTest.kt similarity index 80% rename from src/commonTest/kotlin/com/insanusmokrassar/krontab/utils/RunTest.kt rename to src/commonTest/kotlin/dev/inmo/krontab/utils/RunTest.kt index 129a4b5..871bb2e 100644 --- a/src/commonTest/kotlin/com/insanusmokrassar/krontab/utils/RunTest.kt +++ b/src/commonTest/kotlin/dev/inmo/krontab/utils/RunTest.kt @@ -1,4 +1,4 @@ -package com.insanusmokrassar.krontab.utils +package dev.inmo.krontab.utils import kotlinx.coroutines.CoroutineScope diff --git a/src/commonTest/kotlin/com/insanusmokrassar/krontab/utils/SchedulerFlow.kt b/src/commonTest/kotlin/dev/inmo/krontab/utils/SchedulerFlow.kt similarity index 92% rename from src/commonTest/kotlin/com/insanusmokrassar/krontab/utils/SchedulerFlow.kt rename to src/commonTest/kotlin/dev/inmo/krontab/utils/SchedulerFlow.kt index 2bb913f..0b305fd 100644 --- a/src/commonTest/kotlin/com/insanusmokrassar/krontab/utils/SchedulerFlow.kt +++ b/src/commonTest/kotlin/dev/inmo/krontab/utils/SchedulerFlow.kt @@ -1,7 +1,6 @@ -package com.insanusmokrassar.krontab.utils +package dev.inmo.krontab.utils -import com.insanusmokrassar.krontab.builder.buildSchedule -import com.soywiz.klock.DateTime +import dev.inmo.krontab.builder.buildSchedule import kotlinx.coroutines.* import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.takeWhile diff --git a/src/commonTest/kotlin/com/insanusmokrassar/krontab/utils/StringParseTest.kt b/src/commonTest/kotlin/dev/inmo/krontab/utils/StringParseTest.kt similarity index 93% rename from src/commonTest/kotlin/com/insanusmokrassar/krontab/utils/StringParseTest.kt rename to src/commonTest/kotlin/dev/inmo/krontab/utils/StringParseTest.kt index 383788a..fe37fc2 100644 --- a/src/commonTest/kotlin/com/insanusmokrassar/krontab/utils/StringParseTest.kt +++ b/src/commonTest/kotlin/dev/inmo/krontab/utils/StringParseTest.kt @@ -1,12 +1,9 @@ -package com.insanusmokrassar.krontab.utils +package dev.inmo.krontab.utils -import com.insanusmokrassar.krontab.buildSchedule -import com.soywiz.klock.DateTime +import dev.inmo.krontab.buildSchedule import kotlinx.coroutines.* import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.takeWhile -import kotlin.math.max -import kotlin.math.min import kotlin.test.Test import kotlin.test.assertEquals diff --git a/src/jsTest/kotlin/com/insanusmokrassar/krontab/utils/RunTest.kt b/src/jsTest/kotlin/dev/inmo/krontab/utils/RunTest.kt similarity index 77% rename from src/jsTest/kotlin/com/insanusmokrassar/krontab/utils/RunTest.kt rename to src/jsTest/kotlin/dev/inmo/krontab/utils/RunTest.kt index 5d87632..2318d43 100644 --- a/src/jsTest/kotlin/com/insanusmokrassar/krontab/utils/RunTest.kt +++ b/src/jsTest/kotlin/dev/inmo/krontab/utils/RunTest.kt @@ -1,4 +1,4 @@ -package com.insanusmokrassar.krontab.utils +package dev.inmo.krontab.utils import kotlinx.coroutines.* diff --git a/src/jvmTest/kotlin/com/insanusmokrassar/krontab/utils/RunTest.kt b/src/jvmTest/kotlin/dev/inmo/krontab/utils/RunTest.kt similarity index 84% rename from src/jvmTest/kotlin/com/insanusmokrassar/krontab/utils/RunTest.kt rename to src/jvmTest/kotlin/dev/inmo/krontab/utils/RunTest.kt index a20cefc..aee7680 100644 --- a/src/jvmTest/kotlin/com/insanusmokrassar/krontab/utils/RunTest.kt +++ b/src/jvmTest/kotlin/dev/inmo/krontab/utils/RunTest.kt @@ -1,4 +1,4 @@ -package com.insanusmokrassar.krontab.utils +package dev.inmo.krontab.utils import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.runBlocking