io.standard-paths: adding support for PATHEXT.

db4
John Benediktsson 2015-06-01 14:57:47 -07:00
parent 071704072c
commit be9bff0e5b
1 changed files with 17 additions and 6 deletions

View File

@ -1,14 +1,25 @@
! Copyright (C) 2011 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: environment fry io.directories.search.windows io.files
io.pathnames io.standard-paths kernel sequences splitting
system unicode.case ;
USING: arrays assocs environment fry
io.directories.search.windows io.files io.pathnames
io.standard-paths kernel sequences splitting system
unicode.case ;
IN: io.standard-paths.windows
M: windows find-in-applications
'[ [ >lower _ tail? ] find-in-program-files ] map-find drop ;
M: windows find-in-path*
[ "PATH" os-env ";" split ] dip
'[ _ append-path exists? ] find nip ;
: path ( -- path )
"PATH" os-env ";" split "." prefix ;
: path-extensions ( command -- commands )
"PATHEXT" os-env [
";" split 2dup [ [ >lower ] bi@ tail? ] with any?
[ drop 1array ] [ [ append ] with map ] if
] [ 1array ] if* ;
M: windows find-in-path*
path-extensions path
cartesian-product flip concat
[ prepend-path ] { } assoc>map
[ exists? ] find nip ;