diff --git a/src/backend/Admin.ts b/src/backend/Admin.ts index b99d223..3d5da3a 100644 --- a/src/backend/Admin.ts +++ b/src/backend/Admin.ts @@ -107,7 +107,7 @@ export class FrontblockAdmin extends AdminBase{ status = await updater.cloneRepo("https://gitea.frontblock.me/fb-dist/admin.git", force) this.destroy() - const installer = require("./Installer").install + const installer = require("./Installer").installAdmin installer(this.getPlugins()) } return status diff --git a/src/backend/Installer.ts b/src/backend/Installer.ts index ad9743c..83c96f9 100644 --- a/src/backend/Installer.ts +++ b/src/backend/Installer.ts @@ -19,17 +19,34 @@ const logger = Logger.getLogger("installer") export type NPMPkgName = string export type NPMVersion = string -export const install = (plugins: Plugin[] = []) => { - - const npmPkgs:[NPMPkgName, NPMVersion][] = [['sqlite3', '4.1.0'], ['knex', '0.19.2']] +export const defaultNodePkgs = ():[NPMPkgName, NPMVersion][] => { + return [ + ['sqlite3', '4.1.0'], + ['knex', '0.19.2'] + ] +} + +export const npmInstall = (prefix: string = './plugins') => async (npmPkgs: [NPMPkgName, NPMVersion][]) => { const deps = npmPkgs.map(tuple => tuple.join('@') ).join(" ") - logger.info("Installing plaform dependencies: "+deps) + logger.info('npm install --prefix', prefix, deps) - exec("npm i --prefix ./plugins " + deps).then(process => { - - logger.debug(process.stdout) - const Admin = require("./Admin").FrontblockAdmin - new Admin(plugins) - }) + const { error, stdout, stderr } = await exec('npm i --prefix ' + prefix + ' ' + deps) + if (error) throw new Error(stderr) + else logger.info(stdout) +} + +export const installAdmin = async (plugins: Plugin[] = []) => { + logger.debug('Installing Admin') + + try { + await npmInstall()(defaultNodePkgs()) + logger.info('Installed node dependencies') + } catch (error) { + logger.fatal('Unable to install node dependencies: ', error) + process.exit(1); + } + + const Admin = require("./Admin").FrontblockAdmin + new Admin(plugins) } \ No newline at end of file diff --git a/src/backend/Launcher.ts b/src/backend/Launcher.ts index e48de69..03eb531 100644 --- a/src/backend/Launcher.ts +++ b/src/backend/Launcher.ts @@ -1,2 +1,2 @@ -import { install } from "./Installer"; -install([]) +import { installAdmin } from "./Installer"; +installAdmin([])