1 ! Copyright (C) 2011 Doug Coleman.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: arrays combinators.smart environment fry
4 io.directories io.files io.pathnames io.standard-paths
5 kernel sequences sets splitting system unicode windows.shell32 ;
6 IN: io.standard-paths.windows
8 : program-files-directories ( -- array )
13 "LOCALAPPDATA" os-env "Programs" append-path
14 ] output>array harvest members ; inline
16 : find-in-program-files ( base-directory quot -- path )
17 [ program-files-directories ]
18 [ '[ _ append-path ] map ]
19 [ find-file-in-directories ] tri* ; inline
21 M: windows find-in-applications
23 '[ [ >lower _ tail? ] find-in-program-files ] map-find drop ;
25 M: windows find-in-path*
26 [ "PATH" os-env ";" split ] dip
27 '[ _ append-path file-exists? ] find nip ;