UNPKG

881 BJavaScriptView Raw
1'use strict';
2
3var fs = require('fs').promises;
4var path = require('path');
5
6async function write(file) {
7 var dir = path.dirname(file.path);
8 try {
9 if (!(await fs.stat(dir)).isDirectory()) {
10 throw new Error(`${file.path} is not a directory`);
11 }
12 } catch (error) {
13 if (error.code === 'ENOENT') {
14 await fs.mkdir(dir, {recursive: true});
15 } else {
16 throw error;
17 }
18 }
19
20 await fs.writeFile(file.path, file.contents, {
21 mode: file.stat ? file.stat.mode : null
22 });
23}
24
25async function remove(file) {
26 await fs.rmdir(file.path, {recursive: true});
27}
28
29module.exports = async function (file) {
30 this.store.add(file);
31 if (file.state === 'modified') {
32 file.committed = true;
33 await write(file);
34 } else if (file.state === 'deleted') {
35 file.committed = true;
36 await remove(file);
37 }
38
39 delete file.state;
40 delete file.isNew;
41};