diff --git a/publish.gradle b/publish.gradle index 153e1c5..ee8ca55 100644 --- a/publish.gradle +++ b/publish.gradle @@ -17,7 +17,7 @@ bintray { rename "(.*)jvm8-(.*)", "\$1\$2" } pkg { - repo = 'StandardRepository' + repo = 'InsanusMokrassar' name = "${project.name}" vcsUrl = "${project_vcs_base}/${project.name}" licenses = ['Apache-2.0'] diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/builder/TimeBuilder.kt b/src/commonMain/kotlin/com/insanusmokrassar/krontab/builder/TimeBuilder.kt index c4605e0..a025326 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/builder/TimeBuilder.kt +++ b/src/commonMain/kotlin/com/insanusmokrassar/krontab/builder/TimeBuilder.kt @@ -1,9 +1,12 @@ package com.insanusmokrassar.krontab.builder import com.github.insanusmokrassar.krontab.* -import com.github.insanusmokrassar.krontab.minutesRange -import com.github.insanusmokrassar.krontab.monthRange -import com.github.insanusmokrassar.krontab.secondsRange +import com.insanusmokrassar.krontab.internal.* +import com.insanusmokrassar.krontab.internal.dayOfMonthRange +import com.insanusmokrassar.krontab.internal.hoursRange +import com.insanusmokrassar.krontab.internal.minutesRange +import com.insanusmokrassar.krontab.internal.monthRange +import com.insanusmokrassar.krontab.internal.secondsRange import com.insanusmokrassar.krontab.utils.clamp sealed class TimeBuilder ( @@ -49,6 +52,6 @@ sealed class TimeBuilder ( class SecondsBuilder : TimeBuilder(secondsRange) class MinutesBuilder : TimeBuilder(minutesRange) -class HoursBuilder : TimeBuilder(hoursRange) -class DaysOfMonthBuilder : TimeBuilder(dayOfMonthRange) +class HoursBuilder : TimeBuilder(com.insanusmokrassar.krontab.internal.hoursRange) +class DaysOfMonthBuilder : TimeBuilder(com.insanusmokrassar.krontab.internal.dayOfMonthRange) class MonthsBuilder : TimeBuilder(monthRange) diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/CronDateTime.kt b/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/CronDateTime.kt index f22353b..f703d77 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/CronDateTime.kt +++ b/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/CronDateTime.kt @@ -1,10 +1,10 @@ package com.insanusmokrassar.krontab.internal -import com.github.insanusmokrassar.krontab.dayOfMonthRange -import com.github.insanusmokrassar.krontab.hoursRange -import com.github.insanusmokrassar.krontab.minutesRange -import com.github.insanusmokrassar.krontab.monthRange -import com.github.insanusmokrassar.krontab.secondsRange +import com.insanusmokrassar.krontab.internal.dayOfMonthRange +import com.insanusmokrassar.krontab.internal.hoursRange +import com.insanusmokrassar.krontab.internal.minutesRange +import com.insanusmokrassar.krontab.internal.monthRange +import com.insanusmokrassar.krontab.internal.secondsRange import com.insanusmokrassar.krontab.utils.clamp import com.soywiz.klock.DateTime import com.soywiz.klock.DateTimeSpan @@ -24,11 +24,11 @@ internal data class CronDateTime( val seconds: Byte? = null ) { init { - check(month ?.let { it in monthRange } ?: true) - check(dayOfMonth ?.let { it in dayOfMonthRange } ?: true) - check(hours?.let { it in hoursRange } ?: true) - check(minutes?.let { it in minutesRange } ?: true) - check(seconds?.let { it in secondsRange } ?: true) + check(month ?.let { it in com.insanusmokrassar.krontab.internal.monthRange } ?: true) + check(dayOfMonth ?.let { it in com.insanusmokrassar.krontab.internal.dayOfMonthRange } ?: true) + check(hours?.let { it in com.insanusmokrassar.krontab.internal.hoursRange } ?: true) + check(minutes?.let { it in com.insanusmokrassar.krontab.internal.minutesRange } ?: true) + check(seconds?.let { it in com.insanusmokrassar.krontab.internal.secondsRange } ?: true) } internal val klockDayOfMonth = dayOfMonth ?.plus(1) @@ -41,11 +41,11 @@ internal data class CronDateTime( minutes: Int? = null, seconds: Int? = null ) = CronDateTime( - month ?.clamp(monthRange) ?.toByte(), - dayOfMonth ?.clamp(dayOfMonthRange) ?.toByte(), - hours ?.clamp(hoursRange) ?.toByte(), - minutes ?.clamp(minutesRange) ?.toByte(), - seconds ?.clamp(secondsRange) ?.toByte() + month ?.clamp(com.insanusmokrassar.krontab.internal.monthRange) ?.toByte(), + dayOfMonth ?.clamp(com.insanusmokrassar.krontab.internal.dayOfMonthRange) ?.toByte(), + hours ?.clamp(com.insanusmokrassar.krontab.internal.hoursRange) ?.toByte(), + minutes ?.clamp(com.insanusmokrassar.krontab.internal.minutesRange) ?.toByte(), + seconds ?.clamp(com.insanusmokrassar.krontab.internal.secondsRange) ?.toByte() ) } } diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/Parser.kt b/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/Parser.kt index 3646cf5..789384d 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/Parser.kt +++ b/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/Parser.kt @@ -1,10 +1,10 @@ package com.insanusmokrassar.krontab.internal -import com.github.insanusmokrassar.krontab.dayOfMonthRange -import com.github.insanusmokrassar.krontab.hoursRange -import com.github.insanusmokrassar.krontab.minutesRange -import com.github.insanusmokrassar.krontab.monthRange -import com.github.insanusmokrassar.krontab.secondsRange +import com.insanusmokrassar.krontab.internal.dayOfMonthRange +import com.insanusmokrassar.krontab.internal.hoursRange +import com.insanusmokrassar.krontab.internal.minutesRange +import com.insanusmokrassar.krontab.internal.monthRange +import com.insanusmokrassar.krontab.internal.secondsRange import com.insanusmokrassar.krontab.utils.clamp private fun createCronDateTimeScheduler(from: String, dataRange: IntRange): Array? { @@ -30,11 +30,21 @@ private fun createCronDateTimeScheduler(from: String, dataRange: IntRange): Arra return results.map { it.toByte() }.toTypedArray() } -internal fun parseMonths(from: String) = createCronDateTimeScheduler(from, monthRange) -internal fun parseDaysOfMonth(from: String) = createCronDateTimeScheduler(from, dayOfMonthRange) -internal fun parseHours(from: String) = createCronDateTimeScheduler(from, hoursRange) -internal fun parseMinutes(from: String) = createCronDateTimeScheduler(from, minutesRange) -internal fun parseSeconds(from: String) = createCronDateTimeScheduler(from, secondsRange) +internal fun parseMonths(from: String) = createCronDateTimeScheduler(from, + com.insanusmokrassar.krontab.internal.monthRange +) +internal fun parseDaysOfMonth(from: String) = createCronDateTimeScheduler(from, + com.insanusmokrassar.krontab.internal.dayOfMonthRange +) +internal fun parseHours(from: String) = createCronDateTimeScheduler(from, + com.insanusmokrassar.krontab.internal.hoursRange +) +internal fun parseMinutes(from: String) = createCronDateTimeScheduler(from, + com.insanusmokrassar.krontab.internal.minutesRange +) +internal fun parseSeconds(from: String) = createCronDateTimeScheduler(from, + com.insanusmokrassar.krontab.internal.secondsRange +) internal fun Array.fillWith( whereToPut: MutableList, diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/Ranges.kt b/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/Ranges.kt index c7c6b3b..26c60fa 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/Ranges.kt +++ b/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/Ranges.kt @@ -1,4 +1,4 @@ -package com.github.insanusmokrassar.krontab +package com.insanusmokrassar.krontab.internal internal val monthRange = 0 .. 11 internal val dayOfMonthRange = 0 .. 30 diff --git a/src/jvm8Main/kotlin/TempMain.kt b/src/jvm8Main/kotlin/TempMain.kt new file mode 100644 index 0000000..25f6e9f --- /dev/null +++ b/src/jvm8Main/kotlin/TempMain.kt @@ -0,0 +1,23 @@ +import com.insanusmokrassar.krontab.builder.buildSchedule +import com.insanusmokrassar.krontab.executeOnce +import com.soywiz.klock.DateTime +import kotlinx.coroutines.runBlocking + +fun main() { + runBlocking { + buildSchedule { + seconds { + from(5) every 10 + from(0) upTo 5 + } + minutes { + at(30) + at(59) + } + }.also { + println(it) + }.executeOnce { + println("Done: ${DateTime.now()}") + } + } +}