aboutsummaryrefslogtreecommitdiff
path: root/node_modules/shelljs/src/toEnd.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/shelljs/src/toEnd.js')
-rw-r--r--node_modules/shelljs/src/toEnd.js36
1 files changed, 36 insertions, 0 deletions
diff --git a/node_modules/shelljs/src/toEnd.js b/node_modules/shelljs/src/toEnd.js
new file mode 100644
index 000000000..dc165fe8d
--- /dev/null
+++ b/node_modules/shelljs/src/toEnd.js
@@ -0,0 +1,36 @@
+var common = require('./common');
+var fs = require('fs');
+var path = require('path');
+
+common.register('toEnd', _toEnd, {
+ pipeOnly: true,
+ wrapOutput: false,
+});
+
+//@
+//@ ### ShellString.prototype.toEnd(file)
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ cat('input.txt').toEnd('output.txt');
+//@ ```
+//@
+//@ Analogous to the redirect-and-append operator `>>` in Unix, but works with
+//@ ShellStrings (such as those returned by `cat`, `grep`, etc).
+function _toEnd(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.appendFileSync(file, this.stdout || this.toString(), 'utf8');
+ return this;
+ } catch (e) {
+ /* istanbul ignore next */
+ common.error('could not append to file (code ' + e.code + '): ' + file, { continue: true });
+ }
+}
+module.exports = _toEnd;