platform info refactor

This commit is contained in:
Jan Prochazka
2021-04-17 10:42:29 +02:00
parent 6c246c9eaa
commit 76e51343d0
9 changed files with 51 additions and 32 deletions

View File

@@ -28,6 +28,7 @@ const files = require('./controllers/files');
const scheduler = require('./controllers/scheduler');
const { rundir } = require('./utility/directories');
const platformInfo = require('./utility/platformInfo');
function start(argument = null) {
// console.log('process.argv', process.argv);
@@ -79,11 +80,11 @@ function start(argument = null) {
app.use('/runners/data', express.static(rundir()));
if (fs.existsSync('/home/dbgate-docker/public')) {
if (platformInfo.isDocker) {
// server static files inside docker container
app.use(express.static('/home/dbgate-docker/public'));
} else {
if (argument != 'startNodeWeb') {
if (!platformInfo.isNpmDist) {
app.get('/', (req, res) => {
res.send('DbGate API');
});
@@ -99,7 +100,7 @@ function start(argument = null) {
process.send({ msgtype: 'listening', port });
});
});
} else if (argument == 'startNodeWeb') {
} else if (platformInfo.isNpmDist) {
app.use(express.static(path.join(__dirname, '../../dbgate-web/public')));
findFreePort(5000, function (err, port) {
server.listen(port, () => {

View File

@@ -2,7 +2,7 @@ const path = require('path');
const fs = require('fs');
const { pluginsdir, packagedPluginsDir } = require('../utility/directories');
const nativeModules = require('../nativeModules');
const _isRunOnSource = require('../utility/_isRunOnSource');
const platformInfo = require('../utility/platformInfo');
const loadedPlugins = {};
@@ -12,7 +12,7 @@ const dbgateEnv = {
};
function getModulePath(packageName) {
const packagedModulePath = _isRunOnSource()
const packagedModulePath = platformInfo.isDevMode
? path.join(packagedPluginsDir(), packageName, 'src', 'backend', 'index.js')
: path.join(packagedPluginsDir(), packageName, 'dist', 'backend.js');

View File

@@ -1,5 +0,0 @@
function _isRunOnSource() {
return __filename.endsWith('_isRunOnSource.js');
}
module.exports = _isRunOnSource;

View File

@@ -2,7 +2,6 @@ const os = require('os');
const path = require('path');
const fs = require('fs');
const cleanDirectory = require('./cleanDirectory');
const _isRunOnSource = require('./_isRunOnSource');
const platformInfo = require('./platformInfo');
const createDirectories = {};
@@ -42,17 +41,20 @@ const archivedir = dirFunc('archive');
const filesdir = dirFunc('files');
function packagedPluginsDir() {
if (_isRunOnSource()) {
if (platformInfo.isDevMode) {
return path.resolve(__dirname, '../../../../plugins');
}
if (platformInfo.isDocker) {
return '/home/dbgate-docker/plugins';
}
if (process.argv[2] == 'startNodeWeb') {
if (platformInfo.isNpmDist) {
// node_modules
return global['dbgateApiPackagedPluginsPath'];
}
return path.resolve(__dirname, '../../plugins');
if (platformInfo.isElectron) {
return path.resolve(__dirname, '../../plugins');
}
return null;
}
module.exports = {

View File

@@ -8,12 +8,28 @@ const isWindows = platform === 'win32';
const isMac = platform === 'darwin';
const isLinux = platform === 'linux';
const isDocker = fs.existsSync('/home/dbgate-docker/build');
const isDevMode = p.env.DEVMODE == '1';
const isNpmDist = p.argv[2] == 'startNodeWeb';
function moduleAvailable(name) {
try {
require.resolve(name);
return true;
} catch (e) {
return false;
}
}
const isElectron = moduleAvailable('electron');
const platformInfo = {
isWindows,
isMac,
isLinux,
isDocker,
isElectron,
isDevMode,
isNpmDist,
isSnap: p.env.ELECTRON_SNAP == 'true',
isPortable: isWindows && p.env.PORTABLE_EXECUTABLE_DIR,
isAppImage: p.env.DESKTOPINTEGRATION === 'AppImageLauncher',