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 ;
							 |