Skip to content

Commit

Permalink
Merge pull request #68 from amank22/publish_modules
Browse files Browse the repository at this point in the history
Published Api Module
  • Loading branch information
amank22 authored Feb 8, 2022
2 parents e3c38a8 + c3e770f commit cd13e4d
Show file tree
Hide file tree
Showing 15 changed files with 281 additions and 56 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/buildPreProd.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Logvue Build
name: Logvue Build Pre-Prod

env:
GITHUB_DEPLOY: 'false'
Expand Down
63 changes: 63 additions & 0 deletions .github/workflows/publish_api.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: Logvue Publish

env:
GITHUB_DEPLOY: 'false'

on:
workflow_dispatch:

defaults:
run:
shell: bash

jobs:
build:
name: Release build and publish
continue-on-error: false

runs-on: ubuntu-latest
environment: Production
strategy:
fail-fast: true
matrix:
jdk: [ 18 ]

steps:
- name: Check out the source code
uses: actions/checkout@v2

- name: Download OpenJDK ${{ matrix.jdk }}
id: download-jdk
uses: sormuras/download-jdk@v1
with:
feature: ${{ matrix.jdk }}

- name: Set up OpenJDK ${{ matrix.jdk }}
id: setup-java
uses: actions/setup-java@v2
if: always() && steps.download-jdk.outcome == 'success'
with:
distribution: jdkfile
java-version: ${{ env.JDK_VERSION }}
jdkFile: ${{ env.JDK_FILE }}

- name: Cache Gradle dependencies
uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
# Runs upload, and then closes & releases the repository
- name: Publish to MavenCentral
run: ./gradlew publishReleasePublicationToSonatypeRepository --max-workers 1 closeAndReleaseSonatypeStagingRepository
env:
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }}
SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
SONATYPE_STAGING_PROFILE_ID: ${{ secrets.SONATYPE_STAGING_PROFILE_ID }}
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,12 @@
- Plain Yaml
- Copy single analytics data in details section

## Plugins

