(define-module (tw packages development) #:use-module (gnu packages golang) #:use-module (guix build-system go) #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages)) ;; Required by actionlint. (define-public go-golang.org-x-sync-semaphore (package (inherit go-golang.org-x-sync-errgroup) (name "go-golang.org-x-sync-semaphore") (arguments '(#:import-path "golang.org/x/sync/semaphore" #:unpack-path "golang.org/x/sync")) (synopsis "Weighted semaphore implementation in Go") (description "Weighted semaphore implementation in Go.") (home-page "https://godoc.org/golang.org/x/sync/semaphore"))) ;; Required by actionlint. The version of `go-github-com-robfig-cron' ;; packaged in Guix is newer and changed some error messages, causing ;; unit tests in actionlint to fail. (define-public go-github-com-robfig-cron-1.2 (package (inherit go-github-com-robfig-cron) (name "go-github-com-robfig-cron") (version "1.2.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/robfig/cron") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "0nv31m3940d9kf38lw2zs4hpj435bdi9mmim098rb3n4l07qrvva")))))) (define-public actionlint (package (name "actionlint") (version "1.6.22") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/rhysd/actionlint") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1fd1dc0xw71q8a5dx41vsxay7x2r9lw08gfxchp9blimabm68j0s")))) (build-system go-build-system) (arguments '(#:import-path "github.com/rhysd/actionlint/cmd/actionlint" #:unpack-path "github.com/rhysd/actionlint" #:install-source? #f)) (inputs (list go-github-com-fatih-color go-github-com-mattn-go-colorable go-github-com-mattn-go-runewidth go-github-com-robfig-cron-1.2 go-golang.org-x-sync-errgroup go-golang.org-x-sync-semaphore go-gopkg-in-yaml-v3)) (native-inputs (list go-github-com-google-go-cmp-cmp)) ; for tests (home-page "https://rhysd.github.io/actionlint/") (synopsis "Static checker for GitHub Actions workflow files") (description "actionlint is a static checker for GitHub Actions workflow files. Features include: @itemize @item Syntax check for workflow files to check unexpected or missing keys following workflow syntax @item Strong type check for @code{$@{@{ @}@}} expressions to catch several semantic errors like access to not existing property, type mismatches, ... @item Actions usage check to check that inputs at @code{with:} and outputs in @code{steps.@{id@}.outputs} are correct @item Reusable workflow check to check inputs/outputs/secrets of reusable workflows and workflow calls @item shellcheck and pyflakes integrations for scripts at @code{run:} @item Security checks; script injection by untrusted inputs, hard-coded credentials @item Other several useful checks; glob syntax validation, dependencies check for @code{needs:}, runner label validation, cron syntax validation, ... @end itemize ") (license license:expat)))