Я изучаю kotlin, я наткнулся на репозиторий с открытым исходным кодом , клонировал его и запустил на моем компьютере, это инструмент обновления для обновления существующего jar, хотя, глядя на их код, как это сделать они подошли к этому, они сделали что-то подобное.
private fun updateJar(frame: LaunchFrame, project: Project) {
val sourcePath = project.jarSourcePath
val jarPath = project.jarPath
val repoName = project.repoName
frame.log("Reading source URL from '$sourcePath'")
val sourceUrl = readTextFile(sourcePath)?.let { URI(it) }
frame.log("Source URL: $sourceUrl")
frame.log("Connecting to GitHub")
val github = GitHub.connectAnonymously()
frame.log("Using repository '$repoName'")
val repo = github.getRepository(repoName)
frame.log("Finding latest release")
val latestRelease = repo.listReleases().first()
val assets = latestRelease.assets
check(assets.size == 1) { "Release must only have one asset" }
val asset = assets.first()
val downloadUrl = URI(asset.browserDownloadUrl)
frame.log("Latest URL: $downloadUrl")
if (sourceUrl == null || sourceUrl != downloadUrl || !verifyJar(jarPath)) {
frame.log("Downloading '$downloadUrl' to '$jarPath'")
downloadFile(downloadUrl, jarPath)
frame.log("Writing '$downloadUrl' to '$sourcePath'")
writeTextFile(sourcePath, downloadUrl.toString())
} else {
frame.log("'$jarPath' is up to date")
}
}
Что выглядит довольно прямолинейно, но здесь есть одна загвоздка: нет реальных URL-адресов для $ sourceUrl и других, может кто-нибудь пролить свет на этот вопрос? Он начинает скачивать репо, который является runestar / client , но нет реальных ссылок для точного репо, который он пытается загрузить, так как они это сделали?