You can extend LogVue with you own analytics platform.
See [LogVue Templates](https://github.com/amank22/Logvue-Plugin-Template) for creating
your own analytics parser for LogVue.

## Contribute

Do you see any improvements or want to implement a missing feature? Contributions are very welcome!
Expand All @@ -83,8 +89,6 @@ before you start making any changes.

## Future goals

- [ ] Plugin system to support more logs and allows for in-house
customisations [#27](https://github.com/amank22/LogVue/issues/27)
- [ ] Import event logs directly [#28](https://github.com/amank22/LogVue/issues/28)
- [ ] A framework to validate logs directly with some set of rules directly in GUI
- [ ] Create [feature request](https://github.com/amank22/LogVue/issues/new) and we can discuss
Empty file added api/Changelog.md
Empty file.
18 changes: 15 additions & 3 deletions api/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,18 +1,30 @@
val pf4jVersion: String by project

import com.voxfinite.logvue.Configuration
import com.voxfinite.logvue.Dependencies

plugins {
kotlin("jvm")
}

ext {
set("PUBLISH_GROUP_ID", Configuration.Api.artifactGroup)
if (Configuration.Api.isSnapshot || rootProject.ext["snapshot"] as Boolean) {
set("PUBLISH_VERSION", Configuration.Api.snapshotVersionName)
} else {
set("PUBLISH_VERSION", Configuration.Api.versionName)
}
set("PUBLISH_ARTIFACT_ID", Configuration.Api.artifactId)
}

apply(from = "${rootDir}/scripts/publish-module.gradle")

dependencies {
implementation(kotlin("stdlib"))
// https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl
implementation("org.apache.logging.log4j:log4j-slf4j-impl:2.17.0")
implementation("org.apache.logging.log4j:log4j-api:2.17.0")
implementation("org.apache.logging.log4j:log4j-core:2.17.0")

compileOnly("org.pf4j:pf4j:${pf4jVersion}")
compileOnly(Dependencies.Pf4j)
// types parser for object to map conversion
implementation("com.github.drapostolos:type-parser:0.7.0")
implementation("com.google.code.gson:gson:2.8.9")
Expand Down
49 changes: 7 additions & 42 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import org.jetbrains.compose.compose
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import com.voxfinite.logvue.Dependencies
import com.voxfinite.logvue.utils.findPkg
import com.voxfinite.logvue.utils.ghActionOutput
import com.voxfinite.logvue.utils.getMainAppVersion

val pf4jVersion: String by project
val pluginsDir: File by rootProject.extra

plugins {
Expand All @@ -14,14 +16,14 @@ plugins {
val r8: Configuration by configurations.creating

group = "com.voxfinite"
version = appVersion()
version = project.getMainAppVersion()
val appName = "logvue"
val appMainClass = "com.voxfinite.logvue.app.MainKt"

dependencies {
implementation(kotlin("stdlib"))
testImplementation(kotlin("test"))
implementation(project(":api"))
implementation(Dependencies.LogVueApi)
implementation(compose.desktop.currentOs)
// https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl
implementation("org.apache.logging.log4j:log4j-slf4j-impl:2.17.0")
Expand All @@ -40,7 +42,7 @@ dependencies {
implementation("io.sentry:sentry-log4j2:5.6.0")
// https://mvnrepository.com/artifact/net.harawata/appdirs
implementation("net.harawata:appdirs:1.2.1")
implementation ("org.pf4j:pf4j:${pf4jVersion}")
implementation (Dependencies.Pf4j)

r8("com.android.tools:r8:3.0.73")
}
Expand Down Expand Up @@ -155,40 +157,3 @@ gradle.buildFinished {
nativePkg.ghActionOutput("app_pkg")
jarPkg.ghActionOutput("uber_jar")
}

fun File.findPkg(format: String?) = when (format != null) {
true -> walk().firstOrNull { it.isFile && it.name.endsWith(format, ignoreCase = true) }
else -> null
}

fun File?.ghActionOutput(prefix: String) = this?.let {
when (System.getenv("GITHUB_ACTIONS").toBoolean()) {
true -> println(
"""
::set-output name=${prefix}_name::${it.name}
::set-output name=${prefix}_path::${it.absolutePath}
""".trimIndent()
)
else -> println("$prefix: $this")
}
}

fun appVersion() : String {
val key = "APP_VERSION"
return if (project.hasProperty(key)) {
val version = project.property("APP_VERSION").toString()
println("Version = $version")
if (version.isBlank()) {
return "1.0.0"
}
if (version.matches(Regex("^[\\d]{1,3}.[\\d]{1,3}.[\\d]{1,4}"))) {
return version
}
if (version.matches(Regex("^v[\\d]{1,3}.[\\d]{1,3}.[\\d]{1,4}"))) {
return version.removePrefix("v")
}
"1.0.0"
} else {
"1.0.0"
}
}
4 changes: 4 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ buildscript {

plugins {
kotlin("jvm") version "1.6.10"
id("org.jetbrains.dokka") version "1.6.10"
id("io.github.gradle-nexus.publish-plugin") version "1.1.0"
}

allprojects {
Expand All @@ -34,3 +36,5 @@ subprojects {
kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn"
}
}

apply(from = "${rootDir}/scripts/publish-root.gradle")
7 changes: 7 additions & 0 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
plugins {
`kotlin-dsl`
}

repositories {
mavenCentral()
}
15 changes: 15 additions & 0 deletions buildSrc/src/main/kotlin/com/voxfinite/logvue/Configuration.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.voxfinite.logvue

object Configuration {

object Api {
const val majorVersion = 1
const val minorVersion = 0
const val patchVersion = 0
const val versionName = "$majorVersion.$minorVersion.$patchVersion"
const val snapshotVersionName = "$majorVersion.$minorVersion.${patchVersion + 1}-SNAPSHOT"
const val isSnapshot = false
const val artifactGroup = "io.github.amank22.logvue"
const val artifactId = "api"
}
}
11 changes: 11 additions & 0 deletions buildSrc/src/main/kotlin/com/voxfinite/logvue/Dependencies.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.voxfinite.logvue

object Versions {
const val LogVueApi = "1.0.0"
const val P4fj = "3.6.0"
}

object Dependencies {
const val LogVueApi = "io.github.amank22.logvue:api:${Versions.LogVueApi}"
const val Pf4j = "org.pf4j:pf4j:${Versions.P4fj}"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.voxfinite.logvue.utils

import org.gradle.api.Project
import java.io.File

fun Project.getMainAppVersion() : String {
val key = "APP_VERSION"
return if (hasProperty(key)) {
val version = property("APP_VERSION").toString()
println("Version = $version")
if (version.isBlank()) {
return "1.0.0"
}
if (version.matches(Regex("^[\\d]{1,3}.[\\d]{1,3}.[\\d]{1,4}"))) {
return version
}
if (version.matches(Regex("^v[\\d]{1,3}.[\\d]{1,3}.[\\d]{1,4}"))) {
return version.removePrefix("v")
}
"1.0.0"
} else {
"1.0.0"
}
}

fun File.findPkg(format: String?) = when (format != null) {
true -> walk().firstOrNull { it.isFile && it.name.endsWith(format, ignoreCase = true) }
else -> null
}

fun File?.ghActionOutput(prefix: String) = this?.let {
when (System.getenv("GITHUB_ACTIONS").toBoolean()) {
true -> println(
"""
::set-output name=${prefix}_name::${it.name}
::set-output name=${prefix}_path::${it.absolutePath}
""".trimIndent()
)
else -> println("$prefix: $this")
}
}
3 changes: 0 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,2 @@
kotlin.code.style=official
#kotlin.native.binary.memoryModel=experimental

# PF4J
pf4jVersion=3.6.0
9 changes: 4 additions & 5 deletions plugins/pdt/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
import com.voxfinite.logvue.Dependencies
plugins {
kotlin("kapt")
}

val pf4jVersion: String by project

dependencies {
compileOnly(project(":api"))
compileOnly(Dependencies.LogVueApi)
compileOnly(kotlin("stdlib"))

compileOnly("org.pf4j:pf4j:${pf4jVersion}")
kapt("org.pf4j:pf4j:${pf4jVersion}")
compileOnly(Dependencies.Pf4j)
kapt(Dependencies.Pf4j)
// implementation("org.apache.commons:commons-lang3:3.5") // this is an example for an external library included
}
68 changes: 68 additions & 0 deletions scripts/publish-module.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
apply plugin: 'maven-publish'
apply plugin: 'signing'
apply plugin: 'org.jetbrains.dokka'

java {
withSourcesJar()
}

tasks.withType(dokkaHtmlPartial.getClass()).configureEach {
pluginsMapConfiguration.set(
["org.jetbrains.dokka.base.DokkaBase": """{ "separateInheritedMembers": true}"""]
)
}

task javadocJar(type: Jar, dependsOn: dokkaJavadoc) {
archiveClassifier.set('javadoc')
from dokkaJavadoc.outputDirectory
}

group = PUBLISH_GROUP_ID
version = PUBLISH_VERSION

afterEvaluate {
publishing {
publications {
release(MavenPublication) {
groupId PUBLISH_GROUP_ID
artifactId PUBLISH_ARTIFACT_ID
version PUBLISH_VERSION
from components.java
artifact javadocJar

pom {
name = PUBLISH_ARTIFACT_ID
description = 'Monitor, analyse local analytics from ADB and use SQL-Like query to filter logs on desktop'
url = 'https://github.com/amank22/LogVue'
licenses {
license {
name = 'GPL-3.0 License'
url = 'https://github.com/amank22/LogVue/blob/main/LICENSE'
}
}
developers {
developer {
id = 'amank22'
name = 'Aman Kapoor'
email = '[email protected]'
}
}
scm {
connection = 'scm:git:github.com/amank22/logvue.git'
developerConnection = 'scm:git:ssh://github.com/amank22/logvue.git'
url = 'https://github.com/amank22/LogVue/tree/main'
}
}
}
}
}
}

signing {
useInMemoryPgpKeys(
rootProject.ext["signing.keyId"],
rootProject.ext["signing.key"],
rootProject.ext["signing.password"],
)
sign publishing.publications
}
Loading

0 comments on commit cd13e4d

Please sign in to comment.