]> gitweb.factorcode.org Git - factor.git/blob - basis/io/standard-paths/windows/windows.factor
io.files: exists? -> file-exists? and rename primitive.
[factor.git] / basis / io / standard-paths / windows / windows.factor
1 ! Copyright (C) 2011 Doug Coleman.
2 ! See http://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
7
8 : program-files-directories ( -- array )
9     [
10         program-files
11         program-files-x86
12         "ProgramW6432" os-env
13         "LOCALAPPDATA" os-env "Programs" append-path
14     ] output>array harvest members ; inline
15
16 : find-in-program-files ( base-directory quot -- path )
17     [ program-files-directories ]
18     [ '[ _ append-path ] map ]
19     [ find-file-in-directories ] tri* ; inline
20
21 M: windows find-in-applications
22     >lower
23     '[ [ >lower _ tail? ] find-in-program-files ] map-find drop ;
24
25 M: windows find-in-path*
26     [ "PATH" os-env ";" split ] dip
27     '[ _ append-path file-exists? ] find nip ;