Merge pull request #2 from JsSucks/utils

FileUtils
This commit is contained in:
Alexei Stukov 2018-01-16 03:50:51 +02:00 committed by GitHub
commit 48d6098285
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 88 additions and 2 deletions

View File

@ -1,4 +1,4 @@
export { Logger, Utils } from './utils'; export { Logger, Utils, FileUtils } from './utils';
export { PluginManager } from './pluginmanager'; export { PluginManager } from './pluginmanager';
export { Pluging } from './plugin'; export { Pluging } from './plugin';
export { BDIpc } from './bdipc'; export { BDIpc } from './bdipc';

View File

@ -49,6 +49,92 @@ class Utils {
} }
} }
static async tryParseJson(jsonString) {
try {
return JSON.parse(jsonString);
} catch (err) {
throw ({
'message': 'Failed to parse json',
err
});
}
}
} }
module.exports = { Logger, Utils } class FileUtils {
static async fileExists(path) {
return new Promise((resolve, reject) => {
fs.stat(path, (err, stats) => {
if (err) return reject({
'message': `No such file or directory: ${err.path}`,
err
});
if (!stats.isFile()) return reject({
'message': `Not a file: ${path}`,
stats
});
resolve();
});
});
}
static async directoryExists(path) {
return new Promise(resolve => {
fs.stat(path, (err, stats) => {
if (err) return reject({
'message': `Directory does not exist: ${path}`,
err
});
if (!stats.isDirectory()) return reject({
'message': `Not a directory: ${path}`,
stats
});
resolve();
});
});
}
static async readFile(path) {
try {
await this.fileExists(path);
} catch (err) {
throw (err);
}
return new Promise(resolve => {
fs.readFile(path, 'utf-8', (err, data) => {
if (err) reject({
'message': `Could not read file: ${path}`,
err
});
resolve(data);
});
});
}
static async readJsonFromFile(path) {
let readFile;
try {
readFile = await this.readFile(path);
} catch (err) {
throw (err);
}
try {
const parsed = await Utils.tryParseJson(readFile);
return parsed;
} catch (err) {
throw (Object.assign(err, { path }));
}
}
}
module.exports = { Logger, Utils, FileUtils }