41 lines
		
	
	
		
			866 B
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			866 B
		
	
	
	
		
			Factor
		
	
	
USING: calendar io io-internals kernel math namespaces
 | 
						|
nonblocking-io prettyprint quotations sequences ;
 | 
						|
IN: shell
 | 
						|
 | 
						|
SYMBOL: shell
 | 
						|
HOOK: directory* shell ( path -- seq )
 | 
						|
HOOK: make-file shell ( bytes -- file )
 | 
						|
HOOK: file. shell ( file -- )
 | 
						|
HOOK: touch-file shell ( path -- )
 | 
						|
 | 
						|
: (ls) ( path -- )
 | 
						|
    >r H{ } r> directory*
 | 
						|
    [
 | 
						|
        [ [ make-file file. ] with-row ] each
 | 
						|
    ] curry tabular-output ;
 | 
						|
 | 
						|
: ls ( -- )
 | 
						|
    cwd (ls) ;
 | 
						|
 | 
						|
: pwd ( -- )
 | 
						|
    cwd pprint nl ;
 | 
						|
 | 
						|
: (slurp) ( quot -- )
 | 
						|
    >r default-buffer-size read r> over [
 | 
						|
        dup slip (slurp)
 | 
						|
    ] [
 | 
						|
        2drop
 | 
						|
    ] if ;
 | 
						|
 | 
						|
: slurp ( stream quot -- )
 | 
						|
    [ (slurp) ] curry with-stream ;
 | 
						|
 | 
						|
: cat ( path -- )
 | 
						|
     <file-reader> stdio get
 | 
						|
     duplex-stream-out <duplex-stream>
 | 
						|
     [ write ] slurp ;
 | 
						|
 | 
						|
: copy-file ( path path -- )
 | 
						|
    >r <file-reader> r>
 | 
						|
    <file-writer> <duplex-stream> [ write ] slurp ;
 |