-
Notifications
You must be signed in to change notification settings - Fork 0
/
Check.swift
29 lines (24 loc) · 950 Bytes
/
Check.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import ArgumentParser
import Foundation
import Rainbow
import SwiftBeanCountModel
struct Check: LedgerCommand, ColorizedCommand {
static var configuration = CommandConfiguration(abstract: "Parses a ledger and prints any errors it finds")
@OptionGroup() var options: LedgerOption
@ArgumentParser.Flag(name: [.short, .long], help: "Don't print errors, only indicate via exit code.") private var quiet = false
@ArgumentParser.Flag(help: Self.noColorHelp()) var noColor = false
func run() throws {
adjustColorization()
let ledger = try parseLedger()
let errors = ledger.errors
if !errors.isEmpty {
if !quiet {
print("Found ".red + String(errors.count).bold.red + " errors:\n".red)
print(errors.joined(separator: "\n"))
}
throw ExitCode(65)
} else if !quiet {
print("No errors found.".green)
}
}
}