Котлин экологические ценности - PullRequest
0 голосов
/ 25 августа 2018

Я изучаю 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 , но нет реальных ссылок для точного репо, который он пытается загрузить, так как они это сделали?

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

Это не переменные окружения, и он не загружается с URL-адреса, он записывает один из них в локальной файловой системе.

Интерфейс Project устанавливает расположение файлов, а класс RuneStar устанавливает специальный репозиторий Github.

0 голосов
/ 26 августа 2018

Значения извлекаются с использованием некоторой логики, разбросанной по разным местам в коде.

Например, см. https://github.com/RuneStar/launcher/blob/3e8dcb59c32d2818c917705c6c4432f9fc12c449/src/main/java/org/runestar/launcher/RuneStar.kt#L15

override val repoName: String get() = "RuneStar/client"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...