solution: banner on run
This commit is contained in:
21
build.gradle
21
build.gradle
@@ -1,6 +1,7 @@
|
|||||||
import java.time.Instant
|
import java.time.Instant
|
||||||
import java.time.ZoneId
|
import java.time.ZoneId
|
||||||
import java.time.format.DateTimeFormatter
|
import java.time.format.DateTimeFormatter
|
||||||
|
import java.time.temporal.ChronoUnit
|
||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
@@ -23,6 +24,7 @@ plugins {
|
|||||||
id "com.google.cloud.tools.jib" version "1.3.0"
|
id "com.google.cloud.tools.jib" version "1.3.0"
|
||||||
id 'org.springframework.boot' version '2.1.4.RELEASE'
|
id 'org.springframework.boot' version '2.1.4.RELEASE'
|
||||||
id 'io.spring.dependency-management' version '1.0.6.RELEASE'
|
id 'io.spring.dependency-management' version '1.0.6.RELEASE'
|
||||||
|
id 'com.palantir.git-version' version '0.12.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -161,4 +163,23 @@ jar {
|
|||||||
|
|
||||||
afterEvaluate {
|
afterEvaluate {
|
||||||
distZip.dependsOn(jar)
|
distZip.dependsOn(jar)
|
||||||
|
compileKotlin.dependsOn(generateVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
task generateVersion() {
|
||||||
|
group = 'Build'
|
||||||
|
description = 'Generate project version'
|
||||||
|
|
||||||
|
doLast {
|
||||||
|
def version = versionDetails()
|
||||||
|
def resourcesDir = sourceSets.main.output.resourcesDir
|
||||||
|
new File(resourcesDir, "version.properties").text = [
|
||||||
|
"# AUTOMATICALLY GENERATED",
|
||||||
|
"version.app=$project.version",
|
||||||
|
"version.commit=${version.gitHash}",
|
||||||
|
"version.tag=${version.lastTag}",
|
||||||
|
"version.date=${DateTimeFormatter.ISO_LOCAL_DATE_TIME.withZone(ZoneId.of('UTC')).format(Instant.now().truncatedTo(ChronoUnit.SECONDS))} UTC"
|
||||||
|
].join("\n")
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -20,8 +20,10 @@ import org.springframework.beans.factory.config.YamlPropertiesFactoryBean
|
|||||||
import org.springframework.core.env.*
|
import org.springframework.core.env.*
|
||||||
import org.springframework.core.io.FileSystemResource
|
import org.springframework.core.io.FileSystemResource
|
||||||
import org.springframework.core.io.Resource
|
import org.springframework.core.io.Resource
|
||||||
|
import org.springframework.core.io.support.ResourcePropertySource
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
import javax.annotation.PostConstruct
|
||||||
|
|
||||||
const val DEFAULT_CONFIG = "/etc/dshackle/dshackle.yaml"
|
const val DEFAULT_CONFIG = "/etc/dshackle/dshackle.yaml"
|
||||||
const val LOCAL_CONFIG = "./dshackle.yaml"
|
const val LOCAL_CONFIG = "./dshackle.yaml"
|
||||||
@@ -32,10 +34,10 @@ open class DshackleEnvironment: StandardEnvironment() {
|
|||||||
private val log = LoggerFactory.getLogger(DshackleEnvironment::class.java)
|
private val log = LoggerFactory.getLogger(DshackleEnvironment::class.java)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun customizePropertySources(propertySources: MutablePropertySources) {
|
override fun customizePropertySources(propertySources: MutablePropertySources) {
|
||||||
super.customizePropertySources(propertySources)
|
super.customizePropertySources(propertySources)
|
||||||
propertySources.addLast(mainConfig())
|
propertySources.addLast(mainConfig())
|
||||||
|
propertySources.addLast(ResourcePropertySource("version.properties"))
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun mainConfig(): PropertySource<*> {
|
open fun mainConfig(): PropertySource<*> {
|
||||||
@@ -48,7 +50,6 @@ open class DshackleEnvironment: StandardEnvironment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
target = target.normalize()
|
target = target.normalize()
|
||||||
log.info("Load configuration from: ${target.absolutePath}")
|
|
||||||
val loadedProperties = this.loadYaml(FileSystemResource(target))
|
val loadedProperties = this.loadYaml(FileSystemResource(target))
|
||||||
loadedProperties["configPath"] = target.absolutePath
|
loadedProperties["configPath"] = target.absolutePath
|
||||||
return PropertiesPropertySource("mainConfig", loadedProperties)
|
return PropertiesPropertySource("mainConfig", loadedProperties)
|
||||||
|
|||||||
@@ -16,9 +16,11 @@
|
|||||||
package io.emeraldpay.dshackle
|
package io.emeraldpay.dshackle
|
||||||
|
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
|
import org.springframework.boot.ResourceBanner
|
||||||
import org.springframework.boot.SpringApplication
|
import org.springframework.boot.SpringApplication
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication
|
import org.springframework.boot.autoconfigure.SpringBootApplication
|
||||||
import org.springframework.context.annotation.Import
|
import org.springframework.context.annotation.Import
|
||||||
|
import org.springframework.core.io.ClassPathResource
|
||||||
|
|
||||||
@SpringBootApplication(scanBasePackages = [ "io.emeraldpay.dshackle" ])
|
@SpringBootApplication(scanBasePackages = [ "io.emeraldpay.dshackle" ])
|
||||||
@Import(Config::class)
|
@Import(Config::class)
|
||||||
@@ -29,5 +31,6 @@ private val log = LoggerFactory.getLogger(Starter::class.java)
|
|||||||
fun main(args: Array<String>) {
|
fun main(args: Array<String>) {
|
||||||
val app = SpringApplication(Starter::class.java)
|
val app = SpringApplication(Starter::class.java)
|
||||||
app.setEnvironment(DshackleEnvironment())
|
app.setEnvironment(DshackleEnvironment())
|
||||||
|
app.setBanner(ResourceBanner(ClassPathResource("banner.txt")))
|
||||||
app.run(*args)
|
app.run(*args)
|
||||||
}
|
}
|
||||||
9
src/main/resources/banner.txt
Normal file
9
src/main/resources/banner.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
_ _ __ _ _ _ _
|
||||||
|
| | | | / /| | | | | | | |
|
||||||
|
___ _ __ ___ ___ _ __ __ _| | __| | / /_| |___| |__ __ _ ___| | _| | ___
|
||||||
|
/ _ \ '_ ` _ \ / _ \ '__/ _` | |/ _` | / / _` / __| '_ \ / _` |/ __| |/ / |/ _ \
|
||||||
|
| __/ | | | | | __/ | | (_| | | (_| |/ / (_| \__ \ | | | (_| | (__| <| | __/
|
||||||
|
\___|_| |_| |_|\___|_| \__,_|_|\__,_/_/ \__,_|___/_| |_|\__,_|\___|_|\_\_|\___|
|
||||||
|
Emerald Dshackle - Smart Load Balancer for Blockchain API
|
||||||
|
https://github.com/emeraldpay/dshackle
|
||||||
|
v${version.app} built from ${version.commit} on ${version.date}
|
||||||
Reference in New Issue
Block a user