diff options
Diffstat (limited to 'gnu/packages/golang-web.scm')
-rw-r--r-- | gnu/packages/golang-web.scm | 354 |
1 files changed, 187 insertions, 167 deletions
diff --git a/gnu/packages/golang-web.scm b/gnu/packages/golang-web.scm index 3476b06461..71fe817e85 100644 --- a/gnu/packages/golang-web.scm +++ b/gnu/packages/golang-web.scm @@ -43,6 +43,7 @@ ;;; Copyright © 2025 Jussi Timperi <jussi.timperi@iki.fi> ;;; Copyright © 2025 Ashvith Shetty <ashvithshetty0010@zohomail.in> ;;; Copyright © 2025 Arthur Rodrigues <arthurhdrodrigues@proton.me> +;;; Copyright © 2025 David Thompson <davet@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -274,6 +275,47 @@ corresponds to the highest supported version of the gitea API, but backwards-compatibility is mostly given.") (license license:expat))) +(define-public go-connectrpc-com-connect + (package + (name "go-connectrpc-com-connect") + (version "1.18.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/connectrpc/connect-go") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0a6rzp57srhyf66jri62gfsj4ndpfxgb9ln15qdpfwv0xvcffz63")) + (modules '((guix build utils))) + (snippet + #~(begin + ;; Submodules with their own go.mod files and packaged separately: + ;; + ;; - connectrpc.com/connect/internal/conformance + (delete-file-recursively "internal/conformance"))))) + (build-system go-build-system) + (arguments + (list + #:import-path "connectrpc.com/connect" + ;; TODO: Generate with protoc-gen-go, protoc-gen-connect-go, and buf. + ;; See: <https://github.com/connectrpc/connect-go/blob/v1.18.1/Makefile#L80>. + #:test-flags #~(list "-short" "-skip" "TestVersion|TestGenerate"))) + (propagated-inputs + (list go-github-com-google-go-cmp + go-golang-org-x-net + go-google-golang-org-protobuf)) + (home-page "https://connectrpc.com/connect") + (synopsis "@acronym{RPC, Remote procedure call} framework built on +Protocol Buffers") + (description + "Package @code{connect} is a slim RPC framework built on Protocol Buffers +and @code{net/http}. In addition to supporting its own protocol, Connect +handlers and clients are wire-compatible with gRPC and gRPC-Web, including +streaming.") + (license license:asl2.0))) + (define-public go-git-sr-ht-adnano-go-gemini (package (name "go-git-sr-ht-adnano-go-gemini") @@ -453,7 +495,7 @@ handlers.") (define-public go-github-com-alexliesenfeld-health (package (name "go-github-com-alexliesenfeld-health") - (version "0.8.0") + (version "0.8.1") (source (origin (method git-fetch) @@ -462,7 +504,7 @@ handlers.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1fchlvxwidsscskwq07vhxfwcn5wbigbizi51619l8gg09mr158q")))) + (base32 "19p0rs1dmvf3cnylyykmmnma2g5x2vy8gasr2rjl28ma58w6l0d3")))) (build-system go-build-system) (arguments (list @@ -1077,18 +1119,11 @@ parameter types for AWS Secrets Manager.") ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "service" "sqs") (delete-all-but "." "service"))))) (build-system go-build-system) @@ -1578,7 +1613,7 @@ and reduce scope of key compromise. (define-public go-github-com-caddyserver-zerossl (package (name "go-github-com-caddyserver-zerossl") - (version "0.1.0") + (version "0.1.3") (source (origin (method git-fetch) @@ -1587,7 +1622,7 @@ and reduce scope of key compromise. (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0hr2kdabhm35hz5krp7m3g6wxvyb9xlqgmy3krf4wwb3yabsqp1m")))) + (base32 "16mrlmsl3ajdrn2qsdq51k79z3fi8v8j82r2c6xyj7mp2yr979h6")))) (build-system go-build-system) (arguments (list @@ -4175,6 +4210,30 @@ replacement for memcached in many cases. It provides a data loading mechanism with caching and de-duplication that works across a set of peer processes.") (license license:asl2.0))) +(define-public go-github-com-google-go-dap + (package + (name "go-github-com-google-go-dap") + (version "0.12.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/google/go-dap") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0c0941wxnpx3pscf08gr6vrn90rja8k8pjhl1px0r54kcjidd5js")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/google/go-dap")) + (home-page "https://github.com/google/go-dap") + (synopsis "Implementation of the Debug Adapter Protocol in Golang") + (description + "Package dap contains data types and code for Debug Adapter +Protocol (DAP) specification.") + (license license:asl2.0))) + (define-public go-github-com-google-go-github-v31 (package (name "go-github-com-google-go-github-v31") @@ -8706,7 +8765,7 @@ to @url{https://www.rfc-editor.org/rfc/rfc3550, RFC 3550}, (define-public go-github-com-pion-rtp (package (name "go-github-com-pion-rtp") - (version "1.8.11") + (version "1.8.21") (source (origin (method git-fetch) @@ -8715,11 +8774,13 @@ to @url{https://www.rfc-editor.org/rfc/rfc3550, RFC 3550}, (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1a4fj31j7glhfsnxxwm8r72l6capz9mh8kfr340659ahgiijdkcg")))) + (base32 "1hc5cdxgf0m44awvzzaby3hrlnhjbxjivl6981069xwgxspqakhm")))) (build-system go-build-system) (arguments (list #:import-path "github.com/pion/rtp")) + (native-inputs + (list go-github-com-stretchr-testify)) (propagated-inputs (list go-github-com-pion-randutil)) (home-page "https://github.com/pion/rtp") @@ -8821,7 +8882,7 @@ Protocol,SCTP} as specified in (package (inherit go-github-com-pion-srtp-v2) (name "go-github-com-pion-srtp-v3") - (version "3.0.4") + (version "3.0.7") (source (origin (method git-fetch) @@ -8830,7 +8891,7 @@ Protocol,SCTP} as specified in (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "03343fsgrawfy9plsl7y5022ygjln3jvsn3im5xl1qwnc68rb1a2")))) + (base32 "0l8y01ci5fsx8b6ajn9cvs45hqpz838x0jnyyj1p2z714nw9jh61")))) (arguments (list #:import-path "github.com/pion/srtp/v3")) @@ -10186,7 +10247,7 @@ Supports S3 and STS.") (define-public go-github-com-sourcegraph-jsonrpc2 (package (name "go-github-com-sourcegraph-jsonrpc2") - (version "0.2.0") + (version "0.2.1") (home-page "https://github.com/sourcegraph/jsonrpc2") (source (origin @@ -10196,7 +10257,7 @@ Supports S3 and STS.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1id35b4mhif9gy1b70mv0x7xkmpm2p8xydix8six10yjyhvm1wjh")))) + (base32 "0nxiq8da4x4sipjkap50cfzjg9b8vqm45w65hbjywwj6q73jl54a")))) (build-system go-build-system) (arguments '(#:import-path "github.com/sourcegraph/jsonrpc2")) @@ -10484,6 +10545,52 @@ runtime. It has zero dependencies, and doesn't rely on CGO. This means you can run applications in other languages and still keep cross compilation.") (license license:asl2.0))) +(define-public go-github-com-things-go-go-socks5 + (package + (name "go-github-com-things-go-go-socks5") + (version "0.0.6") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/things-go/go-socks5") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0r7v1bpja4j8q9bjh124w8l5m29vwnpaq0flm97izvzw4pcyxybf")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/things-go/go-socks5")) + (native-inputs + (list go-github-com-stretchr-testify)) + (propagated-inputs + (list go-golang-org-x-net)) + (home-page "https://github.com/things-go/go-socks5") + (synopsis "SOCKS5 with full TCP/UDP and IPv4/IPv6 support in Golang") + (description + "This package implements a @url{http://en.wikipedia.org/wiki/SOCKS, +SOCKS5}. SOCKS (Secure Sockets) is used to route traffic between a client and +server through an intermediate proxy layer. This can be used to bypass +firewalls or NATs. + +Features: +@itemize +@item support socks5 server +@item support TCP/UDP and IPv4/IPv6 +@item unit tests +@item \"No Auth\" mode +@item user/password authentication optional user addr limit +@item support for the CONNECT command +@item support for the ASSOCIATE command +@item rules to do granular filtering of commands +@item custom DNS resolution +@item custom goroutine pool +@item buffer pool design and optional custom buffer pool +@item custom logger +@end itemize") + (license license:expat))) + (define-public go-github-com-tj-go-elastic (package (name "go-github-com-tj-go-elastic") @@ -11864,18 +11971,11 @@ Handler) and routes @code{WithRouteTag}.") ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "propagators" "autoprop") (delete-all-but "." "propagators"))))) (build-system go-build-system) @@ -12109,9 +12209,9 @@ go.opentelemetry.io/otel/trace.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/open-telemetry/opentelemetry-go") - (commit (go-version->git-ref version - #:subdir "exporters/otlp/otlptrace")))) + (url "https://github.com/open-telemetry/opentelemetry-go") + (commit (go-version->git-ref version + #:subdir "exporters/otlp/otlptrace")))) (file-name (git-file-name name version)) (sha256 (base32 "1kvfbqc56p1h9rh9cvgn37ya6k10613r0f2rhjiwrrkgs2mszk30")) @@ -12124,18 +12224,11 @@ go.opentelemetry.io/otel/trace.") ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "exporters/otlp" "otlptrace") (delete-all-but "." "exporters") ;; Submodules with their own go.mod files and packed as separated @@ -12171,9 +12264,9 @@ go.opentelemetry.io/otel/trace.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/open-telemetry/opentelemetry-go") - (commit (go-version->git-ref version - #:subdir "exporters/otlp/otlptrace/otlptracegrpc")))) + (url "https://github.com/open-telemetry/opentelemetry-go") + (commit (go-version->git-ref version + #:subdir "exporters/otlp/otlptrace/otlptracegrpc")))) (file-name (git-file-name name version)) (sha256 (base32 "1kvfbqc56p1h9rh9cvgn37ya6k10613r0f2rhjiwrrkgs2mszk30")) @@ -12186,18 +12279,11 @@ go.opentelemetry.io/otel/trace.") ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "exporters/otlp/otlptrace" "otlptracegrpc") (delete-all-but "." "exporters"))))) (build-system go-build-system) @@ -12234,9 +12320,9 @@ By default the telemetry is sent to @@url{https://localhost:4317}.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/open-telemetry/opentelemetry-go") - (commit (go-version->git-ref version - #:subdir "exporters/otlp/otlptrace/otlptracehttp")))) + (url "https://github.com/open-telemetry/opentelemetry-go") + (commit (go-version->git-ref version + #:subdir "exporters/otlp/otlptrace/otlptracehttp")))) (file-name (git-file-name name version)) (sha256 (base32 "1kvfbqc56p1h9rh9cvgn37ya6k10613r0f2rhjiwrrkgs2mszk30")) @@ -12249,18 +12335,11 @@ By default the telemetry is sent to @@url{https://localhost:4317}.") ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "exporters/otlp/otlptrace" "otlptracehttp") (delete-all-but "." "exporters"))))) (build-system go-build-system) @@ -12328,9 +12407,9 @@ telemetry to be written to an output destination as JSON.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/open-telemetry/opentelemetry-go") - (commit (go-version->git-ref version - #:subdir "exporters/zipkin")))) + (url "https://github.com/open-telemetry/opentelemetry-go") + (commit (go-version->git-ref version + #:subdir "exporters/zipkin")))) (file-name (git-file-name name version)) (sha256 (base32 "1kvfbqc56p1h9rh9cvgn37ya6k10613r0f2rhjiwrrkgs2mszk30")) @@ -12343,18 +12422,11 @@ telemetry to be written to an output destination as JSON.") ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "exporters" "zipkin") (delete-all-but "." "exporters"))))) (build-system go-build-system) @@ -12383,9 +12455,9 @@ telemetry to be written to an output destination as JSON.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/open-telemetry/opentelemetry-go") - (commit (go-version->git-ref version - #:subdir "log")))) + (url "https://github.com/open-telemetry/opentelemetry-go") + (commit (go-version->git-ref version + #:subdir "log")))) (file-name (git-file-name name version)) (sha256 (base32 "0sb36qyq389fif9qp5iiqp6w41dfcwi95gb0bsbvznvijhd8c1cc")) @@ -12398,18 +12470,11 @@ telemetry to be written to an output destination as JSON.") ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "." "log"))))) (build-system go-build-system) (arguments @@ -12450,8 +12515,8 @@ OpenTelemetry API."))) (origin (method git-fetch) (uri (git-reference - (url "https://github.com/open-telemetry/opentelemetry-go") - (commit (go-version->git-ref version #:subdir "sdk")))) + (url "https://github.com/open-telemetry/opentelemetry-go") + (commit (go-version->git-ref version #:subdir "sdk")))) (file-name (git-file-name name version)) (sha256 (base32 "0sb36qyq389fif9qp5iiqp6w41dfcwi95gb0bsbvznvijhd8c1cc")) @@ -12464,18 +12529,11 @@ OpenTelemetry API."))) ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "." "sdk") (delete-file-recursively "sdk/log") (delete-file-recursively "sdk/metric"))))) @@ -12506,9 +12564,9 @@ OpenTelemetry API."))) (origin (method git-fetch) (uri (git-reference - (url "https://github.com/open-telemetry/opentelemetry-go") - (commit (go-version->git-ref version - #:subdir "sdk/log")))) + (url "https://github.com/open-telemetry/opentelemetry-go") + (commit (go-version->git-ref version + #:subdir "sdk/log")))) (file-name (git-file-name name version)) (sha256 (base32 "0sb36qyq389fif9qp5iiqp6w41dfcwi95gb0bsbvznvijhd8c1cc")) @@ -12521,18 +12579,11 @@ OpenTelemetry API."))) ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "sdk" "log") (delete-all-but "." "sdk"))))) (build-system go-build-system) @@ -12561,9 +12612,9 @@ OpenTelemetry API."))) (origin (method git-fetch) (uri (git-reference - (url "https://github.com/open-telemetry/opentelemetry-go") - (commit (go-version->git-ref version - #:subdir "sdk/metric")))) + (url "https://github.com/open-telemetry/opentelemetry-go") + (commit (go-version->git-ref version + #:subdir "sdk/metric")))) (file-name (git-file-name name version)) (sha256 (base32 "0sb36qyq389fif9qp5iiqp6w41dfcwi95gb0bsbvznvijhd8c1cc")) @@ -12576,18 +12627,11 @@ OpenTelemetry API."))) ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "sdk" "metric") (delete-all-but "." "sdk"))))) (build-system go-build-system) @@ -12752,7 +12796,7 @@ the standard @code{context} package to store request-scoped values.") (define-public go-golang-zx2c4-com-wireguard (package (name "go-golang-zx2c4-com-wireguard") - (version "0.0.0-20231211153847-12269c276173") + (version "0.0.0-20250521234502-f333402bd9cb") (source (origin (method git-fetch) @@ -12764,33 +12808,16 @@ the standard @code{context} package to store request-scoped values.") (commit (go-version->git-ref version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1fbc6m0ahifhrd6jdrpdxi8l3b2slpp8fmv20kpq2yzz19vzzgkf")))) + (base32 "1h4rmdvssk939gk31f0sfwa1yaks72zk8rkcs7fj3qcvl8sgq6hr")))) (build-system go-build-system) (arguments (list - #:import-path "golang.zx2c4.com/wireguard" - #:phases - #~(modify-phases %standard-phases - ;; XXX: Workaround for go-build-system's lack of Go modules - ;; support. - (replace 'check - (lambda* (#:key tests? import-path #:allow-other-keys) - (when tests? - (with-directory-excursion (string-append "src/" import-path) - (invoke "go" "test" "-v" - ;; "./tune/..." ; Requires gvisor.dev/gvisor, not packed yet - "./" - "./conn/..." - "./device/..." - "./ipc/..." - "./ratelimiter/..." - "./replay/..." - "./rwcancel/..." - "./tai64n/...")))))))) + #:import-path "golang.zx2c4.com/wireguard")) (propagated-inputs (list go-golang-org-x-crypto go-golang-org-x-net - go-golang-org-x-sys)) + go-golang-org-x-sys + go-gvisor-dev-gvisor)) (home-page "https://git.zx2c4.com/wireguard") (synopsis "Implementation of WireGuard in Go") (description "This package is a Go Implementation of WireGuard.") @@ -12804,8 +12831,8 @@ the standard @code{context} package to store request-scoped values.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/googleapis/go-genproto") - (commit (go-version->git-ref version #:subdir "googleapis/api")))) + (url "https://github.com/googleapis/go-genproto") + (commit (go-version->git-ref version #:subdir "googleapis/api")))) (modules '((guix build utils) (ice-9 ftw) (srfi srfi-26))) @@ -12815,18 +12842,11 @@ the standard @code{context} package to store request-scoped values.") ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) ;; Submodules with their own go.mod files and packaged separately: ;; ;; - google.golang.org/genproto/googleapis/api/apikeys |