UNPKG

1.53 kBJavaScriptView Raw
1'use strict'
2
3const debug = require('debug')('lint-staged:file')
4const fs = require('fs')
5const { promisify } = require('util')
6
7const fsReadFile = promisify(fs.readFile)
8const fsUnlink = promisify(fs.unlink)
9const fsWriteFile = promisify(fs.writeFile)
10
11/**
12 * Read contents of a file to buffer
13 * @param {String} filename
14 * @param {Boolean} [ignoreENOENT=true] — Whether to throw if the file doesn't exist
15 * @returns {Promise<Buffer>}
16 */
17const readFile = async (filename, ignoreENOENT = true) => {
18 debug('Reading file `%s`', filename)
19 try {
20 return await fsReadFile(filename)
21 } catch (error) {
22 if (ignoreENOENT && error.code === 'ENOENT') {
23 debug("File `%s` doesn't exist, ignoring...", filename)
24 return null // no-op file doesn't exist
25 } else {
26 throw error
27 }
28 }
29}
30
31/**
32 * Remove a file
33 * @param {String} filename
34 * @param {Boolean} [ignoreENOENT=true] — Whether to throw if the file doesn't exist
35 */
36const unlink = async (filename, ignoreENOENT = true) => {
37 debug('Removing file `%s`', filename)
38 try {
39 await fsUnlink(filename)
40 } catch (error) {
41 if (ignoreENOENT && error.code === 'ENOENT') {
42 debug("File `%s` doesn't exist, ignoring...", filename)
43 } else {
44 throw error
45 }
46 }
47}
48
49/**
50 * Write buffer to file
51 * @param {String} filename
52 * @param {Buffer} buffer
53 */
54const writeFile = async (filename, buffer) => {
55 debug('Writing file `%s`', filename)
56 await fsWriteFile(filename, buffer)
57}
58
59module.exports = {
60 readFile,
61 unlink,
62 writeFile,
63}