Shinobi/tools/installAllCustomAutoLoadPac...

47 lines
1.6 KiB
JavaScript

const fsOld = require('fs')
const fs = fsOld.promises
const spawn = require('child_process').spawn
const configLocation = process.argv[2] ? process.argv[2] : `${__dirname}/../conf.json`
const config = require(configLocation)
const customAutoLoadPath = `${__dirname}/../libs/customAutoLoad/`
async function getAllCustomAutoLoadModuleFolders(){
return (await fs.readdir(customAutoLoadPath)).filter((filename) => {
return fsOld.lstatSync(`${customAutoLoadPath}${filename}`).isDirectory()
})
}
function installModule(filename){
return new Promise((resolve) => {
console.log(`Installing Module : ${filename}`)
const folderPath = `${customAutoLoadPath}${filename}`
const tempSh = `${folderPath}/tempSh.sh`
fsOld.writeFileSync(tempSh,`cd "${folderPath}" && npm install`)
const installProcess = spawn('sh',[tempSh])
installProcess.stdout.on('data',function(data){
const text = data.toString()
console.log(text)
})
installProcess.stderr.on('data',function(data){
const text = data.toString()
console.error(text)
})
installProcess.on('close',function(){
resolve()
fs.rm(tempSh)
})
})
}
async function run(){
const folderList = await getAllCustomAutoLoadModuleFolders()
for (let i = 0; i < folderList.length; i++) {
const folderName = folderList[i]
await installModule(folderName)
}
}
run().then(() => {
console.log('Done!')
})
.catch((err) => {
console.error('RUN ERROR',err)
})