cnchar/helper/tool.js

72 lines
1.4 KiB
TypeScript

const fs = require('fs');
const childProcess = require('child_process');
const plugins = [
'poly',
'order',
'trad',
'draw',
'idiom',
'xhy',
'radical',
];
const allPackage = 'all';
const mainPackage = 'main';
const npmPackage = 'npm';
const types = 'types';
const utils = ['hanzi-util', 'hanzi-util-base'];
function read (file, cb) {
fs.readFile(file, 'utf8', (err, code) => {
if (err) throw err;
cb(code);
});
}
function write (file, txt, cb) {
fs.writeFile(file, txt, 'utf8', (err) => {
if (err) throw err;
if (cb)cb();
});
}
function pick ({data = {}, target, attrs}) {
if (!attrs) {
attrs = Object.keys(target);
}
attrs.forEach(name => {
if (typeof target[name] !== 'undefined')
data[name] = target[name];
});
return data;
}
async function exec (cmd) {
return new Promise(resolve => {
childProcess.exec(cmd, function (error, stdout, stderr) {
if (error) {
resolve({success: false, stdout, stderr});
} else {
resolve({
success: true,
stdout,
stderr
});
}
});
});
}
module.exports = {
read,
write,
pick,
exec,
Packages: {
plugins,
mainPackage,
npmPackage,
allPackage,
types,
utils,
}
};