Compare commits

..

4 Commits

Author SHA1 Message Date
comp500
a368268038 Fix support for symlinked directories 2020-12-07 17:38:21 +00:00
comp500
8beded7b41 Improve UX when there are no optional mods 2020-12-06 19:05:56 +00:00
comp500
91060dcd54 Put an error message there. Later is now! 2020-11-30 00:24:47 +00:00
comp500
e06ee21f3b Add User-Agent to download requests 2020-10-22 20:53:36 +01:00
4 changed files with 24 additions and 11 deletions

View File

@@ -176,7 +176,10 @@ internal class DownloadTask private constructor(val metadata: IndexFile.File, de
} }
if (fileSource.hashIsEqual(hash)) { if (fileSource.hashIsEqual(hash)) {
Files.createDirectories(destPath.parent) // isDirectory follows symlinks, but createDirectories doesn't
if (Files.isDirectory(destPath.parent)) {
Files.createDirectories(destPath.parent)
}
Files.copy(data.inputStream(), destPath, StandardCopyOption.REPLACE_EXISTING) Files.copy(data.inputStream(), destPath, StandardCopyOption.REPLACE_EXISTING)
data.clear() data.clear()
} else { } else {

View File

@@ -255,8 +255,7 @@ class UpdateManager internal constructor(private val opts: Options, val ui: IUse
return return
} }
if (!indexFileSource.hashIsEqual(indexHash)) { if (!indexFileSource.hashIsEqual(indexHash)) {
// TODO: throw exception ui.handleExceptionAndExit(RuntimeException("Your index hash is invalid! Please run packwiz refresh on the pack again"))
println("I was meant to put an error message here but I'll do that later")
return return
} }
if (stateHandler.cancelButton) { if (stateHandler.cancelButton) {

View File

@@ -4,6 +4,7 @@ import link.infra.packwiz.installer.metadata.SpaceSafeURI
import link.infra.packwiz.installer.request.IRequestHandler import link.infra.packwiz.installer.request.IRequestHandler
import okio.Source import okio.Source
import okio.source import okio.source
import java.net.HttpURLConnection
open class RequestHandlerHTTP : IRequestHandler { open class RequestHandlerHTTP : IRequestHandler {
override fun matchesHandler(loc: SpaceSafeURI): Boolean { override fun matchesHandler(loc: SpaceSafeURI): Boolean {
@@ -12,14 +13,17 @@ open class RequestHandlerHTTP : IRequestHandler {
} }
override fun getFileSource(loc: SpaceSafeURI): Source? { override fun getFileSource(loc: SpaceSafeURI): Source? {
val conn = loc.toURL().openConnection() val conn = loc.toURL().openConnection() as HttpURLConnection
// TODO: when do we send specific headers??? should there be a way to signal this? // TODO: when do we send specific headers??? should there be a way to signal this?
// github *sometimes* requires it, sometimes not! conn.addRequestProperty("Accept", "application/octet-stream")
//conn.addRequestProperty("Accept", "application/octet-stream"); // TODO: include version?
conn.addRequestProperty("User-Agent", "packwiz-installer")
conn.apply { conn.apply {
// 30 second read timeout // 30 second read timeout
readTimeout = 30 * 1000 readTimeout = 30 * 1000
requestMethod = "GET"
} }
return conn.getInputStream().source() return conn.inputStream.source()
} }
} }

View File

@@ -180,9 +180,16 @@ class InstallWindow : IUserInterface {
override fun showOptions(options: List<IOptionDetails>): Future<Boolean> { override fun showOptions(options: List<IOptionDetails>): Future<Boolean> {
val future = CompletableFuture<Boolean>() val future = CompletableFuture<Boolean>()
EventQueue.invokeLater { EventQueue.invokeLater {
OptionsSelectWindow(options, future, frmPackwizlauncher).apply { if (options.isEmpty()) {
defaultCloseOperation = JDialog.DISPOSE_ON_CLOSE JOptionPane.showMessageDialog(null,
isVisible = true "This modpack has no optional mods!",
"Optional mods", JOptionPane.INFORMATION_MESSAGE)
future.complete(false)
} else {
OptionsSelectWindow(options, future, frmPackwizlauncher).apply {
defaultCloseOperation = JDialog.DISPOSE_ON_CLOSE
isVisible = true
}
} }
} }
return future return future
@@ -201,7 +208,7 @@ class InstallWindow : IUserInterface {
override fun disableOptionsButton() { override fun disableOptionsButton() {
btnOptions.apply { btnOptions.apply {
text = "Optional mods..." text = "No optional mods"
isEnabled = false isEnabled = false
} }
} }