racket/collects/setup/private/command-name.rkt
2010-09-10 06:59:49 -05:00

35 lines
1.5 KiB
Racket

;; The `setup' tool loads this module with bytecode files disabled,
;; so minimize its dependencies
(module command-name '#%kernel
(#%require raco/command-name '#%utils)
(#%provide get-names)
(define-values (get-names)
(lambda ()
(let-values ([(p) (find-system-path 'run-file)])
(let-values ([(p) (if (eq? (system-type) 'windows)
(path-replace-suffix p #"")
p)])
(let-values ([(base name dir?) (split-path p)])
(if (current-command-name)
(values (format "~a ~a" name (current-command-name))
(program+command-name)
#t)
;; Hack for bootstrapping, if the program name is "raco",
;; then claim to be the "setup" command:
;; if the program name is "racket", assume that there's a "racket -l setup"
;; going on in there and also claim to be the "raco setup" command
(if (if (equal? (path->string name) "raco")
#t
(equal? (path->string name) "racket"))
(values "raco setup"
(string-append (regexp-replace*
#rx"racket$"
(format "~a" p)
"raco")
" setup")
#t)
(values (path->string name) p #f)))))))))