mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-25 05:48:07 -05:00
import: utils: Add string helpers.
* guix/import/utils.scm (read-lines, chunk-lines): New procedures.
This commit is contained in:
parent
89618fa8b8
commit
6b46b04f91
1 changed files with 27 additions and 1 deletions
|
@ -34,6 +34,8 @@ (define-module (guix import utils)
|
||||||
#:use-module (guix download)
|
#:use-module (guix download)
|
||||||
#:use-module (gnu packages)
|
#:use-module (gnu packages)
|
||||||
#:use-module (ice-9 match)
|
#:use-module (ice-9 match)
|
||||||
|
#:use-module (ice-9 rdelim)
|
||||||
|
#:use-module (ice-9 receive)
|
||||||
#:use-module (ice-9 regex)
|
#:use-module (ice-9 regex)
|
||||||
#:use-module (srfi srfi-1)
|
#:use-module (srfi srfi-1)
|
||||||
#:use-module (srfi srfi-11)
|
#:use-module (srfi srfi-11)
|
||||||
|
@ -56,7 +58,10 @@ (define-module (guix import utils)
|
||||||
snake-case
|
snake-case
|
||||||
beautify-description
|
beautify-description
|
||||||
|
|
||||||
alist->package))
|
alist->package
|
||||||
|
|
||||||
|
read-lines
|
||||||
|
chunk-lines))
|
||||||
|
|
||||||
(define (factorize-uri uri version)
|
(define (factorize-uri uri version)
|
||||||
"Factorize URI, a package tarball URI as a string, such that any occurrences
|
"Factorize URI, a package tarball URI as a string, such that any occurrences
|
||||||
|
@ -329,3 +334,24 @@ (define (alist->package meta)
|
||||||
(or (module-ref (resolve-interface '(guix licenses) #:prefix 'license:)
|
(or (module-ref (resolve-interface '(guix licenses) #:prefix 'license:)
|
||||||
(spdx-string->license l))
|
(spdx-string->license l))
|
||||||
(license:fsdg-compatible l))))))
|
(license:fsdg-compatible l))))))
|
||||||
|
|
||||||
|
(define* (read-lines #:optional (port (current-input-port)))
|
||||||
|
"Read lines from PORT and return them as a list."
|
||||||
|
(let loop ((line (read-line port))
|
||||||
|
(lines '()))
|
||||||
|
(if (eof-object? line)
|
||||||
|
(reverse lines)
|
||||||
|
(loop (read-line port)
|
||||||
|
(cons line lines)))))
|
||||||
|
|
||||||
|
(define* (chunk-lines lines #:optional (pred string-null?))
|
||||||
|
"Return a list of chunks, each of which is a list of lines. The chunks are
|
||||||
|
separated by PRED."
|
||||||
|
(let loop ((rest lines)
|
||||||
|
(parts '()))
|
||||||
|
(receive (before after)
|
||||||
|
(break pred rest)
|
||||||
|
(let ((res (cons before parts)))
|
||||||
|
(if (null? after)
|
||||||
|
(reverse res)
|
||||||
|
(loop (cdr after) res))))))
|
||||||
|
|
Loading…
Reference in a new issue