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