.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / write / index.js
1 /*!
2  * write <https://github.com/jonschlinkert/write>
3  *
4  * Copyright (c) 2014-2015, Jon Schlinkert.
5  * Licensed under the MIT License.
6  */
7
8 'use strict';
9
10 var fs = require('fs');
11 var path = require('path');
12 var mkdir = require('mkdirp');
13
14 /**
15  * Asynchronously write a file to disk. Creates any intermediate
16  * directories if they don't already exist.
17  *
18  * ```js
19  * var writeFile = require('write');
20  * writeFile('foo.txt', 'This is content to write.', function(err) {
21  *   if (err) console.log(err);
22  * });
23  * ```
24  *
25  * @name  writeFile
26  * @param  {String} `dest` Destination file path
27  * @param  {String} `str` String to write to disk.
28  * @param  {Function} `callback`
29  * @api public
30  */
31
32 module.exports = function writeFile(dest, str, cb) {
33   var dir = path.dirname(dest);
34   fs.exists(dir, function (exists) {
35     if (exists) {
36       fs.writeFile(dest, str, cb);
37     } else {
38       mkdir(dir, function (err) {
39         if (err) {
40           return cb(err);
41         } else {
42           fs.writeFile(dest, str, cb);
43         }
44       });
45     }
46   });
47 };
48
49 /**
50  * Synchronously write files to disk. Creates any intermediate
51  * directories if they don't already exist.
52  *
53  * ```js
54  * var writeFile = require('write');
55  * writeFile.sync('foo.txt', 'This is content to write.');
56  * ```
57  *
58  * @name  writeFile.sync
59  * @param  {String} `dest` Destination file path
60  * @param  {String} `str` String to write to disk.
61  * @api public
62  */
63
64 module.exports.sync = function writeFileSync(dest, str) {
65   var dir = path.dirname(dest);
66   if (!fs.existsSync(dir)) {
67     mkdir.sync(dir);
68   }
69   fs.writeFileSync(dest, str);
70 };
71
72 /**
73  * Uses `fs.createWriteStream`, but also creates any intermediate
74  * directories if they don't already exist.
75  *
76  * ```js
77  * var write = require('write');
78  * write.stream('foo.txt');
79  * ```
80  *
81  * @name  writeFile.stream
82  * @param  {String} `dest` Destination file path
83  * @return  {Stream} Returns a write stream.
84  * @api public
85  */
86
87 module.exports.stream = function writeFileStream(dest) {
88   var dir = path.dirname(dest);
89   if (!fs.existsSync(dir)) {
90     mkdir.sync(dir);
91   }
92   return fs.createWriteStream(dest);
93 };