start including of publishing subproject
This commit is contained in:
parent
1ef5cc5af0
commit
7cfa612a9c
44
postssystem.core.publishing/build.gradle
Normal file
44
postssystem.core.publishing/build.gradle
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
buildscript {
|
||||||
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
|
jcenter()
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
|
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
|
||||||
|
classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:$gradle_bintray_plugin_version"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id "org.jetbrains.kotlin.plugin.serialization" version "$kotlin_version"
|
||||||
|
}
|
||||||
|
|
||||||
|
project.version = "$core_version"
|
||||||
|
project.group = "com.insanusmokrassar"
|
||||||
|
|
||||||
|
apply plugin: "java-library"
|
||||||
|
apply plugin: "kotlin"
|
||||||
|
apply from: "./publish.gradle"
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
|
jcenter()
|
||||||
|
mavenCentral()
|
||||||
|
maven { url "https://kotlin.bintray.com/kotlinx" }
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
api "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||||
|
|
||||||
|
if ((project.hasProperty('RELEASE_MODE') && project.property('RELEASE_MODE') == "true") || System.getenv('RELEASE_MODE') == "true") {
|
||||||
|
api "com.insanusmokrassar:postssystem.core:$core_version"
|
||||||
|
} else {
|
||||||
|
implementation project(":postssystem.core")
|
||||||
|
}
|
||||||
|
|
||||||
|
testImplementation "org.jetbrains.kotlin:kotlin-test"
|
||||||
|
testImplementation "org.jetbrains.kotlin:kotlin-test-junit"
|
||||||
|
}
|
53
postssystem.core.publishing/maven.publish.gradle
Normal file
53
postssystem.core.publishing/maven.publish.gradle
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
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 = "Publishing subsystem with necessary functionality related to publish mechanism"
|
||||||
|
name = "PostsSystem Core Publishing subsystem"
|
||||||
|
url = "https://git.insanusmokrassar.com/PostsSystem/Core/"
|
||||||
|
|
||||||
|
scm {
|
||||||
|
developerConnection = "scm:git:[fetch=]https://git.insanusmokrassar.com/PostsSystem/Core/.git[push=]https://git.insanusmokrassar.com/PostsSystem/Core/.git"
|
||||||
|
url = "https://git.insanusmokrassar.com/PostsSystem/Core/.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/PostsSystem/Core/src/master/LICENSE"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
55
postssystem.core.publishing/publish.gradle
Normal file
55
postssystem.core.publishing/publish.gradle
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
apply plugin: 'com.jfrog.bintray'
|
||||||
|
|
||||||
|
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(".", "/")
|
||||||
|
}
|
||||||
|
pkg {
|
||||||
|
repo = "InsanusMokrassar"
|
||||||
|
name = "${project.name}"
|
||||||
|
vcsUrl = "https://github.com/PostsSystem/PostsSystemCore"
|
||||||
|
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')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bintrayUpload.doFirst {
|
||||||
|
publications = publishing.publications.collect {
|
||||||
|
if (it.name.contains('kotlinMultiplatform')) {
|
||||||
|
null
|
||||||
|
} else {
|
||||||
|
it.name
|
||||||
|
}
|
||||||
|
} - null
|
||||||
|
}
|
||||||
|
|
||||||
|
bintrayUpload.dependsOn publishToMavenLocal
|
1
postssystem.core.publishing/publish_config.kpsb
Normal file
1
postssystem.core.publishing/publish_config.kpsb
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"bintrayConfig":{"repo":"InsanusMokrassar","packageName":"${project.name}","packageVcs":"https://github.com/PostsSystem/PostsSystemCore"},"licenses":[{"id":"Apache-2.0","title":"Apache Software License 2.0","url":"https://git.insanusmokrassar.com/PostsSystem/Core/src/master/LICENSE"}],"mavenConfig":{"name":"PostsSystem Core Publishing subsystem","description":"Publishing subsystem with necessary functionality related to publish mechanism","url":"https://git.insanusmokrassar.com/PostsSystem/Core/","vcsUrl":"https://git.insanusmokrassar.com/PostsSystem/Core/.git","developers":[{"id":"InsanusMokrassar","name":"Ovsiannikov Aleksei","eMail":"ovsyannikov.alexey95@gmail.com"}]},"type":"Multiplatform"}
|
@ -0,0 +1,52 @@
|
|||||||
|
package com.insanusmokrassar.postssystem.core.publishing
|
||||||
|
|
||||||
|
import com.insanusmokrassar.postssystem.core.post.PostId
|
||||||
|
import com.insanusmokrassar.postssystem.core.publishing.repos.PublishingKeysRepo
|
||||||
|
import kotlinx.coroutines.channels.BroadcastChannel
|
||||||
|
import kotlinx.coroutines.channels.Channel
|
||||||
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
|
||||||
|
typealias TriggerControlKey = String
|
||||||
|
|
||||||
|
interface ReadPublishingRegistrator {
|
||||||
|
suspend fun getPostIdByTriggerControlKey(
|
||||||
|
key: TriggerControlKey
|
||||||
|
): PostId?
|
||||||
|
}
|
||||||
|
|
||||||
|
interface WritePublishingRegistrator {
|
||||||
|
val unregisteredKeysFlow: Flow<TriggerControlKey>
|
||||||
|
|
||||||
|
suspend fun registerTriggerForPost(
|
||||||
|
key: TriggerControlKey,
|
||||||
|
postId: PostId
|
||||||
|
): Boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
interface PublishingRegistrator : ReadPublishingRegistrator, WritePublishingRegistrator
|
||||||
|
|
||||||
|
class BusinessPublishingRegistrator(
|
||||||
|
private val repo: PublishingKeysRepo
|
||||||
|
) : PublishingRegistrator {
|
||||||
|
private val unregisteredKeysChannel: BroadcastChannel<TriggerControlKey> = BroadcastChannel(Channel.BUFFERED)
|
||||||
|
override val unregisteredKeysFlow: Flow<TriggerControlKey>
|
||||||
|
get() = TODO("Not yet implemented")
|
||||||
|
|
||||||
|
override suspend fun getPostIdByTriggerControlKey(
|
||||||
|
key: TriggerControlKey
|
||||||
|
): PostId? = repo.getPostIdByTriggerControlKey(key)
|
||||||
|
|
||||||
|
override suspend fun registerTriggerForPost(
|
||||||
|
key: TriggerControlKey,
|
||||||
|
postId: PostId
|
||||||
|
): Boolean = repo.getTriggerControlKeyByPostId(
|
||||||
|
postId
|
||||||
|
).let { previousKey ->
|
||||||
|
repo.setPostTriggerControlKey(postId, key).also { inserted ->
|
||||||
|
if (inserted && previousKey != null) {
|
||||||
|
unregisteredKeysChannel.send(previousKey)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.insanusmokrassar.postssystem.core.publishing
|
||||||
|
|
||||||
|
import com.insanusmokrassar.postssystem.core.post.PostId
|
||||||
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
|
||||||
|
interface PublishingTrigger {
|
||||||
|
val postingTriggeredFlow: Flow<PostId>
|
||||||
|
|
||||||
|
suspend fun triggerPosting(
|
||||||
|
triggerControlKey: TriggerControlKey
|
||||||
|
): PostId?
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,28 @@
|
|||||||
|
package com.insanusmokrassar.postssystem.core.publishing.repos
|
||||||
|
|
||||||
|
import com.insanusmokrassar.postssystem.core.post.PostId
|
||||||
|
import com.insanusmokrassar.postssystem.core.publishing.TriggerControlKey
|
||||||
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
|
||||||
|
interface ReadPublishingKeysRepo {
|
||||||
|
suspend fun getPostIdByTriggerControlKey(
|
||||||
|
key: TriggerControlKey
|
||||||
|
): PostId?
|
||||||
|
suspend fun getTriggerControlKeyByPostId(
|
||||||
|
postId: PostId
|
||||||
|
): TriggerControlKey?
|
||||||
|
}
|
||||||
|
|
||||||
|
interface WritePublishingKeysRepo {
|
||||||
|
val postTriggerControlKeyUpdated: Flow<Pair<PostId, TriggerControlKey>>
|
||||||
|
val postTriggerControlKeyUnset: Flow<PostId>
|
||||||
|
suspend fun setPostTriggerControlKey(
|
||||||
|
postId: PostId,
|
||||||
|
key: TriggerControlKey
|
||||||
|
): Boolean
|
||||||
|
suspend fun unsetPostTriggerControlKey(
|
||||||
|
postId: PostId
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
interface PublishingKeysRepo : ReadPublishingKeysRepo, WritePublishingKeysRepo
|
@ -69,5 +69,10 @@ kotlin {
|
|||||||
api "org.jetbrains.kotlinx:kotlinx-serialization-runtime-js:$kotlin_serialisation_runtime_version"
|
api "org.jetbrains.kotlinx:kotlinx-serialization-runtime-js:$kotlin_serialisation_runtime_version"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
jsTest {
|
||||||
|
dependencies {
|
||||||
|
implementation kotlin('test-junit-js')
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
rootProject.name='postssystem'
|
rootProject.name='postssystem'
|
||||||
include ':postssystem.core'
|
include ':postssystem.core'
|
||||||
include ':postssystem.exposed'
|
include ':postssystem.core.exposed'
|
||||||
|
include ':postssystem.core.publishing'
|
||||||
|
Loading…
Reference in New Issue
Block a user