UNPKG

1.82 kBJavaScriptView Raw
1const newLineChar = require('os').EOL;
2const fs = require('fs');
3const copydir = require('copy-dir');
4const rimraf = require('rimraf');
5
6const PROJECT_PATH = process.cwd();
7
8const isExistFolder = path => fs.existsSync(`${PROJECT_PATH}/${path}`);
9
10const createFile = (path, content = '') => (
11 new Promise((resolve, reject) => {
12 fs.writeFile(path, content, (err) => {
13 if (err) reject(err);
14 resolve();
15 });
16 })
17);
18
19module.exports = {
20 isExistFolder,
21 createFile,
22 createFolder: path => (
23 new Promise((resolve, reject) => {
24 fs.mkdir(`${PROJECT_PATH}/${path}`, { recursive: true }, (err) => {
25 if (err) reject(err);
26
27 resolve();
28 });
29 })
30 ),
31 getFilesInFolder: path => (
32 new Promise((resolve, reject) => {
33 fs.readdir(path, (err, files) => {
34 if (err) reject(err);
35
36 resolve(files);
37 });
38 })
39 ),
40 removeFile: path => (
41 new Promise((resolve, reject) => {
42 fs.stat(path, (statErr, stats) => {
43 if (statErr) reject(statErr);
44 const isDir = stats.isDirectory();
45
46 if (isDir) {
47 rimraf(path, (rmDirErr) => {
48 if (rmDirErr) reject(rmDirErr);
49
50 resolve();
51 });
52 } else {
53 fs.unlink(path, (err) => {
54 if (err) reject(err);
55
56 resolve();
57 });
58 }
59 });
60 })
61 ),
62 addContentToFile: (path, content) => {
63 const isFileExist = isExistFolder(path);
64
65 if (isFileExist) {
66 fs.appendFileSync(path, `${newLineChar}${content}`);
67 } else {
68 createFile(path, content);
69 }
70 },
71 copyFiles: async (from, to) => {
72 try {
73 await copydir.sync(from, to, {
74 utimes: true,
75 mode: true,
76 cover: true,
77 });
78 } catch (err) {
79 return err;
80 }
81
82 return true;
83 },
84};