36 lines
753 B
Swift
36 lines
753 B
Swift
import ArgumentParser
|
|
import Dependencies
|
|
import ManualDClient
|
|
|
|
struct SizeCommand: AsyncParsableCommand {
|
|
static let configuration = CommandConfiguration(
|
|
commandName: "size",
|
|
abstract: "Calculate the required size of a duct."
|
|
)
|
|
|
|
@Option(
|
|
name: .shortAndLong,
|
|
help: "The design friction rate."
|
|
)
|
|
var frictionRate: Double = 0.06
|
|
|
|
@Argument(
|
|
help: "The required CFM for the duct."
|
|
)
|
|
var cfm: Int
|
|
|
|
func run() async throws {
|
|
@Dependency(\.manualD) var manualD
|
|
|
|
let size = try await manualD.ductSize(cfm: cfm, frictionRate: frictionRate)
|
|
print(
|
|
"""
|
|
Calculated: \(size.calculatedSize.string(digits: 2))
|
|
Final Size: \(size.finalSize)
|
|
Flex Size: \(size.flexSize)
|
|
"""
|
|
)
|
|
|
|
}
|
|
}
|