1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Consolidate to use injectable instead of var for static file directory

Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com>

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
This commit is contained in:
Janne Savolainen 2022-04-28 10:30:40 +03:00
parent 90c52a98b2
commit d93080b4e5
No known key found for this signature in database
GPG Key ID: 8C6CFB2FFFE8F68A
7 changed files with 24 additions and 23 deletions

View File

@ -123,12 +123,6 @@ export const kubectlBinaryName = getBinaryName("kubectl");
* @deprecated for being explicit side effect. * @deprecated for being explicit side effect.
*/ */
export const kubectlBinaryPath = lazyInitialized(() => path.join(baseBinariesDir.get(), kubectlBinaryName)); export const kubectlBinaryPath = lazyInitialized(() => path.join(baseBinariesDir.get(), kubectlBinaryName));
export const staticFilesDirectory = path.resolve(
!isProduction
? process.cwd()
: process.resourcesPath,
"static",
);
// Apis // Apis
export const apiPrefix = "/api" as string; // local router apis export const apiPrefix = "/api" as string; // local router apis

View File

@ -6,8 +6,8 @@ import { getInjectable } from "@ogre-tools/injectable";
import getAbsolutePathInjectable from "../path/get-absolute-path.injectable"; import getAbsolutePathInjectable from "../path/get-absolute-path.injectable";
import lensResourcesDirInjectable from "./lens-resources-dir.injectable"; import lensResourcesDirInjectable from "./lens-resources-dir.injectable";
const staticDirInjectable = getInjectable({ const staticFilesDirectoryInjectable = getInjectable({
id: "static-dir", id: "static-files-directory",
instantiate: (di) => { instantiate: (di) => {
const getAbsolutePath = di.inject(getAbsolutePathInjectable); const getAbsolutePath = di.inject(getAbsolutePathInjectable);
@ -17,4 +17,4 @@ const staticDirInjectable = getInjectable({
}, },
}); });
export default staticDirInjectable; export default staticFilesDirectoryInjectable;

View File

@ -12,6 +12,7 @@ import extensionInstallationStateStoreInjectable from "../extension-installation
import installExtensionInjectable from "../extension-installer/install-extension/install-extension.injectable"; import installExtensionInjectable from "../extension-installer/install-extension/install-extension.injectable";
import extensionPackageRootDirectoryInjectable from "../extension-installer/extension-package-root-directory/extension-package-root-directory.injectable"; import extensionPackageRootDirectoryInjectable from "../extension-installer/extension-package-root-directory/extension-package-root-directory.injectable";
import installExtensionsInjectable from "../extension-installer/install-extensions/install-extensions.injectable"; import installExtensionsInjectable from "../extension-installer/install-extensions/install-extensions.injectable";
import staticFilesDirectoryInjectable from "../../common/vars/static-files-directory.injectable";
const extensionDiscoveryInjectable = getInjectable({ const extensionDiscoveryInjectable = getInjectable({
id: "extension-discovery", id: "extension-discovery",
@ -37,6 +38,8 @@ const extensionDiscoveryInjectable = getInjectable({
extensionPackageRootDirectory: di.inject( extensionPackageRootDirectory: di.inject(
extensionPackageRootDirectoryInjectable, extensionPackageRootDirectoryInjectable,
), ),
staticFilesDirectory: di.inject(staticFilesDirectoryInjectable),
}), }),
}); });

View File

