aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2019-09-01 14:11:50 +0100
committerChristopher Baines <mail@cbaines.net>2019-09-01 18:32:09 +0100
commitbe25e487f1e97ec2e6e706c2864323e4b6ed6a22 (patch)
treef10ba76e293483a8c347f2b0f1f9f2d808ef2529
parent2bfd81ee1b9f1ee14d58938942409698dc40ece9 (diff)
downloaddata-service-be25e487f1e97ec2e6e706c2864323e4b6ed6a22.tar
data-service-be25e487f1e97ec2e6e706c2864323e4b6ed6a22.tar.gz
Support filtering lint warnings by linter
-rw-r--r--guix-data-service/model/lint-warning.scm16
-rw-r--r--guix-data-service/web/controller.scm11
-rw-r--r--guix-data-service/web/view/html.scm11
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