feat(cli): Enable community nodes based on npm availability (#3871)

*  Detect npm availability

* 📘 Expand interfaces

*  Adjust store

* 🎨 Replace button with warning
This commit is contained in:
Iván Ovejero
2022-08-11 16:39:55 +02:00
committed by GitHub
parent 620525ea85
commit 936264b3c6
8 changed files with 56 additions and 10 deletions

View File

@@ -33,6 +33,7 @@
import express from 'express';
import { readFileSync, promises } from 'fs';
import { readFile } from 'fs/promises';
import { exec as callbackExec } from 'child_process';
import _, { cloneDeep } from 'lodash';
import { dirname as pathDirname, join as pathJoin, resolve as pathResolve } from 'path';
import {
@@ -86,6 +87,7 @@ import jwks from 'jwks-rsa';
import timezones from 'google-timezones-json';
import parseUrl from 'parseurl';
import promClient, { Registry } from 'prom-client';
import { promisify } from 'util';
import * as Queue from './Queue';
import {
ActiveExecutions,
@@ -167,6 +169,8 @@ import { loadPublicApiVersions } from './PublicApi';
require('body-parser-xml')(bodyParser);
const exec = promisify(callbackExec);
export const externalHooks: IExternalHooksClass = ExternalHooks();
class App {
@@ -330,6 +334,7 @@ class App {
onboardingCallPromptEnabled: config.getEnv('onboardingCallPrompt.enabled'),
executionMode: config.getEnv('executions.mode'),
communityNodesEnabled: config.getEnv('nodes.communityPackages.enabled'),
isNpmAvailable: false,
};
}
@@ -374,6 +379,10 @@ class App {
promClient.collectDefaultMetrics({ register });
}
this.frontendSettings.isNpmAvailable = await exec('npm --version')
.then(() => true)
.catch(() => false);
this.versions = await GenericHelpers.getVersions();
this.frontendSettings.versionCli = this.versions.cli;