.some
This commit is contained in:
27
Sources/Path+ls.swift
Normal file
27
Sources/Path+ls.swift
Normal file
@@ -0,0 +1,27 @@
|
||||
import Foundation
|
||||
|
||||
public extension Path {
|
||||
/// same as the `ls` command ∴ is ”shallow”
|
||||
func ls() throws -> [Entry] {
|
||||
let relativePaths = try FileManager.default.contentsOfDirectory(atPath: string)
|
||||
func convert(relativePath: String) -> Entry {
|
||||
let path = self/relativePath
|
||||
return Entry(kind: path.isDirectory ? .directory : .file, path: path)
|
||||
}
|
||||
return relativePaths.map(convert)
|
||||
}
|
||||
}
|
||||
|
||||
public extension Array where Element == Path.Entry {
|
||||
var directories: [Path] {
|
||||
return compactMap {
|
||||
$0.kind == .directory ? $0.path : nil
|
||||
}
|
||||
}
|
||||
|
||||
func files(withExtension ext: String) -> [Path] {
|
||||
return compactMap {
|
||||
$0.kind == .file && $0.path.extension == ext ? $0.path : nil
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user