Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var fs = require('fs-extra');
- var path = require('path');
- var EventEmitter = require('events').EventEmitter;
- // Directories for source, destination, and log
- // TODO: Turn these into command line arguments
- var sourceDir = 'files';
- var destDir = 'dest';
- var logPath = 'log.txt';
- var extensions = [];
- var log = fs.createWriteStream(logPath);
- log.on('error', function writeError(e) {
- console.log('Could not write to log file: ' + e.message);
- });
- var events = new EventEmitter();
- events.on('newdir', function logError(ext) {
- log.write('Directory created for file extension ' + ext + '\n');
- });
- events.on('error', function logError(e) {
- log.write('Error: ' + e.message + '\n');
- });
- var walker = fs.walk(sourceDir);
- walker.on('data', function (file) {
- if (file.stats.isFile()) {
- var ext = path.extname(file.path).slice(1);
- if (extensions.indexOf(ext) == -1) {
- fs.stat(path.join(destDir, ext), function (err) {
- if (err && err.code == 'ENOENT') {
- fs.mkdirSync(path.join(destDir, ext));
- events.emit('newdir', ext);
- extensions.push(ext);
- } else if (err) {
- events.emit('error', err);
- return;
- }
- try {
- fs.copy(file.path, path.join(destDir, ext, path.basename(file.path)));
- } catch (e) {
- events.emit('error', e);
- }
- });
- }
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement