mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
introduce nodeEnvInjectionToken
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
parent
a3762dc36b
commit
f66050f1aa
@ -3,14 +3,15 @@
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import nodeEnvInjectionToken from "../vars/node-env-injection-token";
|
||||
|
||||
const environmentVariablesInjectable = getInjectable({
|
||||
id: "environment-variables",
|
||||
|
||||
instantiate: () => {
|
||||
instantiate: (di) => {
|
||||
// IMPORTANT: The syntax needs to be exactly this in order to make environment variable values
|
||||
// hard-coded at compile-time by Webpack.
|
||||
const NODE_ENV = process.env.NODE_ENV;
|
||||
const NODE_ENV = di.inject(nodeEnvInjectionToken);
|
||||
const JEST_WORKER_ID = process.env.JEST_WORKER_ID;
|
||||
const CICD = process.env.CICD;
|
||||
|
||||
|
||||
11
src/common/vars/node-env-injection-token.ts
Normal file
11
src/common/vars/node-env-injection-token.ts
Normal file
@ -0,0 +1,11 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getInjectionToken } from "@ogre-tools/injectable";
|
||||
|
||||
const nodeEnvInjectionToken = getInjectionToken<string | undefined>({
|
||||
id: "node-env-injection-token",
|
||||
});
|
||||
|
||||
export default nodeEnvInjectionToken;
|
||||
36
src/main/create-app.ts
Normal file
36
src/main/create-app.ts
Normal file
@ -0,0 +1,36 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
|
||||
import type { DiContainer } from "@ogre-tools/injectable";
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import { runInAction } from "mobx";
|
||||
import nodeEnvInjectionToken from "../common/vars/node-env-injection-token";
|
||||
import { registerInjectables } from "./register-injectables";
|
||||
import startMainApplicationInjectable from "./start-main-application/start-main-application.injectable";
|
||||
|
||||
interface AppConfig {
|
||||
di: DiContainer;
|
||||
mode: string;
|
||||
}
|
||||
|
||||
export function createApp(conf: AppConfig) {
|
||||
const { di, mode } = conf;
|
||||
|
||||
runInAction(() => {
|
||||
di.register(getInjectable({
|
||||
id: "node-env",
|
||||
instantiate: () => mode,
|
||||
injectionToken: nodeEnvInjectionToken,
|
||||
}));
|
||||
|
||||
registerInjectables(di);
|
||||
});
|
||||
|
||||
const startMainApplication = di.inject(startMainApplicationInjectable);
|
||||
|
||||
return {
|
||||
start: () => startMainApplication(),
|
||||
};
|
||||
}
|
||||
@ -5,7 +5,7 @@
|
||||
|
||||
import { kebabCase, noop, chunk } from "lodash/fp";
|
||||
import type { DiContainer, Injectable } from "@ogre-tools/injectable";
|
||||
import { createContainer, isInjectable } from "@ogre-tools/injectable";
|
||||
import { createContainer, isInjectable, getInjectable } from "@ogre-tools/injectable";
|
||||
import { Environments, setLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
|
||||
import writeJsonFileInjectable from "../common/fs/write-json-file.injectable";
|
||||
import readJsonFileInjectable from "../common/fs/read-json-file.injectable";
|
||||
@ -72,6 +72,7 @@ import initializeClusterManagerInjectable from "./cluster/initialize-manager.inj
|
||||
import addKubeconfigSyncAsEntitySourceInjectable from "./start-main-application/runnables/kube-config-sync/add-source.injectable";
|
||||
import type { GlobalOverride } from "../common/test-utils/get-global-override";
|
||||
import applicationInformationInjectable from "../common/vars/application-information-injectable";
|
||||
import nodeEnvInjectionToken from "../common/vars/node-env-injection-token";
|
||||
|
||||
export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {}) {
|
||||
const {
|
||||
@ -80,6 +81,12 @@ export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {})
|
||||
|
||||
const di = createContainer("main");
|
||||
|
||||
di.register(getInjectable({
|
||||
id: "node-env",
|
||||
instantiate: () => "test",
|
||||
injectionToken: nodeEnvInjectionToken,
|
||||
}));
|
||||
|
||||
setLegacyGlobalDiForExtensionApi(di, Environments.main);
|
||||
|
||||
di.preventSideEffects();
|
||||
|
||||
@ -7,19 +7,17 @@
|
||||
|
||||
import { getDi } from "./getDi";
|
||||
import { Mobx, LensExtensions, Pty } from "./extension-api";
|
||||
import { startApp } from "./start-app";
|
||||
import { createApp } from "./create-app";
|
||||
|
||||
const di = getDi();
|
||||
const app = createApp({
|
||||
di,
|
||||
mode: process.env.NODE_ENV || "development",
|
||||
});
|
||||
|
||||
(async () => {
|
||||
try {
|
||||
await startApp({
|
||||
di,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
process.exit(1);
|
||||
}
|
||||
})();
|
||||
app.start().catch((error) => {
|
||||
console.error(error);
|
||||
process.exit(1);
|
||||
});
|
||||
|
||||
export { Mobx, LensExtensions, Pty };
|
||||
|
||||
@ -3,18 +3,16 @@
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
|
||||
import { registerInjectables } from "./register-injectables";
|
||||
import { afterApplicationIsLoadedInjectionToken } from "./start-main-application/runnable-tokens/after-application-is-loaded-injection-token";
|
||||
import { beforeApplicationIsLoadingInjectionToken } from "./start-main-application/runnable-tokens/before-application-is-loading-injection-token";
|
||||
import { beforeElectronIsReadyInjectionToken } from "./start-main-application/runnable-tokens/before-electron-is-ready-injection-token";
|
||||
import { onLoadOfApplicationInjectionToken } from "./start-main-application/runnable-tokens/on-load-of-application-injection-token";
|
||||
import * as extensionApi from "./extension-api";
|
||||
import { startApp } from "./start-app";
|
||||
import { createApp } from "./create-app";
|
||||
|
||||
// @experimental
|
||||
export {
|
||||
registerInjectables,
|
||||
startApp,
|
||||
createApp,
|
||||
extensionApi,
|
||||
afterApplicationIsLoadedInjectionToken,
|
||||
beforeApplicationIsLoadingInjectionToken,
|
||||
|
||||
@ -1,29 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
|
||||
import type { DiContainer } from "@ogre-tools/injectable";
|
||||
import environmentVariablesInjectable from "../common/utils/environment-variables.injectable";
|
||||
import startMainApplicationInjectable from "./start-main-application/start-main-application.injectable";
|
||||
|
||||
interface AppConfig {
|
||||
di: DiContainer;
|
||||
mode?: "production" | "development";
|
||||
}
|
||||
|
||||
export async function startApp(conf: AppConfig) {
|
||||
const { di, mode } = conf;
|
||||
|
||||
if (mode) {
|
||||
const environmentVariables = di.inject(environmentVariablesInjectable);
|
||||
|
||||
environmentVariables.NODE_ENV = mode;
|
||||
}
|
||||
|
||||
const startMainApplication = di.inject(startMainApplicationInjectable);
|
||||
|
||||
await startMainApplication();
|
||||
|
||||
return di;
|
||||
}
|
||||
34
src/renderer/create-app.ts
Normal file
34
src/renderer/create-app.ts
Normal file
@ -0,0 +1,34 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import "./components/app.scss";
|
||||
|
||||
import { bootstrap } from "./bootstrap";
|
||||
import type { DiContainer } from "@ogre-tools/injectable";
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import nodeEnvInjectionToken from "../common/vars/node-env-injection-token";
|
||||
import { runInAction } from "mobx";
|
||||
import { registerInjectables } from "./register-injectables";
|
||||
|
||||
interface AppConfig {
|
||||
di: DiContainer;
|
||||
mode: string;
|
||||
}
|
||||
|
||||
export function createApp(conf: AppConfig) {
|
||||
const { di, mode } = conf;
|
||||
|
||||
runInAction(() => {
|
||||
di.register(getInjectable({
|
||||
id: "node-env",
|
||||
instantiate: () => mode,
|
||||
injectionToken: nodeEnvInjectionToken,
|
||||
}));
|
||||
registerInjectables(di);
|
||||
});
|
||||
|
||||
return {
|
||||
start: () => bootstrap(di),
|
||||
};
|
||||
}
|
||||
@ -5,7 +5,7 @@
|
||||
|
||||
import { noop, chunk } from "lodash/fp";
|
||||
import type { DiContainer, Injectable } from "@ogre-tools/injectable";
|
||||
import { createContainer, isInjectable } from "@ogre-tools/injectable";
|
||||
import { createContainer, isInjectable, getInjectable } from "@ogre-tools/injectable";
|
||||
import { Environments, setLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
|
||||
import requestFromChannelInjectable from "./utils/channel/request-from-channel.injectable";
|
||||
import loggerInjectable from "../common/logger.injectable";
|
||||
@ -42,6 +42,7 @@ import storageSaveDelayInjectable from "./utils/create-storage/storage-save-dela
|
||||
import environmentVariablesInjectable from "../common/utils/environment-variables.injectable";
|
||||
import type { GlobalOverride } from "../common/test-utils/get-global-override";
|
||||
import applicationInformationInjectable from "../common/vars/application-information-injectable";
|
||||
import nodeEnvInjectionToken from "../common/vars/node-env-injection-token";
|
||||
|
||||
export const getDiForUnitTesting = (
|
||||
opts: { doGeneralOverrides?: boolean } = {},
|
||||
@ -50,6 +51,12 @@ export const getDiForUnitTesting = (
|
||||
|
||||
const di = createContainer("renderer");
|
||||
|
||||
di.register(getInjectable({
|
||||
id: "node-env",
|
||||
instantiate: () => "test",
|
||||
injectionToken: nodeEnvInjectionToken,
|
||||
}));
|
||||
|
||||
di.preventSideEffects();
|
||||
|
||||
setLegacyGlobalDiForExtensionApi(di, Environments.renderer);
|
||||
|
||||
@ -10,14 +10,16 @@ import {
|
||||
React, ReactDOM, ReactRouter,
|
||||
ReactRouterDom, Mobx, MobxReact, LensExtensions,
|
||||
} from "./extension-api";
|
||||
import { startApp } from "./start-app";
|
||||
import { createApp } from "./create-app";
|
||||
|
||||
const di = getDi();
|
||||
const app = createApp({
|
||||
di,
|
||||
mode: process.env.NODE_ENV || "development",
|
||||
});
|
||||
|
||||
// run
|
||||
startApp({
|
||||
di,
|
||||
});
|
||||
app.start();
|
||||
|
||||
export {
|
||||
React,
|
||||
|
||||
@ -5,12 +5,10 @@
|
||||
import "./components/app.scss";
|
||||
|
||||
import * as extensionApi from "./extension-api";
|
||||
import { registerInjectables } from "./register-injectables";
|
||||
import { startApp } from "./start-app";
|
||||
import { createApp } from "./create-app";
|
||||
|
||||
// @experimental
|
||||
export {
|
||||
startApp,
|
||||
createApp,
|
||||
extensionApi,
|
||||
registerInjectables,
|
||||
};
|
||||
|
||||
@ -1,26 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import "./components/app.scss";
|
||||
|
||||
import { bootstrap } from "./bootstrap";
|
||||
import type { DiContainer } from "@ogre-tools/injectable";
|
||||
import environmentVariablesInjectable from "../common/utils/environment-variables.injectable";
|
||||
|
||||
interface AppConfig {
|
||||
di: DiContainer;
|
||||
mode?: "production" | "development";
|
||||
}
|
||||
|
||||
export function startApp(conf: AppConfig) {
|
||||
const { di, mode } = conf;
|
||||
|
||||
if (mode) {
|
||||
const environmentVariables = di.inject(environmentVariablesInjectable);
|
||||
|
||||
environmentVariables.NODE_ENV = mode;
|
||||
}
|
||||
|
||||
bootstrap(di);
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user