Emcee
31 строка · 1.2 Кб
1import Foundation
2import PathLib
3import ResourceLocation
4
5public extension ResolvingResult {
6enum DirectlyAccessibleResourceError: Error, CustomStringConvertible {
7case archiveFilenameNotSpecified(ResolvingResult)
8
9public var description: String {
10switch self {
11case .archiveFilenameNotSpecified(let resolvingResult):
12return "Unable to resolve directly accessible resource for \(resolvingResult) because archive file name is not specified"
13}
14}
15}
16
17/// Returns path in case if ResolvingResult points to local file or to remote archive with specified file inside it.
18/// Otherwise throws error.
19func directlyAccessibleResourcePath() throws -> AbsolutePath {
20switch self {
21case .directlyAccessibleFile(let path):
22return path
23case .contentsOfArchive(let containerPath, let filenameInArchive):
24if let filenameInArchive = filenameInArchive {
25return containerPath.appending(filenameInArchive)
26} else {
27throw DirectlyAccessibleResourceError.archiveFilenameNotSpecified(self)
28}
29}
30}
31}
32