Clover.app, improved search update method

This commit is contained in:
vectorsigma72 2019-12-01 16:44:59 +01:00
parent 5cfce7bc7a
commit d31580fd35
3 changed files with 31 additions and 45 deletions

View File

@ -27,7 +27,6 @@
956090B7238C890600ACD7F7 /* Installer.xib in Resources */ = {isa = PBXBuildFile; fileRef = 956090B9238C890600ACD7F7 /* Installer.xib */; };
9569EC42238DD772003AD72C /* Settings.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9569EC44238DD772003AD72C /* Settings.xib */; };
958861DA235F75FB00B64173 /* Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 958861D9235F75FB00B64173 /* Driver.swift */; };
95ACABCA236B7463008F80A4 /* Unzip.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95ACABC9236B7463008F80A4 /* Unzip.swift */; };
95C515222369BAF500E4A3A8 /* NVRAM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C515212369BAF500E4A3A8 /* NVRAM.swift */; };
95C5152F236A0A7400E4A3A8 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C5152E236A0A7400E4A3A8 /* SettingsView.swift */; };
95C51536236B1F7700E4A3A8 /* RunAtLogin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C51535236B1F7700E4A3A8 /* RunAtLogin.swift */; };
@ -321,7 +320,6 @@
9569EC90238DD7CA003AD72C /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Settings.strings; sourceTree = "<group>"; };
958505B4236594C000BCB4A3 /* Cloverhelper.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Cloverhelper.xcodeproj; path = cloverhelper/Cloverhelper.xcodeproj; sourceTree = "<group>"; };
958861D9235F75FB00B64173 /* Driver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Driver.swift; sourceTree = "<group>"; };
95ACABC9236B7463008F80A4 /* Unzip.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Unzip.swift; sourceTree = "<group>"; };
95C515212369BAF500E4A3A8 /* NVRAM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NVRAM.swift; sourceTree = "<group>"; };
95C5152E236A0A7400E4A3A8 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = "<group>"; };
95C51535236B1F7700E4A3A8 /* RunAtLogin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RunAtLogin.swift; sourceTree = "<group>"; };
@ -450,7 +448,6 @@
95E68ADA235B86A0002B37A5 /* Releases.swift */,
95E68ADC235B86A1002B37A5 /* Shared.swift */,
95C515212369BAF500E4A3A8 /* NVRAM.swift */,
95ACABC9236B7463008F80A4 /* Unzip.swift */,
95E50075238ABA56002F3869 /* Tasks.swift */,
953BC20223720C0A0039755D /* FixedWidthViews.swift */,
9533718223709517003F1AF4 /* bootsectors-install */,
@ -727,7 +724,6 @@
958861DA235F75FB00B64173 /* Driver.swift in Sources */,
95E68AE3235B86A1002B37A5 /* bdmesg.swift in Sources */,
95C5152F236A0A7400E4A3A8 /* SettingsView.swift in Sources */,
95ACABCA236B7463008F80A4 /* Unzip.swift in Sources */,
9555AF28238EFDAD00108C33 /* DriversCollection.swift in Sources */,
953BC20323720C0A0039755D /* FixedWidthViews.swift in Sources */,
95E50076238ABA56002F3869 /* Tasks.swift in Sources */,

View File

@ -611,7 +611,6 @@ class SettingsViewController: NSViewController, NSTextFieldDelegate, URLSessionD
}
// Time interval is what user defines less time elapsed
if ti > 0 {
let lastCheckDate : Date = (UDs.object(forKey: kLastSearchUpdateDateKey) as? Date) ?? Date()
@ -643,7 +642,9 @@ class SettingsViewController: NSViewController, NSTextFieldDelegate, URLSessionD
self.lastReleaseRev = bootvers
let currRevNum : Int = Int(self.currentRev) ?? 0
let lastRevNum : Int = Int(self.lastReleaseRev ?? "0") ?? 0
let installerRev = findCloverRevision(at: Bundle.main.sharedSupportPath!.addPath("CloverV2/EFI"))
let installerRevNum = Int(installerRev ?? "0") ?? 0
if (self.lastReleaseLink != nil && self.lastReleaseRev != nil)
&& lastRevNum > 0
&& (lastRevNum > currRevNum) {
@ -656,9 +657,13 @@ class SettingsViewController: NSViewController, NSTextFieldDelegate, URLSessionD
} else {
AppSD.statusItem.title = "\(lastRevNum)"
}
self.updateCloverButton.isEnabled = true
self.updateCloverButton.title = String(format: "Update to r%d".locale, lastRevNum)
if installerRevNum > lastRevNum {
self.updateCloverButton.isEnabled = true
self.updateCloverButton.title = String(format: "Update to r%d".locale, lastRevNum)
} else {
self.updateCloverButton.isEnabled = false
self.updateCloverButton.title = kNotAvailable.locale
}
}
} else {
DispatchQueue.main.async {
@ -768,7 +773,7 @@ class SettingsViewController: NSViewController, NSTextFieldDelegate, URLSessionD
if lastPath.fileExtension == "zip" && lastPath.hasPrefix("CloverV2") {
// ok, We have the download completed: replace CloverV2 inside SharedSupport directory!
// Decompress the zip archive
// NSUserName() ensure the user have read write permissions
let tempDir = "/tmp/CloverXXXXX\(NSUserName())Update"
@ -782,10 +787,27 @@ class SettingsViewController: NSViewController, NSTextFieldDelegate, URLSessionD
let file = tempDir.addPath(lastPath)
try data.write(to: URL(fileURLWithPath: file))
unzip(file: file, destination: tempDir) { (success) in
if success {
self.replaceCloverV2(with: tempDir.addPath("CloverV2"))
DispatchQueue.main.async {
let task : Process = Process()
task.environment = ProcessInfo().environment
let bash = "/bin/bash"
// unzip -d output_dir/ zipfiles.zip
let cmd = "/usr/bin/unzip -qq -d \(tempDir) \(file)"
if #available(OSX 10.13, *) {
task.executableURL = URL(fileURLWithPath: bash)
} else {
task.launchPath = bash
}
task.arguments = ["-c", cmd]
task.terminationHandler = { t in
if t.terminationStatus == 0 {
self.replaceCloverV2(with: tempDir.addPath("CloverV2"))
}
}
task.launch()
}
}

View File

@ -1,32 +0,0 @@
//
// Unzip.swift
// Clover
//
// Created by vector sigma on 31/10/2019.
// Copyright © 2019 CloverHackyColor. All rights reserved.
//
import Foundation
func unzip(file: String,
destination: String,
success: @escaping (Bool) -> Void) {
let task : Process = Process()
if #available(OSX 10.13, *) {
task.executableURL = URL(fileURLWithPath: "/usr/bin/unzip")
} else {
task.launchPath = "/usr/bin/unzip"
}
// unzip -d output_dir/ zipfiles.zip
task.arguments = ["-d", "\(destination)/", file]
let pipe: Pipe = Pipe()
task.standardOutput = pipe
task.standardError = pipe
task.terminationHandler = { task in
success((task.terminationStatus == 0))
}
task.launch()
}