utils: Add 'switch-symlinks', moved from (guix ui).

* guix/ui.scm (switch-symlinks): Move to...
* guix/utils.scm: ... here.  New procedure.
* guix/scripts/pull.scm: Use it.
master
Ludovic Courtès 2015-10-26 22:17:25 +01:00
parent 65797bfffd
commit 3bb168b099
3 changed files with 9 additions and 8 deletions

View File

@ -18,6 +18,7 @@
(define-module (guix scripts pull) (define-module (guix scripts pull)
#:use-module (guix ui) #:use-module (guix ui)
#:use-module (guix utils)
#:use-module (guix scripts) #:use-module (guix scripts)
#:use-module (guix store) #:use-module (guix store)
#:use-module (guix config) #:use-module (guix config)

View File

@ -73,7 +73,6 @@
read/eval read/eval
read/eval-package-expression read/eval-package-expression
location->string location->string
switch-symlinks
config-directory config-directory
fill-paragraph fill-paragraph
texi->plain-text texi->plain-text
@ -715,13 +714,6 @@ replacement if PORT is not Unicode-capable."
(($ <location> file line column) (($ <location> file line column)
(format #f "~a:~a:~a" file line column)))) (format #f "~a:~a:~a" file line column))))
(define (switch-symlinks link target)
"Atomically switch LINK, a symbolic link, to point to TARGET. Works
both when LINK already exists and when it does not."
(let ((pivot (string-append link ".new")))
(symlink target pivot)
(rename-file pivot link)))
(define (config-directory) (define (config-directory)
"Return the name of the configuration directory, after making sure that it "Return the name of the configuration directory, after making sure that it
exists. Honor the XDG specs, exists. Honor the XDG specs,

View File

@ -74,6 +74,7 @@
arguments-from-environment-variable arguments-from-environment-variable
file-extension file-extension
file-sans-extension file-sans-extension
switch-symlinks
call-with-temporary-output-file call-with-temporary-output-file
call-with-temporary-directory call-with-temporary-directory
with-atomic-file-output with-atomic-file-output
@ -557,6 +558,13 @@ minor version numbers from version-string."
(substring file 0 dot) (substring file 0 dot)
file))) file)))
(define (switch-symlinks link target)
"Atomically switch LINK, a symbolic link, to point to TARGET. Works
both when LINK already exists and when it does not."
(let ((pivot (string-append link ".new")))
(symlink target pivot)
(rename-file pivot link)))
(define* (string-replace-substring str substr replacement (define* (string-replace-substring str substr replacement
#:optional #:optional
(start 0) (start 0)