diff options
author | Mathieu Othacehe <m.othacehe@gmail.com> | 2018-12-05 14:24:04 +0900 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2019-01-17 14:04:22 +0100 |
commit | 3ad8f7757c840de290a6035747578a18ff7279da (patch) | |
tree | 297270f20f55ef118fb4414a530f5ecb70179412 /gnu/installer | |
parent | 5cdb6bd2db0b465fa616a9fd36760b14844d5c48 (diff) | |
download | guix-3ad8f7757c840de290a6035747578a18ff7279da.tar.gz |
installer: Add new utils.
* gnu/installer/utils.scm (nearest-exact-integer): New exported procedure, (read-percentage): ditto, (run-shell-command): ditto.
Diffstat (limited to 'gnu/installer')
-rw-r--r-- | gnu/installer/utils.scm | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/gnu/installer/utils.scm b/gnu/installer/utils.scm index 5087683715..e91f90a84d 100644 --- a/gnu/installer/utils.scm +++ b/gnu/installer/utils.scm @@ -17,10 +17,16 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu installer utils) + #:use-module (guix utils) + #:use-module (guix build utils) #:use-module (ice-9 rdelim) + #:use-module (ice-9 regex) #:use-module (ice-9 textual-ports) #:export (read-lines - read-all)) + read-all + nearest-exact-integer + read-percentage + run-shell-command)) (define* (read-lines #:optional (port (current-input-port))) "Read lines from PORT and return them as a list." @@ -35,3 +41,23 @@ "Return the content of the given FILE as a string." (call-with-input-file file get-string-all)) + +(define (nearest-exact-integer x) + "Given a real number X, return the nearest exact integer, with ties going to +the nearest exact even integer." + (inexact->exact (round x))) + +(define (read-percentage percentage) + "Read PERCENTAGE string and return the corresponding percentage as a +number. If no percentage is found, return #f" + (let ((result (string-match "^([0-9]+)%$" percentage))) + (and result + (string->number (match:substring result 1))))) + +(define (run-shell-command command) + (call-with-temporary-output-file + (lambda (file port) + (format port "~a~%" command) + ;; (format port "exit~%") + (close port) + (invoke "bash" "--init-file" file)))) |