From 64d81df4ce47a8977b37baf1a68ca983c2dd99a1 Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Mon, 14 Aug 2023 11:43:17 +0300 Subject: Add CI/CD definitions for gn-auth --- genenetwork/development-helper.scm | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'genenetwork') diff --git a/genenetwork/development-helper.scm b/genenetwork/development-helper.scm index 81bfc3b..627a80a 100644 --- a/genenetwork/development-helper.scm +++ b/genenetwork/development-helper.scm @@ -101,3 +101,40 @@ with genenetwork3 dependencies." (find-files "." shell-script?)) (invoke "pylint" "main.py" "setup.py" "wsgi.py" "setup_commands" "tests" "gn3" "scripts" "sheepdog")) (mkdir-p #$output))))) + +(define (genenetwork-lint-gexp source-repo-checkout profile files-and-modules) + "Return a G-expression that runs GeneNetwork3 lint tests in PROFILE +with SOURCE-REPO-CHECKOUT as the current directory. SOURCE-REPO-CHECKOUT +is a checkout of the genenetwork3 source code. PROFILE is a profile +with genenetwork3 dependencies." + (with-imported-modules '((guix build utils)) + (with-profile profile + #~(begin + (use-modules (rnrs exceptions) + (srfi srfi-26) + (ice-9 rdelim) + (guix build utils)) + + (define (shell-script? filename stat-obj) + (and (eq? (stat:type stat-obj) 'regular) + (call-with-input-file filename + (lambda (port) + (let ((first-line (read-line port))) + (and (not (eof-object? first-line)) + (> (string-length first-line) 2) + (string=? (string-take first-line 2) "#!") + (or (string-contains first-line "/bin/sh") + (string-contains first-line "/bin/bash")))))))) + + (chdir #$source-repo-checkout) + (guard (condition ((invoke-error? condition) + (format (current-error-port) + "`~a~{ ~a~}' failed with exit status ~a~%" + (invoke-error-program condition) + (invoke-error-arguments condition) + (invoke-error-exit-status condition)) + (exit #f))) + (for-each (cut invoke "shellcheck" <>) + (find-files "." shell-script?)) + (invoke "pylint" #$@files-and-modules)) + (mkdir-p #$output))))) -- cgit v1.2.3