mirror of
https://github.com/mssun/passforios.git
synced 2026-03-03 18:24:08 +01:00
- Create a new model class for operations of Git repository. - Refactor everything related with git. - Add unit tests for git functions.
70 lines
2.1 KiB
Swift
70 lines
2.1 KiB
Swift
//
|
|
// AppError.swift
|
|
// passKit
|
|
//
|
|
// Created by Mingshen Sun on 30/4/2017.
|
|
// Copyright © 2017 Bob Sun. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public enum AppError: Error, Equatable {
|
|
case repositoryNotSet
|
|
case repositoryRemoteBranchNotFound(branchName: String)
|
|
case repositoryBranchNotFound(branchName: String)
|
|
case keyImport
|
|
case readingFile(fileName: String)
|
|
case passwordDuplicated
|
|
case gitReset
|
|
case gitCommit
|
|
case gitCreateSignature
|
|
case gitPushNotSuccessful
|
|
case pgpPublicKeyNotFound(keyID: String)
|
|
case pgpPrivateKeyNotFound(keyID: String)
|
|
case yubiKey(YubiKeyError)
|
|
case passwordFileNotFound(path: String)
|
|
case keyExpiredOrIncompatible
|
|
case wrongPassphrase
|
|
case wrongPasswordFilename
|
|
case decryption
|
|
case encryption
|
|
case encoding
|
|
case other(message: String)
|
|
}
|
|
|
|
public enum YubiKeyError: Error, Equatable {
|
|
case connection(message: String)
|
|
case selectApplication(message: String)
|
|
case verify(message: String)
|
|
case decipher(message: String)
|
|
case other(message: String)
|
|
}
|
|
|
|
extension YubiKeyError: LocalizedError {
|
|
public var errorDescription: String? {
|
|
switch self {
|
|
case let .connection(message), let .decipher(message), let .other(message), let .selectApplication(message), let .verify(message):
|
|
return message
|
|
}
|
|
}
|
|
}
|
|
|
|
extension AppError: LocalizedError {
|
|
public var errorDescription: String? {
|
|
let enumName = String(describing: self)
|
|
let localizationKey = "\(enumName.first!.uppercased())\(enumName.dropFirst().prefix { $0 != "(" })Error."
|
|
switch self {
|
|
case let .readingFile(name), let .repositoryBranchNotFound(name), let .repositoryRemoteBranchNotFound(name):
|
|
return localizationKey.localize(name)
|
|
case let .pgpPrivateKeyNotFound(keyID), let .pgpPublicKeyNotFound(keyID):
|
|
return localizationKey.localize(keyID)
|
|
case let .yubiKey(error):
|
|
return error.errorDescription
|
|
case let .other(message):
|
|
return message.localize()
|
|
default:
|
|
return localizationKey.localize()
|
|
}
|
|
}
|
|
}
|