weisk
10/7/2017 - 10:02 PM

Util.promisify example - read files from directory, parse JSONs, copy

Util.promisify example - read files from directory, parse JSONs, copy

#!/usr/bin/env node
const fs = require('fs');
const path = require('path');
const { promisify } = require('util');
const { ncp } = require('ncp');

const readDir = promisify(fs.readdir);
const readFile = promisify(fs.readFile);
const copyDir = promisify(ncp);

console.log('Parsing i18n files...')
readDir('i18n')
.then((filenames) => {
  return filenames.filter((filename) => filename.endsWith('.json'))
})
.then((filenames) => {
  let files = filenames.map((filename) => {
    let filepath = path.join('i18n', filename);
    console.log('\t' + filepath);
    return readFile(filepath, 'utf-8')
  });
  return Promise.all(files);
})
.then((files) => {
  let jsons = files.map((file) => Promise.resolve(JSON.parse(file)));
  return Promise.all(jsons);
})
.then(() => {
  return copyDir('i18n', 'build/i18n');
})
.then((result) => {
  console.log('i18n files processed correctly');
})
.catch((err) => {
  console.error(err);
  process.exit(1);
});