1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
/*
This source file is part of the Swift.org open source project
Copyright (c) 2021-2024 Apple Inc. and the Swift project authors
Licensed under Apache License v2.0 with Runtime Library Exception
See https://swift.org/LICENSE.txt for license information
See https://swift.org/CONTRIBUTORS.txt for Swift project authors
*/
public import Foundation
/// A type that vends a tree of virtual filesystem objects.
@available(*, deprecated, message: "Use 'FileManagerProtocol.recursiveFiles(startingPoint:)' instead. This deprecated API will be removed after 6.2 is released.")
public protocol FileSystemProvider {
/// The organization of the files that this provider provides.
var fileSystem: FSNode { get }
}
/// An element in a virtual filesystem.
@available(*, deprecated, message: "This deprecated API will be removed after 6.2 is released.")
public enum FSNode {
/// A file in a filesystem.
case file(File)
/// A directory in a filesystem.
case directory(Directory)
/// A file in a virtual file system
public struct File {
/// The URL to this file.
public var url: URL
/// Creates a new virtual file with a given URL
/// - Parameter url: The URL to this file.
public init(url: URL) {
self.url = url
}
}
/// A directory in a virtual file system.
public struct Directory {
/// The URL to this directory.
public var url: URL
/// The contents of this directory.
public var children: [FSNode]
/// Creates a new virtual directory with a given URL and contents.
/// - Parameters:
/// - url: The URL to this directory.
/// - children: The contents of this directory.
public init(url: URL, children: [FSNode]) {
self.url = url
self.children = children
}
}
/// The URL for the node in the filesystem.
public var url: URL {
switch self {
case .file(let file):
return file.url
case .directory(let directory):
return directory.url
}
}
}
|