Merge pull request #306 from leon-wolf/feature/144-add-error-on-uninstall

add error message when trying to uninstall Xcode if file not found
This commit is contained in:
Matt Kiazyk 2022-11-11 11:27:22 -06:00 committed by GitHub
commit 35ae6b7672
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 35 additions and 2 deletions

View file

@ -8,6 +8,7 @@
/* Begin PBXBuildFile section */
36741BFD291E4FDB00A85AAE /* DownloadPreferencePane.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36741BFC291E4FDB00A85AAE /* DownloadPreferencePane.swift */; };
36741BFF291E50F500A85AAE /* FileError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36741BFE291E50F500A85AAE /* FileError.swift */; };
536CFDD2263C94DE00026CE0 /* SignedInView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 536CFDD1263C94DE00026CE0 /* SignedInView.swift */; };
536CFDD4263C9A8000026CE0 /* XcodesSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 536CFDD3263C9A8000026CE0 /* XcodesSheet.swift */; };
53CBAB2C263DCC9100410495 /* XcodesAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53CBAB2B263DCC9100410495 /* XcodesAlert.swift */; };
@ -172,6 +173,7 @@
15FAD1652811D15600B63259 /* hi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hi; path = hi.lproj/Localizable.strings; sourceTree = "<group>"; };
25E2FA26284769A00014A318 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = "<group>"; };
36741BFC291E4FDB00A85AAE /* DownloadPreferencePane.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DownloadPreferencePane.swift; sourceTree = "<group>"; };
36741BFE291E50F500A85AAE /* FileError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileError.swift; sourceTree = "<group>"; };
4A5AAA1D28118FAD00528958 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; };
536CFDD1263C94DE00026CE0 /* SignedInView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignedInView.swift; sourceTree = "<group>"; };
536CFDD3263C9A8000026CE0 /* XcodesSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XcodesSheet.swift; sourceTree = "<group>"; };
@ -458,6 +460,7 @@
CAA858C325A2BE4E00ACF8C0 /* Downloader.swift */,
CABFA9B22592EEEA00380FEE /* Entry+.swift */,
CABFA9A92592EEE900380FEE /* Environment.swift */,
36741BFE291E50F500A85AAE /* FileError.swift */,
CABFA9B82592EEEA00380FEE /* FileManager+.swift */,
CAFBDB942598FE96003DCC5A /* FocusedValues.swift */,
CABFA9AC2592EEE900380FEE /* Foundation.swift */,
@ -841,6 +844,7 @@
CAA1CB45255A5B60003FD669 /* SignIn2FAView.swift in Sources */,
CABFA9C52592EEEA00380FEE /* FileManager+.swift in Sources */,
CABFA9CD2592EEEA00380FEE /* Foundation.swift in Sources */,
36741BFF291E50F500A85AAE /* FileError.swift in Sources */,
CA9FF8872595607900E47BAF /* InstalledXcode.swift in Sources */,
53CBAB2C263DCC9100410495 /* XcodesAlert.swift in Sources */,
CA42DD6E25AEA8B200BC0B0C /* Logger.swift in Sources */,

View file

@ -0,0 +1,23 @@
//
// FileError.swift
// Xcodes
//
// Created by Leon Wolf on 06.10.22.
// Copyright © 2022 Robots and Pencils. All rights reserved.
//
import Foundation
import LegibleError
enum FileError: LocalizedError{
case fileNotFound(_ fileName: String)
}
extension FileError {
var errorDescription: String? {
switch self {
case .fileNotFound(let fileName):
return String(format: localizeString("Alert.Uninstall.Error.Message.FileNotFound"), fileName)
}
}
}

View file

@ -11,7 +11,11 @@ extension FileManager {
@discardableResult
func trashItem(at url: URL) throws -> URL {
var resultingItemURL: NSURL!
try trashItem(at: url, resultingItemURL: &resultingItemURL)
if fileExists(atPath: url.path) {
try trashItem(at: url, resultingItemURL: &resultingItemURL)
} else {
throw FileError.fileNotFound(url.lastPathComponent)
}
return resultingItemURL as URL
}
}
}

View file

@ -159,6 +159,7 @@
"Alert.Uninstall.Title" = "Xcode %@ deinstallieren?";
"Alert.Uninstall.Message" = "Die Anwendung wird in den Papierkorb verschoben, dieser wird aber nicht geleert.";
"Alert.Uninstall.Error.Title" = "Die Deinstallation von Xcode ist nicht möglich";
"Alert.Uninstall.Error.Message.FileNotFound" = "Datei \"%@\" konnte nicht gefunden werden.";
// Cancel Install
"Alert.CancelInstall.Title" = "Bist du sicher, dass Du die installation von Xcode %@ anhalten möchtest?";

View file

@ -159,6 +159,7 @@
"Alert.Uninstall.Title" = "Uninstall Xcode %@?";
"Alert.Uninstall.Message" = "It will be moved to the Trash, but won't be emptied.";
"Alert.Uninstall.Error.Title" = "Unable to uninstall Xcode";
"Alert.Uninstall.Error.Message.FileNotFound" = "Could not find file \"%@\".";
// Cancel Install
"Alert.CancelInstall.Title" = "Are you sure you want to stop the installation of Xcode %@?";