28 lines
1.0 KiB
Swift
28 lines
1.0 KiB
Swift
import ArgumentParser
|
|
import Foundation
|
|
import SwiftLintFramework
|
|
|
|
extension SwiftLint {
|
|
struct GenerateDocs: ParsableCommand {
|
|
static let configuration = CommandConfiguration(
|
|
abstract: "Generates markdown documentation for selected group of rules"
|
|
)
|
|
|
|
@Option(help: "The directory where the documentation should be saved")
|
|
var path = "rule_docs"
|
|
@Option(help: "The path to a SwiftLint configuration file")
|
|
var config: String?
|
|
@OptionGroup var rulesFilterOptions: RulesFilterOptions
|
|
|
|
func run() throws {
|
|
let configuration = Configuration(configurationFiles: [config].compactMap({ $0 }))
|
|
let rulesFilter = RulesFilter(enabledRules: configuration.rules)
|
|
let rules = rulesFilter.getRules(excluding: .excludingOptions(byCommandLineOptions: rulesFilterOptions))
|
|
|
|
try RuleListDocumentation(rules)
|
|
.write(to: URL(fileURLWithPath: path, isDirectory: true))
|
|
ExitHelper.successfullyExit()
|
|
}
|
|
}
|
|
}
|