]> gitweb.factorcode.org Git - factor.git/blob - core/command-line/command-line.factor
Merge branch 'master' of git://factorcode.org/git/factor
[factor.git] / core / command-line / command-line.factor
1 ! Copyright (C) 2003, 2007 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: init continuations debugger hashtables io kernel
4 kernel.private namespaces parser sequences strings system
5 splitting io.files ;
6 IN: command-line
7
8 : run-bootstrap-init ( -- )
9     "user-init" get [
10         home ".factor-boot-rc" append-path ?run-file
11     ] when ;
12
13 : run-user-init ( -- )
14     "user-init" get [
15         home ".factor-rc" append-path ?run-file
16     ] when ;
17
18 : cli-var-param ( name value -- ) swap set-global ;
19
20 : cli-bool-param ( name -- ) "no-" ?head not cli-var-param ;
21
22 : cli-param ( param -- )
23     "=" split1 [ cli-var-param ] [ cli-bool-param ] if* ;
24
25 : cli-arg ( argument -- argument )
26     "-" ?head [ cli-param f ] when ;
27
28 : cli-args ( -- args ) 10 getenv ;
29
30 SYMBOL: main-vocab-hook
31
32 : main-vocab ( -- vocab )
33     embedded? [
34         "alien.remote-control"
35     ] [
36         main-vocab-hook get [ call ] [ "listener" ] if*
37     ] if ;
38
39 : default-cli-args ( -- )
40     global [
41         "quiet" off
42         "script" off
43         "e" off
44         "user-init" on
45         embedded? "quiet" set
46         main-vocab "run" set
47     ] bind ;
48
49 : ignore-cli-args? ( -- ? )
50     os macosx? "run" get "ui" = and ;
51
52 : script-mode ( -- )
53     t "quiet" set-global
54     "none" "run" set-global ;
55
56 : parse-command-line ( -- )
57     cli-args [ cli-arg ] filter
58     "script" get [ script-mode ] when
59     ignore-cli-args? [ drop ] [ [ run-file ] each ] if
60     "e" get [ eval ] when* ;
61
62 [ default-cli-args ] "command-line" add-init-hook