mirror of
https://github.com/Eyre-S/Coeur-Morny-Cono.git
synced 2024-11-22 03:04:54 +08:00
change build toolchain to sbt
This commit is contained in:
parent
961edd93f3
commit
ac828d777d
7
.gitignore
vendored
7
.gitignore
vendored
@ -4,14 +4,15 @@
|
|||||||
.vscode/
|
.vscode/
|
||||||
.gradle/
|
.gradle/
|
||||||
.settings/
|
.settings/
|
||||||
|
.metals/
|
||||||
|
.bloop/
|
||||||
|
.bsp/
|
||||||
|
|
||||||
#build
|
#build
|
||||||
/build/
|
/build/
|
||||||
/bin/
|
/bin/
|
||||||
/out/
|
/out/
|
||||||
.metals/
|
/target
|
||||||
.bloop/
|
|
||||||
.project
|
|
||||||
lcoal.properties
|
lcoal.properties
|
||||||
|
|
||||||
# debug dir
|
# debug dir
|
||||||
|
@ -1,18 +1,19 @@
|
|||||||
FROM eclipse-temurin:20-jdk as build
|
FROM sbtscala/scala-sbt:eclipse-temurin-jammy-21.0.1_12_1.9.7_3.3.1 as build
|
||||||
LABEL authors="A.C.Sukazyo Eyre"
|
LABEL authors="A.C.Sukazyo Eyre"
|
||||||
|
|
||||||
COPY . /app/source/
|
COPY . /app/source/
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
|
ARG DOCKER_BUILD=yes
|
||||||
RUN cd ./source \
|
RUN cd ./source \
|
||||||
&& ./gradlew shadowJar -PdockerBuild \
|
&& sbt assembly \
|
||||||
&& cd .. \
|
&& cd .. \
|
||||||
&& cp ./source/build/libs/morny-coeur-docker-build.jar ./morny-coeur.jar
|
&& cp ./source/target/morny-coeur-docker-build.jar ./morny-coeur.jar
|
||||||
#&& rm -r ./source \
|
#&& rm -r ./source \
|
||||||
#&& rm -r /root/.gradle \
|
#&& rm -r /root/.gradle \
|
||||||
|
|
||||||
|
|
||||||
FROM eclipse-temurin:20-jre
|
FROM eclipse-temurin:21-jre
|
||||||
|
|
||||||
COPY --from=build /app/morny-coeur.jar /app/morny-coeur.jar
|
COPY --from=build /app/morny-coeur.jar /app/morny-coeur.jar
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
249
build.gradle
249
build.gradle
@ -1,249 +0,0 @@
|
|||||||
plugins {
|
|
||||||
id 'scala'
|
|
||||||
id 'java-library'
|
|
||||||
id 'application'
|
|
||||||
id 'maven-publish'
|
|
||||||
id "io.github.ysohda.scalatest" version "0.32.1"
|
|
||||||
id 'com.github.johnrengelman.shadow' version '8.1.1'
|
|
||||||
id 'com.github.gmazzo.buildconfig' version '4.1.2'
|
|
||||||
id 'org.ajoberstar.grgit' version '5.2.0'
|
|
||||||
}
|
|
||||||
|
|
||||||
import org.ajoberstar.grgit.Status
|
|
||||||
|
|
||||||
import java.nio.charset.Charset
|
|
||||||
import java.nio.charset.StandardCharsets
|
|
||||||
|
|
||||||
final boolean proj_git = grgit != null
|
|
||||||
final String proj_store = MORNY_CODE_STORE
|
|
||||||
final String proj_commit = proj_git ? grgit.head().id : null
|
|
||||||
final String proj_commit_path = MORNY_COMMIT_PATH
|
|
||||||
final boolean proj_clean = isCleanBuild()
|
|
||||||
if (!proj_git)
|
|
||||||
println "[MornyBuild] git repository not available for current working space! git version tag will be disabled."
|
|
||||||
else if (isCleanBuild()) {
|
|
||||||
println "git: clean build at ${grgit.head().id}"
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
final Status status = grgit.status()
|
|
||||||
println "git: non-clean-build"
|
|
||||||
if (!status.unstaged.allChanges.empty) {
|
|
||||||
println "git: unstaged changes"
|
|
||||||
listChanges(status.unstaged)
|
|
||||||
}
|
|
||||||
if (!status.staged.allChanges.empty) {
|
|
||||||
println "git: staged changes"
|
|
||||||
listChanges(status.staged)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
final String proj_group = 'cc.sukazyo'
|
|
||||||
final String proj_package = "${proj_group}.cono.morny"
|
|
||||||
final String proj_archive_name = MORNY_ARCHIVE_NAME
|
|
||||||
final String proj_application_main = "${proj_package}.ServerMain"
|
|
||||||
|
|
||||||
final String proj_version_base = VERSION
|
|
||||||
final String proj_version_delta = VERSION_DELTA
|
|
||||||
final boolean proj_version_use_delta = Boolean.parseBoolean(USE_DELTA)
|
|
||||||
final String proj_version = proj_version_base + (proj_version_use_delta ? "-δ${proj_version_delta}" : "")
|
|
||||||
final String proj_version_full = proj_version + (proj_git ?
|
|
||||||
"+git.${proj_commit.substring(0, 8)}" + (proj_clean ? "" : ".δ") : "")
|
|
||||||
final String proj_version_codename = CODENAME
|
|
||||||
final long proj_code_time = proj_clean ? grgit.head().dateTime.toInstant().toEpochMilli() : System.currentTimeMillis()
|
|
||||||
|
|
||||||
final JavaVersion proj_java = JavaVersion.VERSION_17
|
|
||||||
final Charset proj_file_encoding = StandardCharsets.UTF_8
|
|
||||||
final proj_scala_api = 3
|
|
||||||
//final proj_scala_lib = proj_scala_api+'.4.0-RC1-bin-20230901-89e8dba-NIGHTLY'
|
|
||||||
final proj_scala_lib = proj_scala_api + '.3.1'
|
|
||||||
String publish_local_url = null
|
|
||||||
String publish_remote_url = null
|
|
||||||
String publish_remote_username = null
|
|
||||||
String publish_remote_password = null
|
|
||||||
if (project.hasProperty("publishLocalArchiveRepoUrl")) publish_local_url = publishLocalArchiveRepoUrl
|
|
||||||
if (project.hasProperty("publishMvnRepoUrl")) {
|
|
||||||
publish_remote_url = publishMvnRepoUrl
|
|
||||||
publish_remote_username = publishMvnRepoUsername
|
|
||||||
publish_remote_password = publishMvnRepoPassword
|
|
||||||
}
|
|
||||||
|
|
||||||
group proj_group
|
|
||||||
version proj_version_full
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
mavenCentral()
|
|
||||||
maven { name '-ws'; url 'https://mvn.sukazyo.cc/releases' }
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
|
|
||||||
api group: 'org.scala-lang', name: 'scala3-library_3', version: proj_scala_lib
|
|
||||||
final scala = (String name) -> "${name}_$proj_scala_api"
|
|
||||||
compileOnlyApi group: 'com.github.spotbugs', name: 'spotbugs-annotations', version: lib_spotbugs_v
|
|
||||||
|
|
||||||
implementation group: 'cc.sukazyo', name: 'messiva', version: lib_messiva_v
|
|
||||||
implementation group: 'cc.sukazyo', name: 'resource-tools', version: lib_resourcetools_v
|
|
||||||
|
|
||||||
implementation group: 'com.github.pengrad', name: 'java-telegram-bot-api', version: lib_javatelegramapi_v
|
|
||||||
implementation group: 'com.softwaremill.sttp.client3', name: scala('core'), version: lib_sttp_v
|
|
||||||
implementation group: 'com.softwaremill.sttp.client3', name: scala('okhttp-backend'), version: lib_sttp_v
|
|
||||||
runtimeOnly group: 'com.squareup.okhttp3', name: 'okhttp', version: lib_okhttp_v
|
|
||||||
implementation group: 'com.google.code.gson', name: 'gson', version: lib_gson_v
|
|
||||||
implementation group: 'io.circe', name: scala('circe-core'), version: lib_circe_v
|
|
||||||
implementation group: 'io.circe', name: scala('circe-generic'), version: lib_circe_v
|
|
||||||
implementation group: 'io.circe', name: scala('circe-parser'), version: lib_circe_v
|
|
||||||
implementation group: 'org.jsoup', name: 'jsoup', version: '1.16.2'
|
|
||||||
implementation group: 'com.cronutils', name: 'cron-utils', version: lib_cron_utils_v
|
|
||||||
|
|
||||||
// used for disable slf4j
|
|
||||||
// due to the slf4j api have been used in the following libraries:
|
|
||||||
// - cron-utils
|
|
||||||
runtimeOnly group: 'org.slf4j', name: 'slf4j-nop', version: lib_slf4j_v
|
|
||||||
testRuntimeOnly group: 'org.slf4j', name: 'slf4j-nop', version: lib_slf4j_v
|
|
||||||
|
|
||||||
testImplementation group: 'cc.sukazyo', name: 'resource-tools', version: lib_resourcetools_v
|
|
||||||
testImplementation group: 'org.scalatest', name: scala('scalatest'), version: lib_scalatest_v
|
|
||||||
testImplementation group: 'org.scalatest', name: scala('scalatest-freespec'), version: lib_scalatest_v
|
|
||||||
testRuntimeOnly group: 'org.scala-lang.modules', name: scala('scala-xml'), version: lib_scalamodule_xml_v
|
|
||||||
// for generating HTML report: required by gradle-scalatest plugin
|
|
||||||
testRuntimeOnly group: 'com.vladsch.flexmark', name: 'flexmark-all', version: '0.64.6'
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
java {
|
|
||||||
withSourcesJar()
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceSets {
|
|
||||||
|
|
||||||
main {
|
|
||||||
java { destinationDirectory.set file("build/classes/main") }
|
|
||||||
scala { destinationDirectory.set file("build/classes/main") }
|
|
||||||
}
|
|
||||||
|
|
||||||
test {
|
|
||||||
java { destinationDirectory.set file("build/classes/test") }
|
|
||||||
scala { destinationDirectory.set file("build/classes/test") }
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.withType(JavaCompile).configureEach {
|
|
||||||
|
|
||||||
sourceCompatibility proj_java.getMajorVersion()
|
|
||||||
targetCompatibility proj_java.getMajorVersion()
|
|
||||||
|
|
||||||
options.encoding = proj_file_encoding.name()
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.withType(ScalaCompile).configureEach {
|
|
||||||
|
|
||||||
sourceCompatibility proj_java.getMajorVersion()
|
|
||||||
targetCompatibility proj_java.getMajorVersion()
|
|
||||||
|
|
||||||
scalaCompileOptions.additionalParameters.add "-language:postfixOps"
|
|
||||||
scalaCompileOptions.additionalParameters.addAll ("-Xmax-inlines", "256")
|
|
||||||
|
|
||||||
scalaCompileOptions.encoding = proj_file_encoding.name()
|
|
||||||
options.encoding = proj_file_encoding.name()
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.withType(Javadoc).configureEach {
|
|
||||||
options.encoding = proj_file_encoding.name()
|
|
||||||
}
|
|
||||||
|
|
||||||
//tasks.withType(ScalaDoc).configureEach {
|
|
||||||
//}
|
|
||||||
|
|
||||||
test {
|
|
||||||
}
|
|
||||||
|
|
||||||
application {
|
|
||||||
mainClass = proj_application_main
|
|
||||||
}
|
|
||||||
|
|
||||||
buildConfig {
|
|
||||||
|
|
||||||
packageName(proj_package)
|
|
||||||
|
|
||||||
buildConfigField('String', 'VERSION', "\"${proj_version}\"")
|
|
||||||
buildConfigField('String', 'VERSION_FULL', "\"${proj_version_full}\"")
|
|
||||||
buildConfigField('String', 'VERSION_BASE', "\"${proj_version_base}\"")
|
|
||||||
buildConfigField('String', 'VERSION_DELTA', proj_version_use_delta ? "\"${proj_version_delta}\"" : "null")
|
|
||||||
buildConfigField('String', 'CODENAME', "\"${proj_version_codename}\"")
|
|
||||||
buildConfigField('long', 'CODE_TIMESTAMP', "${proj_code_time}L")
|
|
||||||
buildConfigField('String', 'COMMIT', proj_git ? "\"${proj_commit}\"" : "null")
|
|
||||||
buildConfigField('boolean', 'CLEAN_BUILD', "${proj_clean}")
|
|
||||||
buildConfigField('String', 'CODE_STORE', proj_store == "" ? "null" : "\"${proj_store}\"")
|
|
||||||
buildConfigField('String', 'COMMIT_PATH', proj_commit_path == "" ? "null" : "\"${proj_commit_path}\"")
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.withType(Jar).configureEach {
|
|
||||||
archiveBaseName.set proj_archive_name
|
|
||||||
}
|
|
||||||
|
|
||||||
shadowJar {
|
|
||||||
|
|
||||||
archiveClassifier.set "fat"
|
|
||||||
|
|
||||||
if (project.hasProperty("dockerBuild")) {
|
|
||||||
println "shadow-jar: using docker build name"
|
|
||||||
archiveVersion.set ""
|
|
||||||
archiveClassifier.set "docker-build"
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings('GrMethodMayBeStatic')
|
|
||||||
boolean isCleanBuild () {
|
|
||||||
if (grgit == null) return false
|
|
||||||
Set<String> changes = grgit.status().unstaged.allChanges + grgit.status().staged.allChanges
|
|
||||||
for (String file in changes) {
|
|
||||||
if (file.startsWith("src/")) return false
|
|
||||||
if (file == "build.gradle") return false
|
|
||||||
if (file == "gradle.properties") return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
void listChanges (Status.Changes listing) {
|
|
||||||
for (String file in listing.added)
|
|
||||||
println " add: ${file}"
|
|
||||||
for (String file in listing.modified)
|
|
||||||
println " mod: ${file}"
|
|
||||||
for (String file in listing.removed)
|
|
||||||
println " del: ${file}"
|
|
||||||
}
|
|
||||||
|
|
||||||
publishing {
|
|
||||||
repositories {
|
|
||||||
if (publish_local_url != null) maven {
|
|
||||||
name 'archives'
|
|
||||||
url publish_local_url
|
|
||||||
}
|
|
||||||
if (publish_remote_url != null) maven {
|
|
||||||
name '-ws-'
|
|
||||||
url publish_remote_url
|
|
||||||
credentials {
|
|
||||||
username publish_remote_username
|
|
||||||
password publish_remote_password
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
publications {
|
|
||||||
//noinspection GroovyAssignabilityCheck
|
|
||||||
main(MavenPublication) {
|
|
||||||
//noinspection GroovyAssignabilityCheck
|
|
||||||
from components.java
|
|
||||||
//noinspection GroovyAssignabilityCheck
|
|
||||||
groupId = proj_group
|
|
||||||
//noinspection GroovyAssignabilityCheck
|
|
||||||
artifactId = proj_archive_name
|
|
||||||
//noinspection GroovyAssignabilityCheck
|
|
||||||
version = proj_version
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
78
build.sbt
Normal file
78
build.sbt
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
ThisBuild / organization := "cc.sukazyo"
|
||||||
|
ThisBuild / organizationName := "A.C. Sukazyo Eyre"
|
||||||
|
|
||||||
|
ThisBuild / scalaVersion := "3.3.1"
|
||||||
|
|
||||||
|
resolvers ++= Seq(
|
||||||
|
"-ws-releases" at "https://mvn.sukazyo.cc/releases"
|
||||||
|
)
|
||||||
|
|
||||||
|
lazy val root = (project in file("."))
|
||||||
|
.enablePlugins(BuildInfoPlugin)
|
||||||
|
.settings(
|
||||||
|
|
||||||
|
name := "Coeur Morny Cono",
|
||||||
|
version := MornyProject.version,
|
||||||
|
|
||||||
|
crossPaths := false,
|
||||||
|
moduleName := MornyProject.app_archive_name,
|
||||||
|
Compile / packageDoc / publishArtifact := false,
|
||||||
|
artifactName := {(sv: ScalaVersion, module: ModuleID, artifact: Artifact) =>
|
||||||
|
val classifier = artifact.classifier match {
|
||||||
|
case Some(value) => s"-$value"
|
||||||
|
case None => ""
|
||||||
|
}
|
||||||
|
s"${module.name}-${MornyProject.version_full}$classifier.${artifact.extension}"
|
||||||
|
},
|
||||||
|
|
||||||
|
Compile / mainClass := Some(MornyProject.app_application_main),
|
||||||
|
|
||||||
|
libraryDependencies ++= MornyProject.dependencies,
|
||||||
|
|
||||||
|
buildInfoPackage := MornyProject.app_package,
|
||||||
|
buildInfoObject := "BuildConfig",
|
||||||
|
buildInfoKeys ++= Seq(
|
||||||
|
BuildInfoKey[String]("VERSION", MornyProject.version),
|
||||||
|
BuildInfoKey[String]("VERSION_FULL", MornyProject.version_full),
|
||||||
|
BuildInfoKey[String]("VERSION_BASE", MornyProject.version_base),
|
||||||
|
BuildInfoKey[Option[String]]("VERSION_DELTA", MornyProject.version_delta),
|
||||||
|
BuildInfoKey[String]("CODENAME", MornyProject.version_codename),
|
||||||
|
BuildInfoKey.action[Long]("CODE_TIMESTAMP") { MornyProject.code_time },
|
||||||
|
BuildInfoKey.action[String]("COMMIT") { MornyProject.git_commit },
|
||||||
|
BuildInfoKey.action[Boolean]("CLEAN_BUILD") { MornyProject.git_is_clean },
|
||||||
|
BuildInfoKey[String]("CODE_STORE", MornyProject.git_store),
|
||||||
|
BuildInfoKey[String]("COMMIT_PATH", MornyProject.git_store_path),
|
||||||
|
),
|
||||||
|
|
||||||
|
scalacOptions ++= Seq(
|
||||||
|
"-language:postfixOps",
|
||||||
|
"-encoding", MornyProject.source_encoding
|
||||||
|
),
|
||||||
|
javacOptions ++= Seq(
|
||||||
|
"-encoding", MornyProject.source_encoding,
|
||||||
|
"-source", "17",
|
||||||
|
"-target", "17"
|
||||||
|
),
|
||||||
|
|
||||||
|
assemblyMergeStrategy := {
|
||||||
|
case module if module endsWith "module-info.class" => MergeStrategy.concat
|
||||||
|
case module_kt if module_kt endsWith ".kotlin_module" => MergeStrategy.concat
|
||||||
|
case x =>
|
||||||
|
val oldStrategy = (ThisBuild / assemblyMergeStrategy).value
|
||||||
|
oldStrategy(x)
|
||||||
|
},
|
||||||
|
assembly / artifact := (assembly / artifact).value
|
||||||
|
.withClassifier(Some("fat")),
|
||||||
|
addArtifact(assembly / artifact, assembly),
|
||||||
|
if (System.getenv("DOCKER_BUILD") != null) {
|
||||||
|
assembly / assemblyJarName := {
|
||||||
|
sLog.value info "environment DOCKER_BUILD checked"
|
||||||
|
sLog.value info "assembly will output for docker build (morny-coeur-docker-build.jar)"
|
||||||
|
"morny-coeur-docker-build.jar"
|
||||||
|
}
|
||||||
|
} else Nil,
|
||||||
|
|
||||||
|
publishTo := MornyProject.publishTo,
|
||||||
|
credentials ++= MornyProject.publishCredentials,
|
||||||
|
|
||||||
|
)
|
@ -1,32 +0,0 @@
|
|||||||
## Core
|
|
||||||
|
|
||||||
MORNY_ARCHIVE_NAME = morny-coeur
|
|
||||||
|
|
||||||
MORNY_CODE_STORE = https://github.com/Eyre-S/Coeur-Morny-Cono
|
|
||||||
MORNY_COMMIT_PATH = https://github.com/Eyre-S/Coeur-Morny-Cono/commit/%s
|
|
||||||
|
|
||||||
VERSION = 1.3.0
|
|
||||||
|
|
||||||
USE_DELTA = false
|
|
||||||
VERSION_DELTA =
|
|
||||||
|
|
||||||
CODENAME = guanggu
|
|
||||||
|
|
||||||
# dependencies
|
|
||||||
|
|
||||||
lib_spotbugs_v = 4.7.3
|
|
||||||
lib_scalamodule_xml_v = 2.2.0
|
|
||||||
|
|
||||||
lib_messiva_v = 0.2.0
|
|
||||||
lib_resourcetools_v = 0.2.2
|
|
||||||
lib_slf4j_v = 2.0.9
|
|
||||||
|
|
||||||
lib_javatelegramapi_v = 6.2.0
|
|
||||||
|
|
||||||
lib_sttp_v = 3.9.0
|
|
||||||
lib_okhttp_v = 4.11.0
|
|
||||||
lib_gson_v = 2.10.1
|
|
||||||
lib_circe_v = 0.14.6
|
|
||||||
lib_cron_utils_v = 9.2.0
|
|
||||||
|
|
||||||
lib_scalatest_v = 3.2.17
|
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
5
gradle/wrapper/gradle-wrapper.properties
vendored
5
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,5 +0,0 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
|
||||||
distributionPath=wrapper/dists
|
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
|
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
|
||||||
zipStorePath=wrapper/dists
|
|
185
gradlew
vendored
185
gradlew
vendored
@ -1,185 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
#
|
|
||||||
# Copyright 2015 the original author or authors.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# https://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
|
|
||||||
##############################################################################
|
|
||||||
##
|
|
||||||
## Gradle start up script for UN*X
|
|
||||||
##
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
# Attempt to set APP_HOME
|
|
||||||
# Resolve links: $0 may be a link
|
|
||||||
PRG="$0"
|
|
||||||
# Need this for relative symlinks.
|
|
||||||
while [ -h "$PRG" ] ; do
|
|
||||||
ls=`ls -ld "$PRG"`
|
|
||||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
|
||||||
if expr "$link" : '/.*' > /dev/null; then
|
|
||||||
PRG="$link"
|
|
||||||
else
|
|
||||||
PRG=`dirname "$PRG"`"/$link"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
SAVED="`pwd`"
|
|
||||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
|
||||||
APP_HOME="`pwd -P`"
|
|
||||||
cd "$SAVED" >/dev/null
|
|
||||||
|
|
||||||
APP_NAME="Gradle"
|
|
||||||
APP_BASE_NAME=`basename "$0"`
|
|
||||||
|
|
||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
|
||||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
|
||||||
|
|
||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
|
||||||
MAX_FD="maximum"
|
|
||||||
|
|
||||||
warn () {
|
|
||||||
echo "$*"
|
|
||||||
}
|
|
||||||
|
|
||||||
die () {
|
|
||||||
echo
|
|
||||||
echo "$*"
|
|
||||||
echo
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# OS specific support (must be 'true' or 'false').
|
|
||||||
cygwin=false
|
|
||||||
msys=false
|
|
||||||
darwin=false
|
|
||||||
nonstop=false
|
|
||||||
case "`uname`" in
|
|
||||||
CYGWIN* )
|
|
||||||
cygwin=true
|
|
||||||
;;
|
|
||||||
Darwin* )
|
|
||||||
darwin=true
|
|
||||||
;;
|
|
||||||
MSYS* | MINGW* )
|
|
||||||
msys=true
|
|
||||||
;;
|
|
||||||
NONSTOP* )
|
|
||||||
nonstop=true
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
|
||||||
|
|
||||||
|
|
||||||
# Determine the Java command to use to start the JVM.
|
|
||||||
if [ -n "$JAVA_HOME" ] ; then
|
|
||||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
|
||||||
# IBM's JDK on AIX uses strange locations for the executables
|
|
||||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
|
||||||
else
|
|
||||||
JAVACMD="$JAVA_HOME/bin/java"
|
|
||||||
fi
|
|
||||||
if [ ! -x "$JAVACMD" ] ; then
|
|
||||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
|
||||||
|
|
||||||
Please set the JAVA_HOME variable in your environment to match the
|
|
||||||
location of your Java installation."
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
JAVACMD="java"
|
|
||||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
|
||||||
|
|
||||||
Please set the JAVA_HOME variable in your environment to match the
|
|
||||||
location of your Java installation."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Increase the maximum file descriptors if we can.
|
|
||||||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
|
||||||
MAX_FD_LIMIT=`ulimit -H -n`
|
|
||||||
if [ $? -eq 0 ] ; then
|
|
||||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
|
||||||
MAX_FD="$MAX_FD_LIMIT"
|
|
||||||
fi
|
|
||||||
ulimit -n $MAX_FD
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# For Darwin, add options to specify how the application appears in the dock
|
|
||||||
if $darwin; then
|
|
||||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
|
||||||
fi
|
|
||||||
|
|
||||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
|
||||||
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
|
||||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
|
||||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
|
||||||
|
|
||||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
|
||||||
|
|
||||||
# We build the pattern for arguments to be converted via cygpath
|
|
||||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
|
||||||
SEP=""
|
|
||||||
for dir in $ROOTDIRSRAW ; do
|
|
||||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
|
||||||
SEP="|"
|
|
||||||
done
|
|
||||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
|
||||||
# Add a user-defined pattern to the cygpath arguments
|
|
||||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
|
||||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
|
||||||
fi
|
|
||||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
|
||||||
i=0
|
|
||||||
for arg in "$@" ; do
|
|
||||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
|
||||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
|
||||||
|
|
||||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
|
||||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
|
||||||
else
|
|
||||||
eval `echo args$i`="\"$arg\""
|
|
||||||
fi
|
|
||||||
i=`expr $i + 1`
|
|
||||||
done
|
|
||||||
case $i in
|
|
||||||
0) set -- ;;
|
|
||||||
1) set -- "$args0" ;;
|
|
||||||
2) set -- "$args0" "$args1" ;;
|
|
||||||
3) set -- "$args0" "$args1" "$args2" ;;
|
|
||||||
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
|
||||||
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
|
||||||
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
|
||||||
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
|
||||||
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
|
||||||
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Escape application args
|
|
||||||
save () {
|
|
||||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
|
||||||
echo " "
|
|
||||||
}
|
|
||||||
APP_ARGS=`save "$@"`
|
|
||||||
|
|
||||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
|
||||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
|
||||||
|
|
||||||
exec "$JAVACMD" "$@"
|
|
89
gradlew.bat
vendored
89
gradlew.bat
vendored
@ -1,89 +0,0 @@
|
|||||||
@rem
|
|
||||||
@rem Copyright 2015 the original author or authors.
|
|
||||||
@rem
|
|
||||||
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
@rem you may not use this file except in compliance with the License.
|
|
||||||
@rem You may obtain a copy of the License at
|
|
||||||
@rem
|
|
||||||
@rem https://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
@rem
|
|
||||||
@rem Unless required by applicable law or agreed to in writing, software
|
|
||||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
@rem See the License for the specific language governing permissions and
|
|
||||||
@rem limitations under the License.
|
|
||||||
@rem
|
|
||||||
|
|
||||||
@if "%DEBUG%" == "" @echo off
|
|
||||||
@rem ##########################################################################
|
|
||||||
@rem
|
|
||||||
@rem Gradle startup script for Windows
|
|
||||||
@rem
|
|
||||||
@rem ##########################################################################
|
|
||||||
|
|
||||||
@rem Set local scope for the variables with windows NT shell
|
|
||||||
if "%OS%"=="Windows_NT" setlocal
|
|
||||||
|
|
||||||
set DIRNAME=%~dp0
|
|
||||||
if "%DIRNAME%" == "" set DIRNAME=.
|
|
||||||
set APP_BASE_NAME=%~n0
|
|
||||||
set APP_HOME=%DIRNAME%
|
|
||||||
|
|
||||||
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
|
||||||
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
|
||||||
|
|
||||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
|
||||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
|
||||||
|
|
||||||
@rem Find java.exe
|
|
||||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
|
||||||
|
|
||||||
set JAVA_EXE=java.exe
|
|
||||||
%JAVA_EXE% -version >NUL 2>&1
|
|
||||||
if "%ERRORLEVEL%" == "0" goto execute
|
|
||||||
|
|
||||||
echo.
|
|
||||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
|
||||||
echo.
|
|
||||||
echo Please set the JAVA_HOME variable in your environment to match the
|
|
||||||
echo location of your Java installation.
|
|
||||||
|
|
||||||
goto fail
|
|
||||||
|
|
||||||
:findJavaFromJavaHome
|
|
||||||
set JAVA_HOME=%JAVA_HOME:"=%
|
|
||||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
|
||||||
|
|
||||||
if exist "%JAVA_EXE%" goto execute
|
|
||||||
|
|
||||||
echo.
|
|
||||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
|
||||||
echo.
|
|
||||||
echo Please set the JAVA_HOME variable in your environment to match the
|
|
||||||
echo location of your Java installation.
|
|
||||||
|
|
||||||
goto fail
|
|
||||||
|
|
||||||
:execute
|
|
||||||
@rem Setup the command line
|
|
||||||
|
|
||||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
|
||||||
|
|
||||||
|
|
||||||
@rem Execute Gradle
|
|
||||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
|
||||||
|
|
||||||
:end
|
|
||||||
@rem End local scope for the variables with windows NT shell
|
|
||||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
|
||||||
|
|
||||||
:fail
|
|
||||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
|
||||||
rem the _cmd.exe /c_ return code!
|
|
||||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
|
||||||
exit /b 1
|
|
||||||
|
|
||||||
:mainEnd
|
|
||||||
if "%OS%"=="Windows_NT" endlocal
|
|
||||||
|
|
||||||
:omega
|
|
3
project/.gitignore
vendored
Normal file
3
project/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
/target
|
||||||
|
/project
|
||||||
|
metals.sbt
|
62
project/MornyConfiguration.scala
Normal file
62
project/MornyConfiguration.scala
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
import sbt.*
|
||||||
|
|
||||||
|
//noinspection TypeAnnotation
|
||||||
|
object MornyConfiguration {
|
||||||
|
|
||||||
|
val MORNY_ARCHIVE_NAME = "morny-coeur"
|
||||||
|
|
||||||
|
val MORNY_CODE_STORE = "https://github.com/Eyre-S/Coeur-Morny-Cono"
|
||||||
|
val MORNY_COMMIT_PATH = "https://github.com/Eyre-S/Coeur-Morny-Cono/commit/%s"
|
||||||
|
|
||||||
|
val VERSION = "2.0.0-alpha1"
|
||||||
|
val VERSION_DELTA: Option[String] = None
|
||||||
|
val CODENAME = "guanggu"
|
||||||
|
|
||||||
|
val SNAPSHOT = true
|
||||||
|
|
||||||
|
val dependencies = Seq(
|
||||||
|
|
||||||
|
"com.github.spotbugs" % "spotbugs-annotations" % "4.7.3" % Compile,
|
||||||
|
|
||||||
|
"cc.sukazyo" % "messiva" % "0.2.0",
|
||||||
|
"cc.sukazyo" % "resource-tools" % "0.2.2",
|
||||||
|
|
||||||
|
"com.github.pengrad" % "java-telegram-bot-api" % "6.2.0",
|
||||||
|
|
||||||
|
"com.softwaremill.sttp.client3" %% "core" % "3.9.0",
|
||||||
|
"com.softwaremill.sttp.client3" %% "okhttp-backend" % "3.9.0",
|
||||||
|
"com.squareup.okhttp3" % "okhttp" % "4.11.0" % Runtime,
|
||||||
|
|
||||||
|
"com.google.code.gson" % "gson" % "2.10.1",
|
||||||
|
"io.circe" %% "circe-core" % "0.14.6",
|
||||||
|
"io.circe" %% "circe-generic" % "0.14.6",
|
||||||
|
"io.circe" %% "circe-parser" % "0.14.6",
|
||||||
|
"org.jsoup" % "jsoup" % "1.16.2",
|
||||||
|
|
||||||
|
"com.cronutils" % "cron-utils" % "9.2.0",
|
||||||
|
|
||||||
|
// used for disable slf4j
|
||||||
|
// due to the slf4j api have been used in the following libraries:
|
||||||
|
// - cron-utils
|
||||||
|
"org.slf4j" % "slf4j-nop" % "2.0.9" % Runtime,
|
||||||
|
|
||||||
|
"org.scalatest" %% "scalatest" % "3.2.17" % Test,
|
||||||
|
"org.scalatest" %% "scalatest-freespec" % "3.2.17" % Test,
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
val publishTo: Some[Resolver] = {
|
||||||
|
//noinspection SimplifyBooleanMatch
|
||||||
|
SNAPSHOT match {
|
||||||
|
case true => Some("-ws-snapshots" at "https://mvn.sukazyo.cc/snapshots")
|
||||||
|
case false => Some("-ws-releases" at "https://mvn.sukazyo.cc/releases")
|
||||||
|
}
|
||||||
|
// Some(Resolver.file("build", file("./target/artifacts")))
|
||||||
|
// None
|
||||||
|
}
|
||||||
|
val publishCredentials: Seq[Credentials] = {
|
||||||
|
Seq(Credentials(Path.userHome / ".sbt" / ("workshop-mvn"+".credentials")))
|
||||||
|
// Nil
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
53
project/MornyProject.scala
Normal file
53
project/MornyProject.scala
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
import org.eclipse.jgit.api.Git
|
||||||
|
import org.eclipse.jgit.revwalk.RevWalk
|
||||||
|
import org.eclipse.jgit.storage.file.FileRepositoryBuilder
|
||||||
|
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
//noinspection TypeAnnotation
|
||||||
|
object MornyProject {
|
||||||
|
|
||||||
|
val _git_repo = new FileRepositoryBuilder()
|
||||||
|
.setGitDir(new File(".git"))
|
||||||
|
.setWorkTree(new File(""))
|
||||||
|
.readEnvironment()
|
||||||
|
.build()
|
||||||
|
val _git = new Git(_git_repo)
|
||||||
|
def _git_head = _git_repo.resolve("HEAD")
|
||||||
|
def _git_head_commit = new RevWalk(_git_repo).parseCommit(_git_head)
|
||||||
|
val git_exists = true
|
||||||
|
val git_store = MornyConfiguration.MORNY_CODE_STORE
|
||||||
|
def git_commit = _git_head_commit.getName
|
||||||
|
def git_commit_time = _git_head_commit.getCommitTime*1000L
|
||||||
|
val git_store_path = MornyConfiguration.MORNY_COMMIT_PATH
|
||||||
|
// todo: is clean for project should only take care of app src and build src
|
||||||
|
def git_is_clean = _git.status.call.isClean
|
||||||
|
|
||||||
|
// todo: git status log
|
||||||
|
|
||||||
|
val app_group = "cc.sukazyo"
|
||||||
|
val app_package = s"$app_group.cono.morny"
|
||||||
|
val app_archive_name = MornyConfiguration.MORNY_ARCHIVE_NAME
|
||||||
|
val app_application_main = s"$app_package.ServerMain"
|
||||||
|
|
||||||
|
val version_base = MornyConfiguration.VERSION
|
||||||
|
val version_delta = MornyConfiguration.VERSION_DELTA
|
||||||
|
val version_is_snapshot = MornyConfiguration.SNAPSHOT
|
||||||
|
val version = Seq(
|
||||||
|
version_base,
|
||||||
|
version_delta match { case Some(value) => "δ" + value case None => null},
|
||||||
|
if (version_is_snapshot) "SNAPSHOT" else null
|
||||||
|
).filterNot(f => f == null).mkString("-")
|
||||||
|
def version_full = version + (if (!git_exists) "" else
|
||||||
|
s"+git${git_commit take 8}${if (git_is_clean) "" else ".δ"}")
|
||||||
|
val version_codename = MornyConfiguration.CODENAME
|
||||||
|
def code_time = if (git_is_clean) git_commit_time else System.currentTimeMillis
|
||||||
|
|
||||||
|
val dependencies = MornyConfiguration.dependencies
|
||||||
|
|
||||||
|
def publishTo = MornyConfiguration.publishTo
|
||||||
|
val publishCredentials = MornyConfiguration.publishCredentials
|
||||||
|
|
||||||
|
val source_encoding = "utf-8"
|
||||||
|
|
||||||
|
}
|
1
project/build.properties
Normal file
1
project/build.properties
Normal file
@ -0,0 +1 @@
|
|||||||
|
sbt.version=1.9.4
|
3
project/plugins.sbt
Normal file
3
project/plugins.sbt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0")
|
||||||
|
addSbtPlugin("com.github.sbt" % "sbt-git" % "2.0.1")
|
||||||
|
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.1.5")
|
@ -1,2 +0,0 @@
|
|||||||
rootProject.name = "Coeur Morny Cono"
|
|
||||||
|
|
@ -2,6 +2,7 @@ package cc.sukazyo.cono.morny
|
|||||||
|
|
||||||
import cc.sukazyo.cono.morny.internal.BuildConfigField
|
import cc.sukazyo.cono.morny.internal.BuildConfigField
|
||||||
import cc.sukazyo.cono.morny.Log.{exceptionLog, logger}
|
import cc.sukazyo.cono.morny.Log.{exceptionLog, logger}
|
||||||
|
import cc.sukazyo.cono.morny.util.EpochDateTime.EpochMillis
|
||||||
import cc.sukazyo.cono.morny.util.FileUtils
|
import cc.sukazyo.cono.morny.util.FileUtils
|
||||||
|
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
@ -13,24 +14,20 @@ object MornySystem {
|
|||||||
@BuildConfigField val VERSION: String = BuildConfig.VERSION
|
@BuildConfigField val VERSION: String = BuildConfig.VERSION
|
||||||
@BuildConfigField val VERSION_FULL: String = BuildConfig.VERSION_FULL
|
@BuildConfigField val VERSION_FULL: String = BuildConfig.VERSION_FULL
|
||||||
@BuildConfigField val VERSION_BASE: String = BuildConfig.VERSION_BASE
|
@BuildConfigField val VERSION_BASE: String = BuildConfig.VERSION_BASE
|
||||||
@BuildConfigField val VERSION_DELTA: String = BuildConfig.VERSION_DELTA
|
@BuildConfigField val VERSION_DELTA: Option[String] = BuildConfig.VERSION_DELTA
|
||||||
|
@BuildConfigField val GIT_COMMIT: Option[String] = Some(BuildConfig.COMMIT)
|
||||||
|
@BuildConfigField val CODE_TIMESTAMP: EpochMillis = BuildConfig.CODE_TIMESTAMP
|
||||||
@BuildConfigField val CODENAME: String = BuildConfig.CODENAME
|
@BuildConfigField val CODENAME: String = BuildConfig.CODENAME
|
||||||
@BuildConfigField val CODE_STORE: String = BuildConfig.CODE_STORE
|
@BuildConfigField val CODE_STORE: String = BuildConfig.CODE_STORE
|
||||||
//noinspection ScalaWeakerAccess
|
//noinspection ScalaWeakerAccess
|
||||||
@BuildConfigField val COMMIT_PATH: String = BuildConfig.COMMIT_PATH
|
@BuildConfigField val COMMIT_PATH: String = BuildConfig.COMMIT_PATH
|
||||||
|
|
||||||
@BuildConfigField
|
|
||||||
def isUseDelta: Boolean = VERSION_DELTA ne null
|
|
||||||
|
|
||||||
@BuildConfigField
|
|
||||||
def isGitBuild: Boolean = BuildConfig.COMMIT ne null
|
|
||||||
|
|
||||||
@BuildConfigField
|
@BuildConfigField
|
||||||
def isCleanBuild: Boolean = BuildConfig.CLEAN_BUILD
|
def isCleanBuild: Boolean = BuildConfig.CLEAN_BUILD
|
||||||
|
|
||||||
def currentCodePath: String|Null =
|
def currentCodePath: String|Null =
|
||||||
if ((COMMIT_PATH eq null) || (!isGitBuild)) null
|
if ((COMMIT_PATH eq null) || (GIT_COMMIT isEmpty)) null
|
||||||
else COMMIT_PATH.formatted(BuildConfig.COMMIT)
|
else COMMIT_PATH.formatted(GIT_COMMIT get)
|
||||||
|
|
||||||
def getJarMD5: String = {
|
def getJarMD5: String = {
|
||||||
try {
|
try {
|
||||||
|
@ -94,7 +94,7 @@ object ServerMain {
|
|||||||
///
|
///
|
||||||
|
|
||||||
if (showHello) logger info MornyAbout.MORNY_PREVIEW_IMAGE_ASCII
|
if (showHello) logger info MornyAbout.MORNY_PREVIEW_IMAGE_ASCII
|
||||||
if (mode_echoHello) return;
|
if (mode_echoHello) return
|
||||||
|
|
||||||
if (unknownArgs.nonEmpty) logger warn
|
if (unknownArgs.nonEmpty) logger warn
|
||||||
s"""Can't understand arg to some meaning
|
s"""Can't understand arg to some meaning
|
||||||
@ -117,18 +117,18 @@ object ServerMain {
|
|||||||
s"""Morny Cono Version
|
s"""Morny Cono Version
|
||||||
|- version :
|
|- version :
|
||||||
| Morny ${MornySystem.CODENAME toUpperCase}
|
| Morny ${MornySystem.CODENAME toUpperCase}
|
||||||
| ${MornySystem.VERSION_BASE}${if (MornySystem.isUseDelta) "-δ"+MornySystem.VERSION_DELTA else ""}
|
| ${MornySystem.VERSION_BASE}${MornySystem.VERSION_DELTA match{case Some(d) => "-δ" + d case None => ""}}
|
||||||
|- md5hash :
|
|- md5hash :
|
||||||
| ${MornySystem.getJarMD5}
|
| ${MornySystem.getJarMD5}
|
||||||
|- gitstat :
|
|- gitstat :
|
||||||
|${ if (MornySystem.isGitBuild) {
|
|${ MornySystem.GIT_COMMIT match { case Some(commit) =>
|
||||||
s""" on commit ${if (MornySystem.isCleanBuild) "- clean-build" else "<δ/non-clean-build>"}
|
s""" on commit ${if (MornySystem.isCleanBuild) "- clean-build" else "<δ/non-clean-build>"}
|
||||||
| ${BuildConfig.COMMIT}"""
|
| $commit"""
|
||||||
.stripMargin
|
.stripMargin
|
||||||
} else " <non-git-build>"}
|
case None => " <non-git-build>" }}
|
||||||
|- buildtd :
|
|- buildtd :
|
||||||
| ${BuildConfig.CODE_TIMESTAMP}
|
| ${MornySystem.CODE_TIMESTAMP}
|
||||||
| ${CommonFormat.formatDate(BuildConfig.CODE_TIMESTAMP, 0)} [UTC]"""
|
| ${CommonFormat.formatDate(MornySystem.CODE_TIMESTAMP, 0)} [UTC]"""
|
||||||
.stripMargin
|
.stripMargin
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -138,7 +138,7 @@ object ServerMain {
|
|||||||
s"""ServerMain.java Loaded >>>
|
s"""ServerMain.java Loaded >>>
|
||||||
|- version ${MornySystem.VERSION_FULL}
|
|- version ${MornySystem.VERSION_FULL}
|
||||||
|- Morny ${MornySystem.CODENAME toUpperCase}
|
|- Morny ${MornySystem.CODENAME toUpperCase}
|
||||||
|- <${MornySystem.getJarMD5}> [${BuildConfig.CODE_TIMESTAMP}]""".stripMargin
|
|- <${MornySystem.getJarMD5}> [${MornySystem.CODE_TIMESTAMP}]""".stripMargin
|
||||||
|
|
||||||
// due to [[MornyFormatterConsole]] will use a localized time, it will output to the log
|
// due to [[MornyFormatterConsole]] will use a localized time, it will output to the log
|
||||||
logger info s"logging time will use time-zone ${tz.getID} ($tz_offset)"
|
logger info s"logging time will use time-zone ${tz.getID} ($tz_offset)"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package cc.sukazyo.cono.morny.bot.command
|
package cc.sukazyo.cono.morny.bot.command
|
||||||
|
|
||||||
import cc.sukazyo.cono.morny.{BuildConfig, MornyCoeur, MornySystem}
|
import cc.sukazyo.cono.morny.{MornyCoeur, MornySystem}
|
||||||
import cc.sukazyo.cono.morny.data.MornyInformation.*
|
import cc.sukazyo.cono.morny.data.MornyInformation.*
|
||||||
import cc.sukazyo.cono.morny.data.TelegramStickers
|
import cc.sukazyo.cono.morny.data.TelegramStickers
|
||||||
import cc.sukazyo.cono.morny.util.CommonFormat.{formatDate, formatDuration}
|
import cc.sukazyo.cono.morny.util.CommonFormat.{formatDate, formatDuration}
|
||||||
@ -103,19 +103,19 @@ class MornyInformation (using coeur: MornyCoeur) extends ITelegramCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private[command] def echoVersion (using event: Update): Unit = {
|
private[command] def echoVersion (using event: Update): Unit = {
|
||||||
val versionDeltaHTML = if (MornySystem.isUseDelta) s"-δ<code>${h(MornySystem.VERSION_DELTA)}</code>" else ""
|
val versionDeltaHTML = MornySystem.VERSION_DELTA match {case Some(d) => s"-δ<code>${h(d)}</code>" case None => ""}
|
||||||
val versionGitHTML = if (MornySystem.isGitBuild) s"git $getVersionGitTagHTML" else ""
|
val versionGitHTML = if (MornySystem.GIT_COMMIT nonEmpty) s"git $getVersionGitTagHTML" else ""
|
||||||
coeur.account exec new SendMessage(
|
coeur.account exec new SendMessage(
|
||||||
event.message.chat.id,
|
event.message.chat.id,
|
||||||
// language=html
|
// language=html
|
||||||
s"""version:
|
s"""version:
|
||||||
|- Morny <code>${h(MornySystem.CODENAME toUpperCase)}</code>
|
|- Morny <code>${h(MornySystem.CODENAME toUpperCase)}</code>
|
||||||
|- <code>${h(MornySystem.VERSION_BASE)}</code>$versionDeltaHTML${if (MornySystem.isGitBuild) "\n- " + versionGitHTML else ""}
|
|- <code>${h(MornySystem.VERSION_BASE)}</code>$versionDeltaHTML${if (MornySystem.GIT_COMMIT nonEmpty) "\n- " + versionGitHTML else ""}
|
||||||
|coeur md5_hash:
|
|coeur md5_hash:
|
||||||
|- <code>${h(MornySystem.getJarMD5)}</code>
|
|- <code>${h(MornySystem.getJarMD5)}</code>
|
||||||
|coding timestamp:
|
|coding timestamp:
|
||||||
|- <code>${BuildConfig.CODE_TIMESTAMP}</code>
|
|- <code>${MornySystem.CODE_TIMESTAMP}</code>
|
||||||
|- <code>${h(formatDate(BuildConfig.CODE_TIMESTAMP, 0))} [UTC]</code>
|
|- <code>${h(formatDate(MornySystem.CODE_TIMESTAMP, 0))} [UTC]</code>
|
||||||
|""".stripMargin
|
|""".stripMargin
|
||||||
).replyToMessageId(event.message.messageId).parseMode(ParseMode HTML)
|
).replyToMessageId(event.message.messageId).parseMode(ParseMode HTML)
|
||||||
}
|
}
|
||||||
@ -137,8 +137,8 @@ class MornyInformation (using coeur: MornyCoeur) extends ITelegramCommand {
|
|||||||
|coeur version:
|
|coeur version:
|
||||||
|- $getVersionAllFullTagHTML
|
|- $getVersionAllFullTagHTML
|
||||||
|- <code>${h(MornySystem.getJarMD5)}</code>
|
|- <code>${h(MornySystem.getJarMD5)}</code>
|
||||||
|- <code>${h(formatDate(BuildConfig.CODE_TIMESTAMP, 0))} [UTC]</code>
|
|- <code>${h(formatDate(MornySystem.CODE_TIMESTAMP, 0))} [UTC]</code>
|
||||||
|- [<code>${BuildConfig.CODE_TIMESTAMP}</code>]
|
|- [<code>${MornySystem.CODE_TIMESTAMP}</code>]
|
||||||
|continuous:
|
|continuous:
|
||||||
|- <code>${h(formatDuration(System.currentTimeMillis - coeur.coeurStartTimestamp))}</code>
|
|- <code>${h(formatDuration(System.currentTimeMillis - coeur.coeurStartTimestamp))}</code>
|
||||||
|- [<code>${System.currentTimeMillis - coeur.coeurStartTimestamp}</code>]
|
|- [<code>${System.currentTimeMillis - coeur.coeurStartTimestamp}</code>]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package cc.sukazyo.cono.morny.data
|
package cc.sukazyo.cono.morny.data
|
||||||
|
|
||||||
import cc.sukazyo.cono.morny.{BuildConfig, MornyAbout, MornySystem}
|
import cc.sukazyo.cono.morny.{MornyAbout, MornySystem}
|
||||||
|
|
||||||
import java.net.InetAddress
|
import java.net.InetAddress
|
||||||
import java.rmi.UnknownHostException
|
import java.rmi.UnknownHostException
|
||||||
@ -9,21 +9,23 @@ object MornyInformation {
|
|||||||
|
|
||||||
//noinspection ScalaWeakerAccess
|
//noinspection ScalaWeakerAccess
|
||||||
def getVersionGitTagHTML: String = {
|
def getVersionGitTagHTML: String = {
|
||||||
if (!MornySystem.isGitBuild) return ""
|
MornySystem.GIT_COMMIT match
|
||||||
val g = StringBuilder()
|
case None => ""
|
||||||
val cm = BuildConfig.COMMIT substring(0, 8)
|
case Some(commit) =>
|
||||||
val cp = MornySystem.currentCodePath
|
val g = StringBuilder()
|
||||||
if (cp == null) g ++= s"<code>$cm</code>"
|
val cm = commit substring(0, 8)
|
||||||
else g ++= s"<a href='$cp'>$cm</a>"
|
val cp = MornySystem.currentCodePath
|
||||||
if (!MornySystem.isCleanBuild) g ++= ".<code>δ</code>"
|
if (cp == null) g ++= s"<code>$cm</code>"
|
||||||
g toString
|
else g ++= s"<a href='$cp'>$cm</a>"
|
||||||
|
if (!MornySystem.isCleanBuild) g ++= ".<code>δ</code>"
|
||||||
|
g toString
|
||||||
}
|
}
|
||||||
|
|
||||||
def getVersionAllFullTagHTML: String = {
|
def getVersionAllFullTagHTML: String = {
|
||||||
val v = StringBuilder()
|
val v = StringBuilder()
|
||||||
v ++= s"<code>${MornySystem VERSION_BASE}</code>"
|
v ++= s"<code>${MornySystem VERSION_BASE}</code>"
|
||||||
if (MornySystem isUseDelta) v ++= s"-δ<code>${MornySystem VERSION_DELTA}</code>"
|
if (MornySystem.VERSION_DELTA nonEmpty) v ++= s"-δ<code>${MornySystem.VERSION_DELTA.get}</code>"
|
||||||
if (MornySystem isGitBuild) v ++= "+git." ++= getVersionGitTagHTML
|
if (MornySystem.GIT_COMMIT nonEmpty) v ++= "+git." ++= getVersionGitTagHTML
|
||||||
v ++= s"*<code>${MornySystem.CODENAME toUpperCase}</code>"
|
v ++= s"*<code>${MornySystem.CODENAME toUpperCase}</code>"
|
||||||
v toString
|
v toString
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user