[
boot
do-startup-hooks
- [
- (command-line) parse-command-line
- load-vocab-roots
- run-user-init
-
- "e" get script get or [
- "e" get [ eval( -- ) ] when*
- script get [ run-script ] when*
- ] [
- "run" get run
- ] if
-
- output-stream get [ stream-flush ] when*
- 0 exit
- ] [ print-error 1 exit ] recover
+ [ command-line-startup ] [ print-error 1 exit ] recover
] set-startup-quot
USING: init continuations hashtables io io.encodings.utf8
io.files io.pathnames kernel kernel.private namespaces parser
sequences source-files strings system splitting vocabs.loader
-alien.strings accessors ;
+alien.strings accessors eval ;
IN: command-line
SYMBOL: script
] bind ;
[ default-cli-args ] "command-line" add-startup-hook
+
+: cli-usage ( -- )
+"""
+Usage: """ write vm file-name write """ [Factor arguments] [script] [script arguments]
+
+Common arguments:
+ -help print this message and exit
+ -i=<image> load Factor image file <image> (default """ write vm file-name write """.image)
+ -run=<vocab> run the MAIN: entry point of <vocab>
+ -e=<code> evaluate <code>
+ -quiet suppress "Loading vocab.factor" messages
+ -no-user-init suppress loading of .factor-rc
+
+Enter
+ "command-line" help
+from within Factor for more information.
+
+""" write ;
+
+: command-line-startup ( -- )
+ (command-line) parse-command-line
+ load-vocab-roots
+ run-user-init
+
+ "help" get "-help" get or "h" get or [ cli-usage ] [
+ "e" get script get or [
+ "e" get [ eval( -- ) ] when*
+ script get [ run-script ] when*
+ ] [
+ "run" get run
+ ] if
+ ] if
+
+ output-stream get [ stream-flush ] when*
+ 0 exit ;
+