55 lines
1.5 KiB
JavaScript
55 lines
1.5 KiB
JavaScript
const fs=require('fs')
|
|
const path=require('path')
|
|
const promisify=require('util').promisify
|
|
|
|
const dbprovider=require('./DatabaseProvider')
|
|
|
|
const Config=require('./ConfigReader')
|
|
const logger=require('./SimpleLogger')()
|
|
|
|
logger.log("[Start] Initializing database provider...")
|
|
let db=null
|
|
try {
|
|
let provider=`./database_${Config.db_engine.toLowerCase()}`
|
|
logger.log(`[Working] Provider resolved to ${provider}`)
|
|
let providerClass=require(provider)
|
|
db=new dbprovider(new providerClass)
|
|
} catch (e) {
|
|
logger.log("[Fatal] Failed to create db provider.")
|
|
logger.log(e.toString())
|
|
return
|
|
}
|
|
logger.log("[Done] Database provider Initialized.")
|
|
|
|
async function ScanSingle(retArr,filepath) {
|
|
let stat=await promisify(fs.stat)(filepath)
|
|
if(stat.isDirectory()) {
|
|
return ScanDir(retArr,filepath)
|
|
} else if(stat.isFile()) {
|
|
retArr.push({path:filepath,mtime:stat.mtime,size:stat.size})
|
|
}
|
|
}
|
|
|
|
async function ScanDir(retArr,dir) {
|
|
logger.log(`Scanning ${dir}...`)
|
|
let files=await promisify(fs.readdir)(dir)
|
|
let pArr=new Array
|
|
files.forEach((file)=>{
|
|
pArr.push(ScanSingle(retArr,path.join(dir,file)))
|
|
})
|
|
return Promise.all(pArr)
|
|
}
|
|
|
|
async function main() {
|
|
logger.log(`[Start] About to scan ${Config.scan_path.length} dir${Config.scan_path.length>1?"s":""}...`)
|
|
let retArr=new Array
|
|
let pArr=new Array
|
|
Config.scan_path.forEach((dir)=>{
|
|
pArr.push(ScanDir(retArr,dir))
|
|
})
|
|
await Promise.all(pArr)
|
|
logger.log(`[Done] Scan Finished. ${retArr.length} results in set.`)
|
|
}
|
|
|
|
main()
|