From e961d92744d463ce9fd02cde67020cb0d9cce309 Mon Sep 17 00:00:00 2001 From: Charlotte Wilson <251223230+cswilson252@users.noreply.github.com> Date: Tue, 12 May 2026 22:07:17 -0400 Subject: [PATCH 1/2] feat: Add quiet CLI flag to silence informational outputs --- .../org/mobilitydata/gtfsvalidator/cli/Arguments.java | 10 ++++++++++ .../gtfsvalidator/runner/ValidationRunner.java | 4 ++++ .../gtfsvalidator/runner/ValidationRunnerConfig.java | 6 ++++++ .../model/JsonReportSummaryGeneratorTest.java | 1 + 4 files changed, 21 insertions(+) diff --git a/cli/src/main/java/org/mobilitydata/gtfsvalidator/cli/Arguments.java b/cli/src/main/java/org/mobilitydata/gtfsvalidator/cli/Arguments.java index 7b80fd8e86..3d2916d3e9 100644 --- a/cli/src/main/java/org/mobilitydata/gtfsvalidator/cli/Arguments.java +++ b/cli/src/main/java/org/mobilitydata/gtfsvalidator/cli/Arguments.java @@ -114,6 +114,11 @@ public class Arguments { description = "Output JSON report to stdout instead of writing to files (conflicts with -o)") private boolean stdoutOutput = false; + @Parameter( + names = {"-q", "--quiet"}, + description = "Silences non-critical log messages when running validator") + private boolean quiet = false; + ValidationRunnerConfig toConfig() throws URISyntaxException { ValidationRunnerConfig.Builder builder = ValidationRunnerConfig.builder(); if (input != null) { @@ -149,6 +154,7 @@ ValidationRunnerConfig toConfig() throws URISyntaxException { builder.setPrettyJson(pretty); builder.setSkipValidatorUpdate(skipValidatorUpdate); builder.setStdoutOutput(stdoutOutput); + builder.setQuietLogs(quiet); return builder.build(); } @@ -172,6 +178,10 @@ public boolean getStdoutOutput() { return stdoutOutput; } + public boolean getQuietLogs() { + return quiet; + } + /** * @return true if CLI parameter combination is legal, otherwise return false */ diff --git a/main/src/main/java/org/mobilitydata/gtfsvalidator/runner/ValidationRunner.java b/main/src/main/java/org/mobilitydata/gtfsvalidator/runner/ValidationRunner.java index a99687951b..dd813bfdba 100644 --- a/main/src/main/java/org/mobilitydata/gtfsvalidator/runner/ValidationRunner.java +++ b/main/src/main/java/org/mobilitydata/gtfsvalidator/runner/ValidationRunner.java @@ -106,8 +106,10 @@ public Status run(ValidationRunnerConfig config) { } GtfsFeedLoader feedLoader = new GtfsFeedLoader(ClassGraphDiscovery.discoverTables()); + if (!config.quietLogs()) { logger.atInfo().log("validation config:\n%s", config); logger.atInfo().log("validators:\n%s", validatorLoader.listValidators()); + } final long startNanos = System.nanoTime(); // Input. @@ -248,8 +250,10 @@ public static void printSummary( logger.atWarning().log(b.toString()); } + if (!config.quietLogs()) { logger.atInfo().log("Validation took %.3f seconds%n", feedMetadata.validationTimeSeconds); logger.atInfo().log(feedContainer.tableTotalsText()); + } } /** diff --git a/main/src/main/java/org/mobilitydata/gtfsvalidator/runner/ValidationRunnerConfig.java b/main/src/main/java/org/mobilitydata/gtfsvalidator/runner/ValidationRunnerConfig.java index 096d8e5ab2..a4ed03f62d 100644 --- a/main/src/main/java/org/mobilitydata/gtfsvalidator/runner/ValidationRunnerConfig.java +++ b/main/src/main/java/org/mobilitydata/gtfsvalidator/runner/ValidationRunnerConfig.java @@ -69,6 +69,9 @@ public Path systemErrorsReportPath() { // If true, output JSON report to stdout instead of writing to files public abstract boolean stdoutOutput(); + // If true, the validation runner will not print informational logging messages + public abstract boolean quietLogs(); + public static Builder builder() { // Set reasonable defaults where appropriate. return new AutoValue_ValidationRunnerConfig.Builder() @@ -81,6 +84,7 @@ public static Builder builder() { .setDateForValidation(LocalDate.now()) .setSkipValidatorUpdate(false) .setStdoutOutput(false); + .setQuietLogs(false); } @AutoValue.Builder @@ -109,6 +113,8 @@ public abstract static class Builder { public abstract Builder setStdoutOutput(boolean stdoutOutput); + public abstract Builder setQuietLogs(boolean quietLogs); + public abstract ValidationRunnerConfig build(); } } diff --git a/main/src/test/java/org/mobilitydata/gtfsvalidator/reportsummary/model/JsonReportSummaryGeneratorTest.java b/main/src/test/java/org/mobilitydata/gtfsvalidator/reportsummary/model/JsonReportSummaryGeneratorTest.java index b21ec17573..4c88cfaecc 100644 --- a/main/src/test/java/org/mobilitydata/gtfsvalidator/reportsummary/model/JsonReportSummaryGeneratorTest.java +++ b/main/src/test/java/org/mobilitydata/gtfsvalidator/reportsummary/model/JsonReportSummaryGeneratorTest.java @@ -47,6 +47,7 @@ private static ValidationRunnerConfig generateValidationRunnerConfig() throws Ex builder.setValidationReportFileName("some_report_filename"); builder.setDateForValidation(LocalDate.parse("2020-01-02")); builder.setStdoutOutput(false); + builder.setQuietLogs(false); return builder.build(); } From e912ed1e01e0485731ab250819e8efab12f375b5 Mon Sep 17 00:00:00 2001 From: Charlotte Wilson <251223230+cswilson252@users.noreply.github.com> Date: Tue, 12 May 2026 22:12:55 -0400 Subject: [PATCH 2/2] fix build error --- .../gtfsvalidator/runner/ValidationRunnerConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/src/main/java/org/mobilitydata/gtfsvalidator/runner/ValidationRunnerConfig.java b/main/src/main/java/org/mobilitydata/gtfsvalidator/runner/ValidationRunnerConfig.java index a4ed03f62d..738c86f9ee 100644 --- a/main/src/main/java/org/mobilitydata/gtfsvalidator/runner/ValidationRunnerConfig.java +++ b/main/src/main/java/org/mobilitydata/gtfsvalidator/runner/ValidationRunnerConfig.java @@ -83,7 +83,7 @@ public static Builder builder() { .setCountryCode(CountryCode.forStringOrUnknown(CountryCode.ZZ)) .setDateForValidation(LocalDate.now()) .setSkipValidatorUpdate(false) - .setStdoutOutput(false); + .setStdoutOutput(false) .setQuietLogs(false); }