aboutsummaryrefslogtreecommitdiff
path: root/node_modules/shelljs/src/to.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/shelljs/src/to.js')
-rw-r--r--node_modules/shelljs/src/to.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/node_modules/shelljs/src/to.js b/node_modules/shelljs/src/to.js
new file mode 100644
index 000000000..d3d9e37be
--- /dev/null
+++ b/node_modules/shelljs/src/to.js
@@ -0,0 +1,37 @@
+var common = require('./common');
+var fs = require('fs');
+var path = require('path');
+
+common.register('to', _to, {
+ pipeOnly: true,
+ wrapOutput: false,
+});
+
+//@
+//@ ### ShellString.prototype.to(file)
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ cat('input.txt').to('output.txt');
+//@ ```
+//@
+//@ Analogous to the redirection operator `>` in Unix, but works with
+//@ ShellStrings (such as those returned by `cat`, `grep`, etc). _Like Unix
+//@ redirections, `to()` will overwrite any existing file!_
+function _to(options, file) {
+ if (!file) common.error('wrong arguments');
+
+ if (!fs.existsSync(path.dirname(file))) {
+ common.error('no such file or directory: ' + path.dirname(file));
+ }
+
+ try {
+ fs.writeFileSync(file, this.stdout || this.toString(), 'utf8');
+ return this;
+ } catch (e) {
+ /* istanbul ignore next */
+ common.error('could not write to file (code ' + e.code + '): ' + file, { continue: true });
+ }
+}
+module.exports = _to;