@ -16,7 +16,7 @@ import logger from "../../main/logger";
import type { ExtensionsStore } from "../extensions-store/extensions-store"; import type { ExtensionsStore } from "../extensions-store/extensions-store";
import type { ExtensionLoader } from "../extension-loader"; import type { ExtensionLoader } from "../extension-loader";
import type { LensExtensionId, LensExtensionManifest } from "../lens-extension"; import type { LensExtensionId, LensExtensionManifest } from "../lens-extension";
import { isProduction, staticFilesDirectory } from "../../common/vars"; import { isProduction } from "../../common/vars";
import type { ExtensionInstallationStateStore } from "../extension-installation-state-store/extension-installation-state-store"; import type { ExtensionInstallationStateStore } from "../extension-installation-state-store/extension-installation-state-store";
import type { PackageJson } from "type-fest"; import type { PackageJson } from "type-fest";
import { extensionDiscoveryStateChannel } from "../../common/ipc/extension-handling"; import { extensionDiscoveryStateChannel } from "../../common/ipc/extension-handling";
@ -34,6 +34,7 @@ interface Dependencies {
installExtension: (name: string) => Promise<void>; installExtension: (name: string) => Promise<void>;
installExtensions: (packageJsonPath: string, packagesJson: PackageJson) => Promise<void>; installExtensions: (packageJsonPath: string, packagesJson: PackageJson) => Promise<void>;
extensionPackageRootDirectory: string; extensionPackageRootDirectory: string;
staticFilesDirectory: string;
} }
export interface InstalledExtension { export interface InstalledExtension {
@ -112,7 +113,7 @@ export class ExtensionDiscovery {
} }
get inTreeFolderPath(): string { get inTreeFolderPath(): string {
return path.resolve(staticFilesDirectory, "../extensions"); return path.resolve(this.dependencies.staticFilesDirectory, "../extensions");
} }
get nodeModulesPath(): string { get nodeModulesPath(): string {

View File

@ -8,7 +8,7 @@ import type { SupportedFileExtension } from "../router/router-content-types";
import { contentTypes } from "../router/router-content-types"; import { contentTypes } from "../router/router-content-types";
import logger from "../logger"; import logger from "../logger";
import { routeInjectionToken } from "../router/router.injectable"; import { routeInjectionToken } from "../router/router.injectable";
import { appName, publicPath, staticFilesDirectory } from "../../common/vars"; import { appName, publicPath } from "../../common/vars";
import path from "path"; import path from "path";
import isDevelopmentInjectable from "../../common/vars/is-development.injectable"; import isDevelopmentInjectable from "../../common/vars/is-development.injectable";
import httpProxy from "http-proxy"; import httpProxy from "http-proxy";
@ -18,24 +18,25 @@ import getAbsolutePathInjectable from "../../common/path/get-absolute-path.injec
import type { JoinPaths } from "../../common/path/join-paths.injectable"; import type { JoinPaths } from "../../common/path/join-paths.injectable";
import joinPathsInjectable from "../../common/path/join-paths.injectable"; import joinPathsInjectable from "../../common/path/join-paths.injectable";
import { webpackDevServerPort } from "../../../webpack/vars"; import { webpackDevServerPort } from "../../../webpack/vars";
import staticFilesDirectoryInjectable from "../../common/vars/static-files-directory.injectable";
interface ProductionDependencies { interface ProductionDependencies {
readFileBuffer: (path: string) => Promise<Buffer>; readFileBuffer: (path: string) => Promise<Buffer>;
getAbsolutePath: GetAbsolutePath; getAbsolutePath: GetAbsolutePath;
joinPaths: JoinPaths; joinPaths: JoinPaths;
staticFilesDirectory: string;
} }
const handleStaticFileInProduction = const handleStaticFileInProduction =
({ readFileBuffer, getAbsolutePath, joinPaths }: ProductionDependencies) => ({ readFileBuffer, getAbsolutePath, joinPaths, staticFilesDirectory }: ProductionDependencies) =>
async ({ params }: LensApiRequest) => { async ({ params }: LensApiRequest) => {
const staticPath = getAbsolutePath(staticFilesDirectory);
let filePath = params.path; let filePath = params.path;
for (let retryCount = 0; retryCount < 5; retryCount += 1) { for (let retryCount = 0; retryCount < 5; retryCount += 1) {
const asset = joinPaths(staticPath, filePath); const asset = joinPaths(staticFilesDirectory, filePath);
const normalizedFilePath = getAbsolutePath(asset); const normalizedFilePath = getAbsolutePath(asset);
if (!normalizedFilePath.startsWith(staticPath)) { if (!normalizedFilePath.startsWith(staticFilesDirectory)) {
return { statusCode: 404 }; return { statusCode: 404 };
} }
@ -89,13 +90,14 @@ const staticFileRouteInjectable = getInjectable({
const readFileBuffer = di.inject(readFileBufferInjectable); const readFileBuffer = di.inject(readFileBufferInjectable);
const getAbsolutePath = di.inject(getAbsolutePathInjectable); const getAbsolutePath = di.inject(getAbsolutePathInjectable);
const joinPaths = di.inject(joinPathsInjectable); const joinPaths = di.inject(joinPathsInjectable);
const staticFilesDirectory = di.inject(staticFilesDirectoryInjectable);
return { return {
method: "get", method: "get",
path: `/{path*}`, path: `/{path*}`,
handler: isDevelopment handler: isDevelopment
? handleStaticFileInDevelopment({ proxy: httpProxy.createProxy() }) ? handleStaticFileInDevelopment({ proxy: httpProxy.createProxy() })
: handleStaticFileInProduction({ readFileBuffer, getAbsolutePath, joinPaths }), : handleStaticFileInProduction({ readFileBuffer, getAbsolutePath, joinPaths, staticFilesDirectory }),
}; };
}, },

View File

@ -5,19 +5,18 @@
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { afterApplicationIsReadyInjectionToken } from "../after-application-is-ready-injection-token"; import { afterApplicationIsReadyInjectionToken } from "../after-application-is-ready-injection-token";
import registerFileProtocolInjectable from "../../../electron-app/features/register-file-protocol.injectable"; import registerFileProtocolInjectable from "../../../electron-app/features/register-file-protocol.injectable";
import staticFilesDirectoryInjectable from "../../../../common/vars/static-files-directory.injectable";
import staticDirInjectable from "../../../../common/vars/static-dir.injectable";
const setupFileProtocolInjectable = getInjectable({ const setupFileProtocolInjectable = getInjectable({
id: "setup-file-protocol", id: "setup-file-protocol",
instantiate: (di) => { instantiate: (di) => {
const registerFileProtocol = di.inject(registerFileProtocolInjectable); const registerFileProtocol = di.inject(registerFileProtocolInjectable);
const staticDir = di.inject(staticDirInjectable); const staticFilesDirectory = di.inject(staticFilesDirectoryInjectable);
return { return {
run: () => { run: () => {
registerFileProtocol("static", staticDir); registerFileProtocol("static", staticFilesDirectory);
}, },
}; };
}, },

View File

@ -5,20 +5,21 @@
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import path from "path"; import path from "path";
import { hasCorrectExtension } from "./has-correct-extension"; import { hasCorrectExtension } from "./has-correct-extension";
import { staticFilesDirectory } from "../../../../common/vars";
import readFileInjectable from "../../../../common/fs/read-file.injectable"; import readFileInjectable from "../../../../common/fs/read-file.injectable";
import readDirInjectable from "../../../../common/fs/read-dir.injectable"; import readDirInjectable from "../../../../common/fs/read-dir.injectable";
import type { RawTemplates } from "./create-resource-templates.injectable"; import type { RawTemplates } from "./create-resource-templates.injectable";
import type { GetAbsolutePath } from "../../../../common/path/get-absolute-path.injectable"; import type { GetAbsolutePath } from "../../../../common/path/get-absolute-path.injectable";
import getAbsolutePathInjectable from "../../../../common/path/get-absolute-path.injectable"; import getAbsolutePathInjectable from "../../../../common/path/get-absolute-path.injectable";
import staticFilesDirectoryInjectable from "../../../../common/vars/static-files-directory.injectable";
interface Dependencies { interface Dependencies {
readDir: (dirPath: string) => Promise<string[]>; readDir: (dirPath: string) => Promise<string[]>;
readFile: (filePath: string) => Promise<string>; readFile: (filePath: string) => Promise<string>;
getAbsolutePath: GetAbsolutePath; getAbsolutePath: GetAbsolutePath;
staticFilesDirectory: string;
} }
async function getTemplates({ readDir, readFile, getAbsolutePath }: Dependencies) { async function getTemplates({ readDir, readFile, getAbsolutePath, staticFilesDirectory }: Dependencies) {
const templatesFolder = getAbsolutePath(staticFilesDirectory, "../templates/create-resource"); const templatesFolder = getAbsolutePath(staticFilesDirectory, "../templates/create-resource");
/** /**
@ -43,6 +44,7 @@ const lensCreateResourceTemplatesInjectable = getInjectable({
readFile: di.inject(readFileInjectable), readFile: di.inject(readFileInjectable),
readDir: di.inject(readDirInjectable), readDir: di.inject(readDirInjectable),
getAbsolutePath: di.inject(getAbsolutePathInjectable), getAbsolutePath: di.inject(getAbsolutePathInjectable),
staticFilesDirectory: di.inject(staticFilesDirectoryInjectable),
}); });
return ["lens", templates]; return ["lens", templates];