aboutsummaryrefslogtreecommitdiffstats
path: root/gitto/ui.scm
diff options
context:
space:
mode:
authorGravatar Tom Willemse2014-03-03 23:59:19 +0100
committerGravatar Tom Willemse2014-03-04 00:06:51 +0100
commit3c831f9381d8268cf07d659419066e03979e19b0 (patch)
tree952fe93050f31eb1dd876856c7b8b886dc94becd /gitto/ui.scm
parent53db54e71da298fca37e5ae10ca8295ba33af441 (diff)
downloadgitto-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.scm27
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)))))