/git-version.rkt

http://github.com/elibarzilay/rudybot · Racket · 22 lines · 15 code · 4 blank · 3 comment · 4 complexity · 1b546fee11abd9c299b7768a3d20e415 MD5 · raw file

  1. #lang racket/base
  2. (require scheme/contract "utils.rkt")
  3. (define git-versions (make-hash))
  4. (define (git-version [style 'short])
  5. (if (eq? style 'reset!)
  6. (set! git-versions (make-hash))
  7. ;; TODO -- run "git diff-index --name-only HEAD --" (just as
  8. ;; /usr/local/src/git/GIT-VERSION-GEN does) to see if the working
  9. ;; tree is "dirty", and so indicate in our output.
  10. (or (hash-ref git-versions style #f)
  11. (let ([r (run-command "git" "log"
  12. (format "--pretty=format:%~a"
  13. (case style ((short) "h") (else "H")))
  14. "-1")])
  15. (hash-set! git-versions style r)
  16. r))))
  17. (provide/contract
  18. [git-version (->* () ((or/c 'short 'complete 'reset!)) any)])