mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2024-12-25 05:06:45 +00:00
upgrade to hwi 2.4.0
This commit is contained in:
parent
1ba501f5c8
commit
31042039d7
8 changed files with 41 additions and 22 deletions
|
@ -125,6 +125,7 @@ dependencies {
|
||||||
implementation('io.reactivex.rxjava2:rxjava:2.2.15')
|
implementation('io.reactivex.rxjava2:rxjava:2.2.15')
|
||||||
implementation('io.reactivex.rxjava2:rxjavafx:2.2.2')
|
implementation('io.reactivex.rxjava2:rxjavafx:2.2.2')
|
||||||
implementation('org.apache.commons:commons-lang3:3.7')
|
implementation('org.apache.commons:commons-lang3:3.7')
|
||||||
|
implementation('org.apache.commons:commons-compress:1.25.0')
|
||||||
implementation('net.sourceforge.streamsupport:streamsupport:1.7.0')
|
implementation('net.sourceforge.streamsupport:streamsupport:1.7.0')
|
||||||
implementation('com.github.librepdf:openpdf:1.3.30')
|
implementation('com.github.librepdf:openpdf:1.3.30')
|
||||||
implementation('com.googlecode.lanterna:lanterna:3.1.1')
|
implementation('com.googlecode.lanterna:lanterna:3.1.1')
|
||||||
|
|
|
@ -13,6 +13,9 @@ import com.sparrowwallet.drongo.wallet.WalletModel;
|
||||||
import javafx.concurrent.ScheduledService;
|
import javafx.concurrent.ScheduledService;
|
||||||
import javafx.concurrent.Service;
|
import javafx.concurrent.Service;
|
||||||
import javafx.concurrent.Task;
|
import javafx.concurrent.Task;
|
||||||
|
import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
|
||||||
|
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
|
||||||
|
import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
|
||||||
import org.controlsfx.tools.Platform;
|
import org.controlsfx.tools.Platform;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
@ -24,19 +27,18 @@ import java.lang.reflect.Type;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.Paths;
|
||||||
import java.nio.file.attribute.PosixFilePermission;
|
import java.nio.file.attribute.PosixFilePermission;
|
||||||
import java.nio.file.attribute.PosixFilePermissions;
|
import java.nio.file.attribute.PosixFilePermissions;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.zip.ZipEntry;
|
|
||||||
import java.util.zip.ZipInputStream;
|
|
||||||
|
|
||||||
public class Hwi {
|
public class Hwi {
|
||||||
private static final Logger log = LoggerFactory.getLogger(Hwi.class);
|
private static final Logger log = LoggerFactory.getLogger(Hwi.class);
|
||||||
private static final String HWI_HOME_DIR = "hwi";
|
private static final String HWI_HOME_DIR = "hwi";
|
||||||
private static final String HWI_VERSION_PREFIX = "hwi-";
|
private static final String HWI_VERSION_PREFIX = "hwi-";
|
||||||
private static final String HWI_VERSION = "2.3.1";
|
private static final String HWI_VERSION = "2.4.0";
|
||||||
private static final String HWI_VERSION_DIR = HWI_VERSION_PREFIX + HWI_VERSION;
|
private static final String HWI_VERSION_DIR = HWI_VERSION_PREFIX + HWI_VERSION;
|
||||||
|
|
||||||
private static boolean isPromptActive = false;
|
private static boolean isPromptActive = false;
|
||||||
|
@ -377,9 +379,9 @@ public class Hwi {
|
||||||
if(platform == Platform.OSX) {
|
if(platform == Platform.OSX) {
|
||||||
InputStream inputStream;
|
InputStream inputStream;
|
||||||
if(osArch.equals("aarch64")) {
|
if(osArch.equals("aarch64")) {
|
||||||
inputStream = Hwi.class.getResourceAsStream("/native/osx/aarch64/" + HWI_VERSION_DIR + "-mac-aarch64-signed.zip");
|
inputStream = Hwi.class.getResourceAsStream("/native/osx/aarch64/" + HWI_VERSION_DIR + "-mac-aarch64-signed.tar.bz2");
|
||||||
} else {
|
} else {
|
||||||
inputStream = Hwi.class.getResourceAsStream("/native/osx/x64/" + HWI_VERSION_DIR + "-mac-amd64-signed.zip");
|
inputStream = Hwi.class.getResourceAsStream("/native/osx/x64/" + HWI_VERSION_DIR + "-mac-amd64-signed.tar.bz2");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(inputStream == null) {
|
if(inputStream == null) {
|
||||||
|
@ -396,26 +398,27 @@ public class Hwi {
|
||||||
log.debug("Using HWI path: " + hwiVersionDir.getAbsolutePath());
|
log.debug("Using HWI path: " + hwiVersionDir.getAbsolutePath());
|
||||||
|
|
||||||
File hwiExec = null;
|
File hwiExec = null;
|
||||||
try(ZipInputStream zis = new ZipInputStream(inputStream)) {
|
try(TarArchiveInputStream tarInput = new TarArchiveInputStream(new BZip2CompressorInputStream(inputStream))) {
|
||||||
ZipEntry zipEntry = zis.getNextEntry();
|
TarArchiveEntry tarEntry = tarInput.getNextEntry();
|
||||||
while(zipEntry != null) {
|
while(tarEntry != null) {
|
||||||
if(zipEntry.isDirectory()) {
|
if(tarEntry.isDirectory()) {
|
||||||
newDirectory(hwiVersionDir, zipEntry, ownerExecutableWritable);
|
newDirectory(hwiVersionDir, tarEntry, ownerExecutableWritable);
|
||||||
|
} else if(tarEntry.isSymbolicLink()) {
|
||||||
|
newSymlink(hwiVersionDir, tarEntry, ownerExecutableWritable);
|
||||||
} else {
|
} else {
|
||||||
File newFile = newFile(hwiVersionDir, zipEntry, ownerExecutableWritable);
|
File newFile = newFile(hwiVersionDir, tarEntry, ownerExecutableWritable);
|
||||||
try(FileOutputStream fos = new FileOutputStream(newFile)) {
|
try(FileOutputStream fos = new FileOutputStream(newFile)) {
|
||||||
ByteStreams.copy(zis, new FileOutputStream(newFile));
|
ByteStreams.copy(tarInput, new FileOutputStream(newFile));
|
||||||
fos.flush();
|
fos.flush();
|
||||||
};
|
}
|
||||||
|
|
||||||
if(zipEntry.getName().equals("hwi")) {
|
if(tarEntry.getName().equals("hwi")) {
|
||||||
hwiExec = newFile;
|
hwiExec = newFile;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
zipEntry = zis.getNextEntry();
|
tarEntry = tarInput.getNextEntry();
|
||||||
}
|
}
|
||||||
zis.closeEntry();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
hwiExecutable = hwiExec;
|
hwiExecutable = hwiExec;
|
||||||
|
@ -478,29 +481,43 @@ public class Hwi {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static File newDirectory(File destinationDir, ZipEntry zipEntry, Set<PosixFilePermission> setFilePermissions) throws IOException {
|
public static File newDirectory(File destinationDir, TarArchiveEntry tarEntry, Set<PosixFilePermission> setFilePermissions) throws IOException {
|
||||||
String destDirPath = destinationDir.getCanonicalPath();
|
String destDirPath = destinationDir.getCanonicalPath();
|
||||||
|
|
||||||
Path path = Path.of(destDirPath, zipEntry.getName());
|
Path path = Path.of(destDirPath, tarEntry.getName());
|
||||||
File destDir = Files.createDirectory(path, PosixFilePermissions.asFileAttribute(setFilePermissions)).toFile();
|
File destDir = Files.createDirectory(path, PosixFilePermissions.asFileAttribute(setFilePermissions)).toFile();
|
||||||
|
|
||||||
String destSubDirPath = destDir.getCanonicalPath();
|
String destSubDirPath = destDir.getCanonicalPath();
|
||||||
if(!destSubDirPath.startsWith(destDirPath + File.separator)) {
|
if(!destSubDirPath.startsWith(destDirPath + File.separator)) {
|
||||||
throw new IOException("Entry is outside of the target dir: " + zipEntry.getName());
|
throw new IOException("Entry is outside of the target dir: " + tarEntry.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
return destDir;
|
return destDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static File newFile(File destinationDir, ZipEntry zipEntry, Set<PosixFilePermission> setFilePermissions) throws IOException {
|
public static File newFile(File destinationDir, TarArchiveEntry tarEntry, Set<PosixFilePermission> setFilePermissions) throws IOException {
|
||||||
String destDirPath = destinationDir.getCanonicalPath();
|
String destDirPath = destinationDir.getCanonicalPath();
|
||||||
|
|
||||||
Path path = Path.of(destDirPath, zipEntry.getName());
|
Path path = Path.of(destDirPath, tarEntry.getName());
|
||||||
File destFile = Files.createFile(path, PosixFilePermissions.asFileAttribute(setFilePermissions)).toFile();
|
File destFile = Files.createFile(path, PosixFilePermissions.asFileAttribute(setFilePermissions)).toFile();
|
||||||
|
|
||||||
String destFilePath = destFile.getCanonicalPath();
|
String destFilePath = destFile.getCanonicalPath();
|
||||||
if(!destFilePath.startsWith(destDirPath + File.separator)) {
|
if(!destFilePath.startsWith(destDirPath + File.separator)) {
|
||||||
throw new IOException("Entry is outside of the target dir: " + zipEntry.getName());
|
throw new IOException("Entry is outside of the target dir: " + tarEntry.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
return destFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static File newSymlink(File destinationDir, TarArchiveEntry tarEntry, Set<PosixFilePermission> setFilePermissions) throws IOException {
|
||||||
|
String destDirPath = destinationDir.getCanonicalPath();
|
||||||
|
|
||||||
|
Path path = Path.of(destDirPath, tarEntry.getName());
|
||||||
|
File destFile = Files.createSymbolicLink(path, Paths.get(tarEntry.getLinkName())).toFile();
|
||||||
|
|
||||||
|
String destFilePath = destFile.getCanonicalPath();
|
||||||
|
if(!destFilePath.startsWith(destDirPath + File.separator)) {
|
||||||
|
throw new IOException("Entry is outside of the target dir: " + tarEntry.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
return destFile;
|
return destFile;
|
||||||
|
|
|
@ -53,6 +53,7 @@ open module com.sparrowwallet.sparrow {
|
||||||
requires io.reactivex.rxjava2;
|
requires io.reactivex.rxjava2;
|
||||||
requires io.reactivex.rxjava2fx;
|
requires io.reactivex.rxjava2fx;
|
||||||
requires org.apache.commons.lang3;
|
requires org.apache.commons.lang3;
|
||||||
|
requires org.apache.commons.compress;
|
||||||
requires net.sourceforge.streamsupport;
|
requires net.sourceforge.streamsupport;
|
||||||
requires co.nstant.in.cbor;
|
requires co.nstant.in.cbor;
|
||||||
requires com.github.librepdf.openpdf;
|
requires com.github.librepdf.openpdf;
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
src/main/resources/native/osx/x64/hwi-2.3.1-mac-amd64-signed.zip → src/main/resources/native/osx/x64/hwi-2.4.0-mac-amd64-signed.tar.bz2
Normal file → Executable file
BIN
src/main/resources/native/osx/x64/hwi-2.3.1-mac-amd64-signed.zip → src/main/resources/native/osx/x64/hwi-2.4.0-mac-amd64-signed.tar.bz2
Normal file → Executable file
Binary file not shown.
Binary file not shown.
Loading…
Reference in a new issue