All files fileUtil.js

0% Statements 0/13
0% Branches 0/5
0% Functions 0/9
0% Lines 0/11
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48                                                                                               
// @flow
 
import fs from 'fs'
import { shell } from 'ern-util'
 
/**
 * ==============================================================================
 * Async wrappers around node fs
 * ==============================================================================
 */
export async function readFile (
  filename: string,
  encoding: string = 'utf8') {
  return new Promise((resolve, reject) => {
    fs.readFile(filename, encoding, (err, res) => {
      if (err) reject(err)
      else resolve(res)
    })
  })
}
export async function readJSON (filename: string) {
  return readFile(filename).then(JSON.parse)
}
export async function writeJSON (
  filename: string,
  json: string) {
  return writeFile(filename, JSON.stringify(json, null, 2))
}
export async function writeFile (
  filename: string,
  data: string) {
  return new Promise((resolve, reject) => {
    fs.writeFile(filename, data, (err, res) => {
      if (err) reject(err)
      else resolve(res)
    })
  })
}
 
/**
 * Recursively apply file mode for a given path
 * @param fileMode
 * @param path
 */
export function chmodr (fileMode: string, path: string) {
  shell.chmod('-R', fileMode, path)
}