Catch all errors so credentials are tried
This commit is contained in:
parent
259e3a6fe1
commit
9b1c71a381
|
@ -1,24 +1,26 @@
|
|||
#lang racket/base
|
||||
|
||||
(require net/git-checkout
|
||||
racket/list
|
||||
"config.rkt")
|
||||
|
||||
(provide call-with-git-checkout-credentials)
|
||||
|
||||
(define (call-with-git-checkout-credentials thunk)
|
||||
(define (call-with-git-checkout-credentials t)
|
||||
(let loop ([credentials-list (cons #f (get-git-checkout-credentials))])
|
||||
(define credentials (first credentials-list))
|
||||
(with-handlers ([exn:fail:git? (λ (exn)
|
||||
(if (empty? (rest credentials-list))
|
||||
(raise exn)
|
||||
(loop (rest credentials-list))))])
|
||||
(with-handlers ([exn:fail?
|
||||
(λ (x)
|
||||
(if (empty? (rest credentials-list))
|
||||
(raise x)
|
||||
(loop (rest credentials-list))))])
|
||||
(define c (make-custodian))
|
||||
(parameterize ([current-custodian c]
|
||||
[current-git-username (and credentials (hash-ref credentials 'username))]
|
||||
[current-git-password (and credentials (hash-ref credentials 'password))])
|
||||
[current-git-username
|
||||
(and credentials (hash-ref credentials 'username))]
|
||||
[current-git-password
|
||||
(and credentials (hash-ref credentials 'password))])
|
||||
(dynamic-wind
|
||||
void
|
||||
thunk
|
||||
t
|
||||
(lambda ()
|
||||
(custodian-shutdown-all c)))))))
|
||||
|
|
Loading…
Reference in New Issue
Block a user