1 | 'use strict'
|
2 |
|
3 | const debug = require('debug')('lint-staged:file')
|
4 | const fs = require('fs')
|
5 | const { promisify } = require('util')
|
6 |
|
7 | const fsAccess = promisify(fs.access)
|
8 | const fsReadFile = promisify(fs.readFile)
|
9 | const fsUnlink = promisify(fs.unlink)
|
10 | const fsWriteFile = promisify(fs.writeFile)
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 | const exists = async filename => {
|
18 | try {
|
19 | await fsAccess(filename)
|
20 | return filename
|
21 | } catch {
|
22 | return false
|
23 | }
|
24 | }
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 | const readFile = async (filename, ignoreENOENT = true) => {
|
33 | debug('Reading file `%s`', filename)
|
34 | try {
|
35 | return await fsReadFile(filename)
|
36 | } catch (error) {
|
37 | if (ignoreENOENT && error.code === 'ENOENT') {
|
38 | debug("File `%s` doesn't exist, ignoring...", filename)
|
39 | return null
|
40 | } else {
|
41 | throw error
|
42 | }
|
43 | }
|
44 | }
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 | const unlink = async (filename, ignoreENOENT = true) => {
|
52 | if (filename) {
|
53 | debug('Unlinking file `%s`', filename)
|
54 | try {
|
55 | await fsUnlink(filename)
|
56 | } catch (error) {
|
57 | if (ignoreENOENT && error.code === 'ENOENT') {
|
58 | debug("File `%s` doesn't exist, ignoring...", filename)
|
59 | } else {
|
60 | throw error
|
61 | }
|
62 | }
|
63 | }
|
64 | }
|
65 |
|
66 |
|
67 |
|
68 |
|
69 |
|
70 |
|
71 | const writeFile = async (filename, buffer) => {
|
72 | debug('Writing file `%s`', filename)
|
73 | await fsWriteFile(filename, buffer)
|
74 | }
|
75 |
|
76 | module.exports = {
|
77 | exists,
|
78 | readFile,
|
79 | unlink,
|
80 | writeFile
|
81 | }
|