Require
require 'shelljs/global'
Paths
cd 'dir'
mkdir 'dir'
mkdir '-p', 'dir'
File manip
cp 'src', 'dest'
cp '-rf', 'src', 'dest'
rm 'file'
rm '-rf', 'file'
mv 'src', 'dest'
mv ['src1','src2'], 'dest'
chmod '644', 'file'
chmod 755, 'file'
chmod 'u+x', 'file'
Tests
test '-b', 'path' # block device
test '-d', 'path' # dir
test '-e', 'path' # exists
test '-f', 'path' # file
test '-L', 'path' # symlink
Cat and output
src = cat('file*.txt')
"hello".to('output.txt');
"hello".toEnd('append.txt');
cat('input.txt').to('output.txt');
Utils
which('x')
pwd()
echo 'hi'
exec('node --version').code
exec('node --version').output
exec('node --version', {silent:true}).output
exec 'node --version', (code, output) ->
echo "exit code #{code}"
tempdir()
error() # null if no error
Make
require 'shelljs/make'
target.all = ->
target.bundle()
target.docs()
target.bundle = ->
cd __dirname
mkdir 'build'
cd 'lib'
(cat '*.js').to '../build/output.js'
target.docs = ->
cd __dirname
mkdir 'docs'
cd 'lib'
for file in ls '*.js'
text = grep '//@', file # extract special comments
text.replace '//@', '' # remove comment tags
text.to 'docs/my_docs.md'
References
- https://github.com/arturadib/shelljs