2025-01-28 00:07:24 +00:00
|
|
|
enum File: String {
|
|
|
|
case appArguments = "AppArguments"
|
|
|
|
case appBuilder = "AppBuilder"
|
|
|
|
case appOptions = "AppOptions"
|
|
|
|
case dockerFile = "DockerFile"
|
|
|
|
case dockerIgnore = "DockerIgnore"
|
|
|
|
case environment = "Environment"
|
|
|
|
case gitIgnore = "GitIgnore"
|
|
|
|
case license = "License"
|
|
|
|
case loggerLevel = "LoggerLevel"
|
|
|
|
case readme = "Readme"
|
|
|
|
case testArguments = "TestArguments"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// MARK: - Properties
|
|
|
|
|
|
|
|
extension File {
|
|
|
|
|
|
|
|
// MARK: Computed
|
|
|
|
|
|
|
|
var fileName: String {
|
|
|
|
switch self {
|
|
|
|
case .appArguments: "AppArguments.swift"
|
|
|
|
case .appBuilder: "AppBuilder.swift"
|
|
|
|
case .appOptions: "AppOptions.swift"
|
|
|
|
case .dockerFile: "Dockerfile"
|
|
|
|
case .dockerIgnore: ".dockerignore"
|
|
|
|
case .environment: "Environment+Properties.swift"
|
|
|
|
case .gitIgnore: ".gitignore"
|
|
|
|
case .license: "LICENSE"
|
|
|
|
case .loggerLevel: "LoggerLevel+Conformances.swift"
|
|
|
|
case .readme: "README.md"
|
|
|
|
case .testArguments: "TestArguments.swift"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var filePath: String {
|
|
|
|
folder.path + fileName
|
|
|
|
}
|
|
|
|
|
|
|
|
var folder: Folder {
|
|
|
|
switch self {
|
2025-02-17 22:11:05 +00:00
|
|
|
case .appOptions: .app
|
2025-01-28 00:07:24 +00:00
|
|
|
case .appArguments, .appBuilder: .libraryPublic
|
|
|
|
case .environment, .loggerLevel: .libraryInternal
|
|
|
|
case .testArguments: .testHelpers
|
|
|
|
default: .root
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var resourcePath: String {
|
|
|
|
let basePath = "Resources/Files/Sources"
|
|
|
|
|
|
|
|
return switch self {
|
2025-02-17 22:11:05 +00:00
|
|
|
case .appOptions: "\(basePath)/App"
|
2025-01-28 00:07:24 +00:00
|
|
|
case .appArguments, .appBuilder, .environment, .loggerLevel: "\(basePath)/Library"
|
2025-02-17 22:11:05 +00:00
|
|
|
case .testArguments: "\(basePath)/Test"
|
2025-01-28 00:07:24 +00:00
|
|
|
default: basePath
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// MARK: - CaseIterable
|
|
|
|
|
|
|
|
extension File: CaseIterable {}
|