1 Commits

Author SHA1 Message Date
2a08f28838 refactor(config): 使用 URL 生成缺省仓库 Id.
在使用过程中, 发现 Aether 会根据仓库 Id 保存一些元信息, 所以尝试以 URL 生成仓库 Id, 或许有利于 Aether 存取仓库元信息.
改动仍需观望.
2022-08-18 00:59:51 +08:00
2 changed files with 23 additions and 45 deletions

View File

@ -13,7 +13,7 @@ permissions:
contents: read contents: read
jobs: jobs:
build-and-test: build:
timeout-minutes: 8 timeout-minutes: 8
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -32,27 +32,3 @@ jobs:
with: with:
gradle-version: 'wrapper' gradle-version: 'wrapper'
arguments: test arguments: test
compatibility-check:
timeout-minutes: 30
continue-on-error: true
strategy:
matrix:
os: [ ubuntu-latest ]
java-version: [ 11, 12, 13, 14, 15, 16, 17, 18 ]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: ${{ matrix.java-version }}
distribution: 'adopt-hotspot'
cache: 'gradle'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build and test
uses: gradle/gradle-build-action@v2.2.1
with:
gradle-version: 'wrapper'
arguments: test

View File

@ -1,6 +1,7 @@
package net.lamgc.scalabot package net.lamgc.scalabot
import ch.qos.logback.core.PropertyDefinerBase import ch.qos.logback.core.PropertyDefinerBase
import com.google.common.net.InternetDomainName
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.GsonBuilder import com.google.gson.GsonBuilder
import com.google.gson.JsonArray import com.google.gson.JsonArray
@ -15,9 +16,9 @@ import org.eclipse.aether.repository.RepositoryPolicy
import org.telegram.telegrambots.bots.DefaultBotOptions import org.telegram.telegrambots.bots.DefaultBotOptions
import java.io.File import java.io.File
import java.net.URL import java.net.URL
import java.net.URLEncoder
import java.nio.charset.StandardCharsets import java.nio.charset.StandardCharsets
import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicBoolean
import java.util.concurrent.atomic.AtomicInteger
import java.util.function.Supplier import java.util.function.Supplier
import kotlin.reflect.KProperty import kotlin.reflect.KProperty
@ -44,7 +45,7 @@ internal fun ProxyConfig.toAetherProxy(): Proxy? {
internal fun MavenRepositoryConfig.toRemoteRepository(proxyConfig: ProxyConfig? = null): RemoteRepository { internal fun MavenRepositoryConfig.toRemoteRepository(proxyConfig: ProxyConfig? = null): RemoteRepository {
val repositoryId = if (id == null) { val repositoryId = if (id == null) {
val generatedRepoId = createDefaultRepositoryId() val generatedRepoId = createDefaultRepositoryId(url)
log.debug { "仓库 Url `$url` 未设置仓库 Id, 已分配缺省 Id: $generatedRepoId" } log.debug { "仓库 Url `$url` 未设置仓库 Id, 已分配缺省 Id: $generatedRepoId" }
generatedRepoId generatedRepoId
} else { } else {
@ -92,10 +93,11 @@ private fun checkRepositoryLayout(layoutType: String): String {
return type return type
} }
private val repoNumberGenerator = AtomicInteger(1) private fun createDefaultRepositoryId(url: URL): String {
val topPrivateDomain = InternetDomainName.from(url.host).topPrivateDomain().toString()
private fun createDefaultRepositoryId(): String { return "Repository-${URLEncoder.encode(topPrivateDomain, StandardCharsets.UTF_8)}-${
return "Repository-${repoNumberGenerator.getAndIncrement()}" url.toString().hashCode().toString(16)
}"
} }
/** /**