resgen.swift/Sources/ResgenSwift/Images/Extensions/FileManagerExtensions.swift
Thibaut Schmitt fc427733ee
Some checks failed
gitea-openium/resgen.swift/pipeline/head There was a failure building this commit
Fix error/warning message to be shown in Xcode.IssueNavigator
2022-11-22 17:14:13 +01:00

57 lines
2.2 KiB
Swift

//
// FileManagerExtensions.swift
//
//
// Created by Thibaut Schmitt on 24/01/2022.
//
import Foundation
extension FileManager {
func getAllRegularFileIn(directory: String) -> [String] {
var files = [String]()
guard let enumerator = self.enumerator(at: URL(string: directory)!, includingPropertiesForKeys: [.isRegularFileKey], options: [.skipsHiddenFiles, .skipsPackageDescendants]) else {
let error = ImagesError.unknown("Cannot enumerate file in \(directory)")
print(error.description)
Images.exit(withError: error)
}
for case let fileURL as URL in enumerator {
do {
let fileAttributes = try fileURL.resourceValues(forKeys:[.isRegularFileKey])
if fileAttributes.isRegularFile! {
files.append(fileURL.relativePath)
}
} catch {
let error = ImagesError.getFileAttributed(fileURL.relativePath, error.localizedDescription)
print(error.description)
Images.exit(withError: error)
}
}
return files
}
func getAllImageSetFolderIn(directory: String) -> [String] {
var files = [String]()
guard let enumerator = self.enumerator(at: URL(string: directory)!, includingPropertiesForKeys: [.isDirectoryKey], options: [.skipsHiddenFiles, .skipsPackageDescendants]) else {
let error = ImagesError.unknown("Cannot enumerate imageset directory in \(directory)")
print(error.description)
Images.exit(withError: error)
}
for case let fileURL as URL in enumerator {
do {
let fileAttributes = try fileURL.resourceValues(forKeys:[.isDirectoryKey])
if fileAttributes.isDirectory! && fileURL.lastPathComponent.hasSuffix(".imageset") {
files.append(fileURL.lastPathComponent)
}
} catch {
let error = ImagesError.getFileAttributed(fileURL.relativePath, error.localizedDescription)
print(error.description)
Images.exit(withError: error)
}
}
return files
}
}