factor/basis/io/standard-paths/windows/windows.factor

27 lines
861 B
Factor
Raw Normal View History

! Copyright (C) 2011 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: arrays combinators.smart environment fry
io.directories.search io.files io.pathnames io.standard-paths
kernel sequences sets splitting system unicode windows.shell32 ;
IN: io.standard-paths.windows
: program-files-directories ( -- array )
[
program-files
program-files-x86
"ProgramW6432" os-env
] output>array harvest members ; inline
: find-in-program-files ( base-directory quot -- path )
t swap [
[ program-files-directories ] dip '[ _ append-path ] map
] 2dip find-file-in-directories ; inline
M: windows find-in-applications
>lower
'[ [ >lower _ tail? ] find-in-program-files ] map-find drop ;
M: windows find-in-path*
[ "PATH" os-env ";" split ] dip
'[ _ append-path exists? ] find nip ;