63 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			63 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Factor
		
	
	
|  | ! Copyright (C) 2003, 2007 Slava Pestov. | ||
|  | ! See http://factorcode.org/license.txt for BSD license. | ||
|  | IN: command-line | ||
|  | USING: init continuations debugger hashtables io kernel | ||
|  | kernel.private namespaces parser sequences strings system | ||
|  | splitting io.files ;
 | ||
|  | 
 | ||
|  | : run-bootstrap-init ( -- )
 | ||
|  |     "user-init" get [ | ||
|  |         home ".factor-boot-rc" path+ ?run-file | ||
|  |     ] when ;
 | ||
|  | 
 | ||
|  | : run-user-init ( -- )
 | ||
|  |     "user-init" get [ | ||
|  |         home ".factor-rc" path+ ?run-file | ||
|  |     ] when ;
 | ||
|  | 
 | ||
|  | : cli-var-param ( name value -- ) swap set-global ;
 | ||
|  | 
 | ||
|  | : cli-bool-param ( name -- ) "no-" ?head not cli-var-param ;
 | ||
|  | 
 | ||
|  | : cli-param ( param -- )
 | ||
|  |     "=" split1 [ cli-var-param ] [ cli-bool-param ] if* ;
 | ||
|  | 
 | ||
|  | : cli-arg ( argument -- argument )
 | ||
|  |     "-" ?head [ cli-param f ] when ;
 | ||
|  | 
 | ||
|  | : cli-args ( -- args ) 10 getenv ;
 | ||
|  | 
 | ||
|  | SYMBOL: main-vocab-hook | ||
|  | 
 | ||
|  | : main-vocab ( -- vocab )
 | ||
|  |     embedded? [ | ||
|  |         "alien.remote-control" | ||
|  |     ] [ | ||
|  |         main-vocab-hook get [ call ] [ "listener" ] if*
 | ||
|  |     ] if ;
 | ||
|  | 
 | ||
|  | : default-cli-args | ||
|  |     global [ | ||
|  |         "quiet" off
 | ||
|  |         "script" off
 | ||
|  |         "e" off
 | ||
|  |         "user-init" on
 | ||
|  |         embedded? "quiet" set
 | ||
|  |         main-vocab "run" set
 | ||
|  |     ] bind ;
 | ||
|  | 
 | ||
|  | : ignore-cli-args? ( -- ? )
 | ||
|  |     macosx? "run" get "ui" = and ;
 | ||
|  | 
 | ||
|  | : script-mode ( -- )
 | ||
|  |     t "quiet" set-global
 | ||
|  |     "none" "run" set-global ;
 | ||
|  | 
 | ||
|  | : parse-command-line ( -- )
 | ||
|  |     cli-args [ cli-arg ] subset | ||
|  |     "script" get [ script-mode ] when
 | ||
|  |     ignore-cli-args? [ drop ] [ [ run-file ] each ] if
 | ||
|  |     "e" get [ eval ] when* ;
 | ||
|  | 
 | ||
|  | [ default-cli-args ] "command-line" add-init-hook |