import disk from 'diskusage'; export function verifyStorage (appContext) { const mountPath = appContext.env.FUTUREPORN_WORKDIR disk.check(mountPath, (err, info) => { if (err) { appContext.logger.log({ level: 'error', message: `Error retrieving disk usage for ${mountPath}: ${err}` }); return; } const totalSize = info.total; const availableSize = info.available; const freeSize = info.free; appContext.logger.log({ 'level': 'info', message: `${mountPath} Disk Usage:` }); appContext.logger.log({ 'level': 'info', message: `Total: ${bytesToSize(totalSize)}` }); appContext.logger.log({ 'level': 'info', message: `Free: ${bytesToSize(freeSize)}` }); appContext.logger.log({ 'level': 'info', message: `Available: ${bytesToSize(availableSize)}` }); if (availableSize < 85899345920) appContext.logger.log({ 'level': 'warn', message: `⚠️ Available disk is getting low! ${bytesToSize(availableSize)}` }); else if (availableSize < 42949672960) appContext.logger.log({ 'level': 'error', message: `⚠️☠️ AVAILABLE DISK IS TOO LOW! ${bytesToSize(availableSize)}` }); }); } // Helper function to convert bytes to human-readable format export function bytesToSize(bytes) { const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']; if (bytes === 0) return '0 Bytes'; const i = Math.floor(Math.log2(bytes) / 10); return `${(bytes / Math.pow(1024, i)).toFixed(2)} ${sizes[i]}`; }