mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-11 23:04:52 +09:00
68 lines
1.8 KiB
JavaScript
68 lines
1.8 KiB
JavaScript
const fs = require("fs-extra");
|
|
const path = require("path");
|
|
const git = require("simple-git")("./sharedPlugins");
|
|
|
|
|
|
module.exports = function(config){
|
|
if(!config) config = require("./../../config");
|
|
|
|
return {
|
|
listPlugins: async function(){
|
|
let plugins = await this.getPlugins();
|
|
plugins.forEach(plug => {
|
|
console.log(`${plug.name}`.padEnd(22).substr(0,22)+` - ${plug.description}`.substr(0,80-22));
|
|
});
|
|
},
|
|
getPlugins: async function(){
|
|
let directories = await fs.readdir("./sharedPlugins");
|
|
let returnArray = [];
|
|
for(let i in directories){
|
|
let dir = directories[i];
|
|
let pluginContents = await fs.readdir(path.join("./sharedPlugins", dir));
|
|
// console.log(pluginContents)
|
|
if(pluginContents.includes("config.js") || pluginContents.includes("config.json")){
|
|
try{
|
|
let pluginConfig = require(path.join("./../../sharedPlugins", dir, "config"));
|
|
pluginConfig.pluginPath = path.join("./sharedPlugins", dir);
|
|
returnArray.push(pluginConfig);
|
|
}catch(e){
|
|
console.log(e)
|
|
}
|
|
}
|
|
}
|
|
return returnArray;
|
|
},
|
|
addPlugin: function(path){
|
|
return new Promise((resolve, reject) => {
|
|
if(path.includes("git")){ // we are decently sure this is a git repo
|
|
git.clone(path, data => resolve(data))
|
|
}
|
|
});
|
|
},
|
|
removePlugin: async function(name){
|
|
let plugins = await this.getPlugins();
|
|
for(let i in plugins){
|
|
let plug = plugins[i];
|
|
if(plug.name.includes(name)){
|
|
// console.log(`Removing plugin ${plug.name}`);
|
|
await fs.remove(plug.pluginPath);
|
|
return {
|
|
ok:true,
|
|
msg:`Deleted plugin ${plug.name}`
|
|
}
|
|
}
|
|
}
|
|
return {
|
|
ok:false,
|
|
msg:`Plugin matching "${name}" not found`,
|
|
}
|
|
},
|
|
enablePlugin: function(){
|
|
|
|
},
|
|
disablePlugin: function(){
|
|
|
|
}
|
|
}
|
|
}
|