preinstall plugins

This commit is contained in:
Jan Prochazka
2020-11-27 21:26:52 +01:00
parent c4ab06a14b
commit f2d15e2f84
2 changed files with 31 additions and 3 deletions

View File

@@ -1,7 +1,7 @@
const fs = require('fs-extra');
const axios = require('axios');
const path = require('path');
const { pluginstmpdir, pluginsdir } = require('../utility/directories');
const { pluginsdir, datadir } = require('../utility/directories');
const socket = require('../utility/socket');
const requirePlugin = require('../shell/requirePlugin');
const downloadPackage = require('../utility/downloadPackage');
@@ -24,6 +24,14 @@ const downloadPackage = require('../utility/downloadPackage');
// };
// }
const preinstallPlugins = [
'dbgate-plugin-mssql',
'dbgate-plugin-mysql',
'dbgate-plugin-postgres',
'dbgate-plugin-csv',
'dbgate-plugin-excel',
];
module.exports = {
script_meta: 'get',
async script({ packageName }) {
@@ -110,6 +118,8 @@ module.exports = {
const dir = path.join(pluginsdir(), packageName);
await fs.rmdir(dir, { recursive: true });
socket.emitChanged(`installed-plugins-changed`);
this.removedPlugins.push(packageName);
await fs.writeFile(path.join(datadir(), 'removed-plugins'), this.removedPlugins.join('\n'));
},
command_meta: 'post',
@@ -117,4 +127,24 @@ module.exports = {
const content = requirePlugin(packageName);
return content.commands[command](args);
},
async _init() {
const installed = await this.installed();
try {
this.removedPlugins = (await fs.readFile(path.join(datadir(), 'removed-plugins'), { encoding: 'utf-8' })).split(
'\n'
);
} catch (err) {
this.removedPlugins = [];
}
for (const packageName of preinstallPlugins) {
if (this.removedPlugins.includes(packageName)) continue;
try {
console.log('Preinstalling plugin', packageName);
await this.install({ packageName });
} catch (err) {
console.error('Error preinstalling plugin', packageName, err);
}
}
},
};