mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
67 lines
1.3 KiB
JavaScript
67 lines
1.3 KiB
JavaScript
'use strict';
|
|
var path = require('path');
|
|
var fs = require('graceful-fs');
|
|
var stripBom = require('strip-bom');
|
|
var stripBomStream = require('strip-bom-stream');
|
|
var File = require('vinyl');
|
|
var pify = require('pify');
|
|
var Promise = require('pinkie-promise');
|
|
var fsP = pify(fs, Promise);
|
|
|
|
exports.read = function (pth, opts) {
|
|
opts = opts || {};
|
|
|
|
var cwd = opts.cwd || process.cwd();
|
|
var base = opts.base || cwd;
|
|
|
|
pth = path.resolve(cwd, pth);
|
|
|
|
return fsP.stat(pth).then(function (stat) {
|
|
var file = new File({
|
|
cwd: cwd,
|
|
base: base,
|
|
path: pth,
|
|
stat: stat
|
|
});
|
|
|
|
if (opts.read === false) {
|
|
return file;
|
|
}
|
|
|
|
if (opts.buffer === false) {
|
|
file.contents = fs.createReadStream(pth).pipe(stripBomStream());
|
|
return file;
|
|
}
|
|
|
|
return fsP.readFile(pth).then(function (contents) {
|
|
file.contents = stripBom(contents);
|
|
return file;
|
|
});
|
|
});
|
|
};
|
|
|
|
exports.readSync = function (pth, opts) {
|
|
opts = opts || {};
|
|
|
|
var cwd = opts.cwd || process.cwd();
|
|
var base = opts.base || cwd;
|
|
|
|
pth = path.resolve(cwd, pth);
|
|
|
|
var contents;
|
|
|
|
if (opts.read !== false) {
|
|
contents = opts.buffer === false ?
|
|
fs.createReadStream(pth).pipe(stripBomStream()) :
|
|
stripBom(fs.readFileSync(pth));
|
|
}
|
|
|
|
return new File({
|
|
cwd: cwd,
|
|
base: base,
|
|
path: pth,
|
|
stat: fs.statSync(pth),
|
|
contents: contents
|
|
});
|
|
};
|