mirror of
https://github.com/element-hq/element-x-ios.git
synced 2025-03-10 21:39:12 +00:00
45 lines
1.3 KiB
Swift
45 lines
1.3 KiB
Swift
![]() |
import ArgumentParser
|
||
|
import Foundation
|
||
|
|
||
|
struct Locheck: ParsableCommand {
|
||
|
enum LocheckError: LocalizedError {
|
||
|
case missingMint
|
||
|
case outputError
|
||
|
|
||
|
var errorDescription: String? {
|
||
|
switch self {
|
||
|
case .missingMint:
|
||
|
return "💥 Unable to find mint. Fix by running:\nbrew install mint\n"
|
||
|
case .outputError:
|
||
|
return "💥 Failed to read the output from locheck."
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static var configuration = CommandConfiguration(abstract: "A tool that verifies bad strings contained in localization files")
|
||
|
|
||
|
private var stringsDirectoryURL: URL {
|
||
|
Utilities.projectDirectoryURL.appendingPathComponent("ElementX/Resources/Localizations")
|
||
|
}
|
||
|
|
||
|
func run() throws {
|
||
|
try checkMint()
|
||
|
try checkStrings()
|
||
|
}
|
||
|
|
||
|
func checkStrings() throws {
|
||
|
guard let output = try Utilities.zsh("mint run locheck discoverlproj --ignore-missing --ignore lproj_file_missing_from_translation --treat-warnings-as-errors \(stringsDirectoryURL.path)") else {
|
||
|
throw LocheckError.missingMint
|
||
|
}
|
||
|
print(output)
|
||
|
}
|
||
|
|
||
|
private func checkMint() throws {
|
||
|
let result = try Utilities.zsh("which mint")
|
||
|
|
||
|
if result?.contains("not found") == true {
|
||
|
throw LocheckError.missingMint
|
||
|
}
|
||
|
}
|
||
|
}
|