mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-24 01:25:59 +00:00
preinstall plugins
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
const fs = require('fs-extra');
|
const fs = require('fs-extra');
|
||||||
const axios = require('axios');
|
const axios = require('axios');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const { pluginstmpdir, pluginsdir } = require('../utility/directories');
|
const { pluginsdir, datadir } = require('../utility/directories');
|
||||||
const socket = require('../utility/socket');
|
const socket = require('../utility/socket');
|
||||||
const requirePlugin = require('../shell/requirePlugin');
|
const requirePlugin = require('../shell/requirePlugin');
|
||||||
const downloadPackage = require('../utility/downloadPackage');
|
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 = {
|
module.exports = {
|
||||||
script_meta: 'get',
|
script_meta: 'get',
|
||||||
async script({ packageName }) {
|
async script({ packageName }) {
|
||||||
@@ -110,6 +118,8 @@ module.exports = {
|
|||||||
const dir = path.join(pluginsdir(), packageName);
|
const dir = path.join(pluginsdir(), packageName);
|
||||||
await fs.rmdir(dir, { recursive: true });
|
await fs.rmdir(dir, { recursive: true });
|
||||||
socket.emitChanged(`installed-plugins-changed`);
|
socket.emitChanged(`installed-plugins-changed`);
|
||||||
|
this.removedPlugins.push(packageName);
|
||||||
|
await fs.writeFile(path.join(datadir(), 'removed-plugins'), this.removedPlugins.join('\n'));
|
||||||
},
|
},
|
||||||
|
|
||||||
command_meta: 'post',
|
command_meta: 'post',
|
||||||
@@ -117,4 +127,24 @@ module.exports = {
|
|||||||
const content = requirePlugin(packageName);
|
const content = requirePlugin(packageName);
|
||||||
return content.commands[command](args);
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ const dirFunc = (dirname, clean = false) => () => {
|
|||||||
const jsldir = dirFunc('jsl', true);
|
const jsldir = dirFunc('jsl', true);
|
||||||
const rundir = dirFunc('run', true);
|
const rundir = dirFunc('run', true);
|
||||||
const uploadsdir = dirFunc('uploads', true);
|
const uploadsdir = dirFunc('uploads', true);
|
||||||
const pluginstmpdir = dirFunc('plugins-tmp', true);
|
|
||||||
const pluginsdir = dirFunc('plugins');
|
const pluginsdir = dirFunc('plugins');
|
||||||
const archivedir = dirFunc('archive');
|
const archivedir = dirFunc('archive');
|
||||||
|
|
||||||
@@ -46,6 +45,5 @@ module.exports = {
|
|||||||
uploadsdir,
|
uploadsdir,
|
||||||
archivedir,
|
archivedir,
|
||||||
ensureDirectory,
|
ensureDirectory,
|
||||||
pluginstmpdir,
|
|
||||||
pluginsdir,
|
pluginsdir,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user