67 lines
1.9 KiB
JavaScript
67 lines
1.9 KiB
JavaScript
module.exports.removeCacheFiles = function() {
|
||
const fs = require('fs')
|
||
const config = require('./config')
|
||
const pics = './static/pics'
|
||
const flairs = './static/pics/flairs'
|
||
const icons = './static/pics/icons'
|
||
const thumbs = './static/pics/thumbs'
|
||
const vids = './static/vids'
|
||
let util = require('util')
|
||
let spawn = require('child_process').spawn
|
||
|
||
let usage
|
||
const limit = config.cache_max_size
|
||
|
||
function getUsage() {
|
||
return new Promise((resolve, reject) => {
|
||
let size = spawn('du', ['-sBM', './static/'])
|
||
size.stdout.on('data', function (data) {
|
||
data = data.toString()
|
||
let lines = data.split('\n')
|
||
if(lines) {
|
||
for(let i = lines.length; i >= 0; i--) {
|
||
if(lines[i] && lines[i].includes('./static/')) {
|
||
usage = parseInt(lines[i])
|
||
}
|
||
}
|
||
}
|
||
resolve(usage)
|
||
})
|
||
})
|
||
}
|
||
|
||
function deleteFiles() {
|
||
return new Promise(async (resolve, reject) => {
|
||
usage = await getUsage()
|
||
if(usage > limit) {
|
||
const { exec } = require('child_process')
|
||
exec(`cd ${pics} && ls -1btr -Iflairs -Iicons -Ithumbs -I.gitignore | head -50 | xargs rm -f --`)
|
||
exec(`cd ${flairs} && ls -1btr -I.gitignore | head -6 | xargs rm -f --`)
|
||
exec(`cd ${icons} && ls -1btr -I.gitignore | head -6 | xargs rm -f --`)
|
||
exec(`cd ${thumbs} && ls -1btr -I.gitignore | head -80 | xargs rm -f --`)
|
||
exec(`cd ${vids} && ls -1btr -I.gitignore | head -2 | xargs rm -f --`)
|
||
}
|
||
resolve(1)
|
||
})
|
||
}
|
||
|
||
async function main() {
|
||
usage = await getUsage()
|
||
if(usage > limit) {
|
||
console.log('Started removeCacheFiles()')
|
||
while(usage > limit) {
|
||
await deleteFiles()
|
||
}
|
||
}
|
||
}
|
||
|
||
if(config.cache_control) {
|
||
main()
|
||
|
||
const interval_ms = config.cache_control_interval
|
||
setInterval(() => {
|
||
main()
|
||
}, interval_ms)
|
||
}
|
||
}
|