UNPKG

disk-cleanup

Version:

This project offers a set of functions to perform disk cleanup operations in Node.js, including backup creation, restoration, and removal of files and directories.

191 lines (159 loc) 6.85 kB
const fs= require('fs'); const path = require("path"); function filterSmaller(dpath, size, callback) { fs.readdir(dpath, (err, files) => { if (err) { callback(err,null); return; } let filesProcessed = 0; let filesDeleted = 0; let errorEncountered = false; files.forEach(file => { let path_of = path.join(dpath, file); fs.stat(path_of, (err, stats) => { if (err) { console.error(`Error getting stats for ${file}:`, err); errorEncountered = true; return; } if (stats.size < size) { fs.unlink(path_of, err => { filesProcessed++; if (err) { console.error(`Error deleting ${file}:`, err); errorEncountered = true; } else { filesDeleted++; } if (filesProcessed === files.length) { if (errorEncountered) { callback('Some files could not be deleted'); } else if (filesDeleted === 0) { callback(null, `No files of size smaller than ${size} bytes found`); } else { callback(null, `Successfully deleted ${filesDeleted} files of size smaller than ${size} bytes`); } } }); } else { filesProcessed++; if (filesProcessed === files.length) { if (errorEncountered) { callback('Some files could not be deleted'); } else if (filesDeleted === 0) { callback(null, `No files of size smaller than ${size} bytes found`); } else { callback(null, `Successfully deleted ${filesDeleted} files of size smaller than ${size} bytes`); } } } }); }); }); } function filterGreater(dpath, size, callback) { fs.readdir(dpath, (err, files) => { if (err) { callback(err,null); return; } let filesProcessed = 0; let filesDeleted = 0; let errorEncountered = false; files.forEach(file => { let path_of = path.join(dpath, file); fs.stat(path_of, (err, stats) => { if (err) { console.error(`Error getting stats for ${file}:`, err); errorEncountered = true; return; } if (stats.size > size) { fs.unlink(path_of, err => { filesProcessed++; if (err) { console.error(`Error deleting ${file}:`, err); errorEncountered = true; } else { filesDeleted++; } if (filesProcessed === files.length) { if (errorEncountered) { callback('Some files could not be deleted'); } else if (filesDeleted === 0) { callback(null, `No files of size greater than ${size} bytes found`); } else { callback(null, `Successfully deleted ${filesDeleted} files of size greater than ${size} bytes`); } } }); } else { filesProcessed++; if (filesProcessed === files.length) { if (errorEncountered) { callback('Some files could not be deleted'); } else if (filesDeleted === 0) { callback(null, `No files of size greater than ${size} bytes found`); } else { callback(null, `Successfully deleted ${filesDeleted} files of size greater than ${size} bytes`); } } } }); }); }); } function filterEqual(dpath, size, callback) { fs.readdir(dpath, (err, files) => { if (err) { callback(err,null); return; } let filesProcessed = 0; let filesDeleted = 0; let errorEncountered = false; files.forEach(file => { let path_of = path.join(dpath, file); fs.stat(path_of, (err, stats) => { if (err) { console.error(`Error getting stats for ${file}:`, err); errorEncountered = true; return; } if (stats.size === size) { fs.unlink(path_of, err => { filesProcessed++; if (err) { console.error(`Error deleting ${file}:`, err); errorEncountered = true; } else { filesDeleted++; } if (filesProcessed === files.length) { if (errorEncountered) { callback('Some files could not be deleted'); } else if (filesDeleted === 0) { callback(null, `No files of size ${size} bytes found`); } else { callback(null, `Successfully deleted ${filesDeleted} files of size ${size} bytes`); } } }); } else { filesProcessed++; if (filesProcessed === files.length) { if (errorEncountered) { callback('Some files could not be deleted'); } else if (filesDeleted === 0) { callback(null, `No files of size ${size} bytes found`); } else { callback(null, `Successfully deleted ${filesDeleted} files of size ${size} bytes`); } } } }); }); }); } module.exports={filterEqual,filterGreater,filterSmaller}