mirror of
https://github.com/element-hq/element-x-ios.git
synced 2025-03-10 13:37:11 +00:00
46 lines
1.4 KiB
Swift
46 lines
1.4 KiB
Swift
import ArgumentParser
|
|
import CommandLineTools
|
|
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 {
|
|
.projectDirectory.appendingPathComponent("ElementX/Resources/Localizations")
|
|
}
|
|
|
|
func run() throws {
|
|
try checkMint()
|
|
try checkStrings()
|
|
}
|
|
|
|
func checkStrings() throws {
|
|
guard let output = try Zsh.run(command: "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 Zsh.run(command: "which mint")
|
|
|
|
if result?.contains("not found") == true {
|
|
throw LocheckError.missingMint
|
|
}
|
|
}
|
|
}
|