1111#include " command.h"
1212#include " utils.h"
1313
14+ template <typename Options, typename Iterator>
15+ static auto disable_lint_rules (sourcemeta::core::SchemaTransformer &bundle,
16+ const Options &options, Iterator first,
17+ Iterator last) -> void {
18+ for (auto iterator = first; iterator != last; ++iterator) {
19+ if (bundle.remove (*iterator)) {
20+ sourcemeta::jsonschema::cli::log_verbose (options)
21+ << " Disabling rule: " << *iterator << " \n " ;
22+ } else {
23+ sourcemeta::jsonschema::cli::log_verbose (options)
24+ << " warning: Cannot disable unknown rule: " << *iterator << " \n " ;
25+ }
26+ }
27+ }
28+
1429auto sourcemeta::jsonschema::cli::lint (
1530 const std::span<const std::string> &arguments) -> int {
1631 const auto options{parse_options (arguments, {" f" , " fix" , " json" , " j" })};
@@ -28,6 +43,16 @@ auto sourcemeta::jsonschema::cli::lint(
2843 sourcemeta::core::add (bundle,
2944 sourcemeta::core::AlterSchemaCategory::SyntaxSugar);
3045
46+ if (options.contains (" disable" )) {
47+ disable_lint_rules (bundle, options, options.at (" disable" ).cbegin (),
48+ options.at (" disable" ).cend ());
49+ }
50+
51+ if (options.contains (" d" )) {
52+ disable_lint_rules (bundle, options, options.at (" d" ).cbegin (),
53+ options.at (" d" ).cend ());
54+ }
55+
3156 bool result{true };
3257 auto errors_array = sourcemeta::core::JSON::make_array ();
3358
0 commit comments