solution: banner on run

This commit is contained in:
Igor Artamonov
2020-03-18 21:09:59 -04:00
parent 2aa78a96c5
commit 32249bff32
4 changed files with 36 additions and 2 deletions

View File

@@ -1,6 +1,7 @@
import java.time.Instant
import java.time.ZoneId
import java.time.format.DateTimeFormatter
import java.time.temporal.ChronoUnit
buildscript {
repositories {
@@ -23,6 +24,7 @@ plugins {
id "com.google.cloud.tools.jib" version "1.3.0"
id 'org.springframework.boot' version '2.1.4.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 {
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")
}
}

View File

@@ -20,8 +20,10 @@ import org.springframework.beans.factory.config.YamlPropertiesFactoryBean
import org.springframework.core.env.*
import org.springframework.core.io.FileSystemResource
import org.springframework.core.io.Resource
import org.springframework.core.io.support.ResourcePropertySource
import java.io.File
import java.util.*
import javax.annotation.PostConstruct
const val DEFAULT_CONFIG = "/etc/dshackle/dshackle.yaml"
const val LOCAL_CONFIG = "./dshackle.yaml"
@@ -32,10 +34,10 @@ open class DshackleEnvironment: StandardEnvironment() {
private val log = LoggerFactory.getLogger(DshackleEnvironment::class.java)
}
override fun customizePropertySources(propertySources: MutablePropertySources) {
super.customizePropertySources(propertySources)
propertySources.addLast(mainConfig())
propertySources.addLast(ResourcePropertySource("version.properties"))
}
open fun mainConfig(): PropertySource<*> {
@@ -48,7 +50,6 @@ open class DshackleEnvironment: StandardEnvironment() {
}
}
target = target.normalize()
log.info("Load configuration from: ${target.absolutePath}")
val loadedProperties = this.loadYaml(FileSystemResource(target))
loadedProperties["configPath"] = target.absolutePath
return PropertiesPropertySource("mainConfig", loadedProperties)

View File

@@ -16,9 +16,11 @@
package io.emeraldpay.dshackle
import org.slf4j.LoggerFactory
import org.springframework.boot.ResourceBanner
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.context.annotation.Import
import org.springframework.core.io.ClassPathResource
@SpringBootApplication(scanBasePackages = [ "io.emeraldpay.dshackle" ])
@Import(Config::class)
@@ -29,5 +31,6 @@ private val log = LoggerFactory.getLogger(Starter::class.java)
fun main(args: Array<String>) {
val app = SpringApplication(Starter::class.java)
app.setEnvironment(DshackleEnvironment())
app.setBanner(ResourceBanner(ClassPathResource("banner.txt")))
app.run(*args)
}

View 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}