diff options
author | Tom Willemse | 2014-03-03 23:59:19 +0100 |
---|---|---|
committer | Tom Willemse | 2014-03-04 00:06:51 +0100 |
commit | 3c831f9381d8268cf07d659419066e03979e19b0 (patch) | |
tree | 952fe93050f31eb1dd876856c7b8b886dc94becd /gitto/ui.scm | |
parent | 53db54e71da298fca37e5ae10ca8295ba33af441 (diff) | |
download | gitto-3c831f9381d8268cf07d659419066e03979e19b0.tar.gz gitto-3c831f9381d8268cf07d659419066e03979e19b0.zip |
Allow a name to be used to remove a repository
Allow users to specify a name instead of a path to remove a repository
from the repository list. Paths may also still be used.
Diffstat (limited to 'gitto/ui.scm')
-rw-r--r-- | gitto/ui.scm | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/gitto/ui.scm b/gitto/ui.scm index fffe080..093e784 100644 --- a/gitto/ui.scm +++ b/gitto/ui.scm @@ -17,8 +17,11 @@ ;; along with gitto. If not, see <http://www.gnu.org/licenses/>. (define-module (gitto ui) + #:use-module (ice-9 format) + #:use-module (ice-9 i18n) #:use-module (ice-9 rdelim) - #:export (y-or-n?)) + #:export (y-or-n? + choose)) (define* (y-or-n? prompt #:key (default #f)) (format #t "~a [~a] " prompt (if default "Y/n" "y/N")) @@ -35,3 +38,25 @@ (display "Invalid response, please use `y' or `n'.") (newline) (y-or-n? prompt #:default default))))) + +(define* (choose collection prompt #:optional (key identity)) + "Ask the user to choose one of COLLECTION. + +PROMPT is the question to ask the user and KEY is the function to use +to present the options to the user." + (format #t "~a~%~%Choose one:~%~%" prompt) + + (do ((idx 1 (1+ idx)) + (cll collection (cdr cll))) + ((null? cll)) + (format #t "~3d. ~a~%" idx (key (car cll)))) + + (newline) + (display "Your Choice: ") + + (let ((response (locale-string->integer (read-line)))) + (if (and response (<= 1 response (length collection))) + (list-ref collection (1- response)) + (begin + (format #t "Improper response.~%") + (choose collection prompt key))))) |