| var common = require('./common'); |
| var fs = require('fs'); |
| |
| //@ |
| //@ ### cat(file [, file ...]) |
| //@ ### cat(file_array) |
| //@ |
| //@ Examples: |
| //@ |
| //@ ```javascript |
| //@ var str = cat('file*.txt'); |
| //@ var str = cat('file1', 'file2'); |
| //@ var str = cat(['file1', 'file2']); // same as above |
| //@ ``` |
| //@ |
| //@ Returns a string containing the given file, or a concatenated string |
| //@ containing the files if more than one file is given (a new line character is |
| //@ introduced between each file). Wildcard `*` accepted. |
| function _cat(options, files) { |
| var cat = ''; |
| |
| if (!files) |
| common.error('no paths given'); |
| |
| if (typeof files === 'string') |
| files = [].slice.call(arguments, 1); |
| // if it's array leave it as it is |
| |
| files = common.expand(files); |
| |
| files.forEach(function(file) { |
| if (!fs.existsSync(file)) |
| common.error('no such file or directory: ' + file); |
| |
| cat += fs.readFileSync(file, 'utf8') + '\n'; |
| }); |
| |
| if (cat[cat.length-1] === '\n') |
| cat = cat.substring(0, cat.length-1); |
| |
| return common.ShellString(cat); |
| } |
| module.exports = _cat; |