From be25e487f1e97ec2e6e706c2864323e4b6ed6a22 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sun, 1 Sep 2019 14:11:50 +0100 Subject: Support filtering lint warnings by linter --- guix-data-service/model/lint-warning.scm | 16 ++++++++++++++-- guix-data-service/web/controller.scm | 11 +++++++++-- guix-data-service/web/view/html.scm | 11 +++++------ 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/guix-data-service/model/lint-warning.scm b/guix-data-service/model/lint-warning.scm index 0b82a62..25678a8 100644 --- a/guix-data-service/model/lint-warning.scm +++ b/guix-data-service/model/lint-warning.scm @@ -59,13 +59,25 @@ INNER JOIN lint_warning_message_sets INNER JOIN lint_warning_messages ON lint_warning_messages.locale = 'en_US.utf8' AND lint_warning_messages.id = ANY (lint_warning_message_sets.message_ids) -WHERE lint_warnings.id IN ( +" + (if linters + (string-append + "INNER JOIN (VALUES " + (string-join + (map (lambda (lint-checker-name) + (simple-format + #f "($STR$~A$STR$)" lint-checker-name)) + linters) + ",") + ") AS linters (name) ON lint_checkers.name = linters.name ") + "") +"WHERE lint_warnings.id IN ( SELECT lint_warning_id FROM guix_revision_lint_warnings INNER JOIN guix_revisions ON guix_revision_id = guix_revisions.id WHERE commit = $1 )" - (if package-query +(if package-query " AND to_tsvector(packages.name) @@ plainto_tsquery($2)" "") (if message-query diff --git a/guix-data-service/web/controller.scm b/guix-data-service/web/controller.scm index f7cd42f..8712121 100644 --- a/guix-data-service/web/controller.scm +++ b/guix-data-service/web/controller.scm @@ -344,6 +344,13 @@ `("Revision " (samp ,commit-hash))) (header-link (string-append "/revision/" commit-hash))) + (define lint-checker-options + (map (match-lambda + ((name description network-dependent) + (cons (string-append name ": " description ) + name))) + (lint-checkers-for-revision conn commit-hash))) + (if (any-invalid-query-parameters? query-parameters) (case (most-appropriate-mime-type '(application/json text/html) @@ -356,7 +363,7 @@ #:sxml (view-revision-lint-warnings commit-hash query-parameters '() - '() + lint-checker-options #:path-base path-base #:header-text header-text #:header-link header-link)))) @@ -406,7 +413,7 @@ query-parameters lint-warnings git-repositories - '() + lint-checker-options #:path-base path-base #:header-text header-text #:header-link header-link) diff --git a/guix-data-service/web/view/html.scm b/guix-data-service/web/view/html.scm index 3dc3e8f..ac3ec03 100644 --- a/guix-data-service/web/view/html.scm +++ b/guix-data-service/web/view/html.scm @@ -739,12 +739,11 @@ "Package query" query-parameters #:help-text "Lint warnings where the package name matches the query.") - ;; TODO as there's not an easy way to find all the relevant lint checkers - ;; ,(form-horizontal-control - ;; "Linter" query-parameters - ;; #:options lint-checker-options - ;; #:help-text - ;; "Lint warnings for specific lint checkers.") + ,(form-horizontal-control + "Linter" query-parameters + #:options lint-checker-options + #:help-text + "Lint warnings for specific lint checkers.") ,(form-horizontal-control "Message query" query-parameters #:help-text -- cgit v1.2.3