]> gitweb.factorcode.org Git - factor.git/blob - basis/environment/environment.factor
4647fb45787346539beca577197865680321fd4f
[factor.git] / basis / environment / environment.factor
1 ! Copyright (C) 2008 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: assocs combinators continuations init kernel sequences
4 splitting system vocabs vocabs.loader ;
5 IN: environment
6
7 HOOK: os-env os ( key -- value )
8
9 HOOK: set-os-env os ( value key -- )
10
11 HOOK: unset-os-env os ( key -- )
12
13 HOOK: (os-envs) os ( -- seq )
14
15 HOOK: (set-os-envs) os ( seq -- )
16
17 HOOK: set-os-envs-pointer os ( malloc -- )
18
19 : change-os-env ( key quot -- )
20     [ [ os-env ] keep ] dip dip set-os-env ; inline
21
22 : os-envs ( -- assoc )
23     (os-envs) [ "=" split1 ] H{ } map>assoc ;
24
25 : set-os-envs ( assoc -- )
26     [ "=" glue ] { } assoc>map (set-os-envs) ;
27
28 : with-os-env ( value key quot -- )
29     over [ [ [ set-os-env ] 2curry ] [ compose ] bi* ] dip
30     [ os-env ] keep [ set-os-env ] 2curry finally ; inline
31
32 {
33     { [ os unix? ] [ "environment.unix" require ] }
34     { [ os windows? ] [ "environment.windows" require ] }
35 } cond
36
37 STARTUP-HOOK: [
38     "FACTOR_ROOTS" os-env [
39         os windows? ";" ":" ? split
40         [ add-vocab-root ] each
41     ] when*
42 ]