47 lines
1.6 KiB
JavaScript
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)
|
|
})
|