From a4b96e5cd83054e0238854f4e6972145ac0041b0 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Fri, 16 Dec 2022 14:23:38 -0500 Subject: [PATCH] Remove lens-pod-menu intree extension Signed-off-by: Sebastian Malton --- extensions/.eslintrc.js | 20 ----- extensions/.gitignore | 1 - extensions/pod-menu/package.json | 22 ----- extensions/pod-menu/renderer.tsx | 39 -------- extensions/pod-menu/src/attach-menu.tsx | 106 ---------------------- extensions/pod-menu/src/logs-menu.tsx | 87 ------------------ extensions/pod-menu/src/shell-menu.tsx | 114 ------------------------ extensions/pod-menu/tsconfig.json | 27 ------ extensions/pod-menu/webpack.config.js | 44 --------- package.json | 6 +- 10 files changed, 1 insertion(+), 465 deletions(-) delete mode 100644 extensions/.eslintrc.js delete mode 100644 extensions/.gitignore delete mode 100644 extensions/pod-menu/package.json delete mode 100644 extensions/pod-menu/renderer.tsx delete mode 100644 extensions/pod-menu/src/attach-menu.tsx delete mode 100644 extensions/pod-menu/src/logs-menu.tsx delete mode 100644 extensions/pod-menu/src/shell-menu.tsx delete mode 100644 extensions/pod-menu/tsconfig.json delete mode 100644 extensions/pod-menu/webpack.config.js diff --git a/extensions/.eslintrc.js b/extensions/.eslintrc.js deleted file mode 100644 index 9d7b71763d..0000000000 --- a/extensions/.eslintrc.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -module.exports = { - "overrides": [ - { - files: [ - "**/*.ts", - "**/*.tsx", - ], - rules: { - "import/no-unresolved": ["error", { - ignore: ["@k8slens/extensions"], - }], - }, - }, - ], -}; diff --git a/extensions/.gitignore b/extensions/.gitignore deleted file mode 100644 index 193cfa4791..0000000000 --- a/extensions/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*/*.tgz diff --git a/extensions/pod-menu/package.json b/extensions/pod-menu/package.json deleted file mode 100644 index 3b44d3c44d..0000000000 --- a/extensions/pod-menu/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "lens-pod-menu", - "version": "6.1.0", - "description": "Lens pod menu", - "renderer": "dist/renderer.js", - "lens": { - "metadata": {}, - "styles": [] - }, - "scripts": { - "build": "npx webpack", - "dev": "npx webpack -- --watch", - "test": "npx jest --passWithNoTests --env=jsdom src $@" - }, - "files": [ - "dist/**/*" - ], - "dependencies": {}, - "devDependencies": { - "@k8slens/extensions": "file:../../src/extensions/npm/extensions" - } -} diff --git a/extensions/pod-menu/renderer.tsx b/extensions/pod-menu/renderer.tsx deleted file mode 100644 index 4788da9707..0000000000 --- a/extensions/pod-menu/renderer.tsx +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -import { Renderer } from "@k8slens/extensions"; -import type { PodAttachMenuProps } from "./src/attach-menu"; -import { PodAttachMenu } from "./src/attach-menu"; -import type { PodShellMenuProps } from "./src/shell-menu"; -import { PodShellMenu } from "./src/shell-menu"; -import type { PodLogsMenuProps } from "./src/logs-menu"; -import { PodLogsMenu } from "./src/logs-menu"; -import React from "react"; - -export default class PodMenuRendererExtension extends Renderer.LensExtension { - kubeObjectMenuItems = [ - { - kind: "Pod", - apiVersions: ["v1"], - components: { - MenuItem: (props: PodAttachMenuProps) => , - }, - }, - { - kind: "Pod", - apiVersions: ["v1"], - components: { - MenuItem: (props: PodShellMenuProps) => , - }, - }, - { - kind: "Pod", - apiVersions: ["v1"], - components: { - MenuItem: (props: PodLogsMenuProps) => , - }, - }, - ]; -} diff --git a/extensions/pod-menu/src/attach-menu.tsx b/extensions/pod-menu/src/attach-menu.tsx deleted file mode 100644 index fd6250bd30..0000000000 --- a/extensions/pod-menu/src/attach-menu.tsx +++ /dev/null @@ -1,106 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - - - -import React from "react"; -import { Renderer, Common } from "@k8slens/extensions"; - -type Pod = Renderer.K8sApi.Pod; - -const { - Component: { - createTerminalTab, - terminalStore, - MenuItem, - Icon, - SubMenu, - StatusBrick, - }, - Navigation, -} = Renderer; -const { - Util, - App, -} = Common; - -export interface PodAttachMenuProps extends Renderer.Component.KubeObjectMenuProps { -} - -export class PodAttachMenu extends React.Component { - async attachToPod(container?: string) { - const { object: pod } = this.props; - - const kubectlPath = App.Preferences.getKubectlPath() || "kubectl"; - const commandParts = [ - kubectlPath, - "attach", - "-i", - "-t", - "-n", pod.getNs(), - pod.getName(), - ]; - - if (window.navigator.platform !== "Win32") { - commandParts.unshift("exec"); - } - - if (container) { - commandParts.push("-c", container); - } - - const shell = createTerminalTab({ - title: `Pod: ${pod.getName()} (namespace: ${pod.getNs()}) [Attached]`, - }); - - terminalStore.sendCommand(commandParts.join(" "), { - enter: true, - tabId: shell.id, - }); - - Navigation.hideDetails(); - } - - render() { - const { object, toolbar } = this.props; - const containers = object.getRunningContainers(); - - if (!containers.length) return null; - - return ( - this.attachToPod(containers[0].name))}> - - Attach Pod - {containers.length > 1 && ( - <> - - - { - containers.map(container => { - const { name } = container; - - return ( - this.attachToPod(name))} - className="flex align-center" - > - - {name} - - ); - }) - } - - - )} - - ); - } -} diff --git a/extensions/pod-menu/src/logs-menu.tsx b/extensions/pod-menu/src/logs-menu.tsx deleted file mode 100644 index e5c8496d3d..0000000000 --- a/extensions/pod-menu/src/logs-menu.tsx +++ /dev/null @@ -1,87 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -import React from "react"; -import { Renderer, Common } from "@k8slens/extensions"; - -type Pod = Renderer.K8sApi.Pod; -type IPodContainer = Renderer.K8sApi.IPodContainer; - -const { - Component: { - logTabStore, - MenuItem, - Icon, - SubMenu, - StatusBrick, - }, - Navigation, -} = Renderer; -const { - Util, -} = Common; - -export interface PodLogsMenuProps extends Renderer.Component.KubeObjectMenuProps { -} - -export class PodLogsMenu extends React.Component { - showLogs(container: IPodContainer) { - Navigation.hideDetails(); - const pod = this.props.object; - - logTabStore.createPodTab({ - selectedPod: pod, - selectedContainer: container, - }); - } - - render() { - const { object: pod, toolbar } = this.props; - const containers = pod.getAllContainers(); - const statuses = pod.getContainerStatuses(); - - if (!containers.length) return null; - - return ( - this.showLogs(containers[0]))}> - - Logs - {containers.length > 1 && ( - <> - - - { - containers.map(container => { - const { name } = container; - const status = statuses.find(status => status.name === name); - const brick = status ? ( - - ) : null; - - return ( - this.showLogs(container))} - className="flex align-center" - > - {brick} - {name} - - ); - }) - } - - - )} - - ); - } -} diff --git a/extensions/pod-menu/src/shell-menu.tsx b/extensions/pod-menu/src/shell-menu.tsx deleted file mode 100644 index 36be7c470b..0000000000 --- a/extensions/pod-menu/src/shell-menu.tsx +++ /dev/null @@ -1,114 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - - - -import React from "react"; -import { Renderer, Common } from "@k8slens/extensions"; - -type Pod = Renderer.K8sApi.Pod; - -const { - Component: { - createTerminalTab, - terminalStore, - MenuItem, - Icon, - SubMenu, - StatusBrick, - }, - Navigation, -} = Renderer; -const { - Util, - App, -} = Common; - -export interface PodShellMenuProps extends Renderer.Component.KubeObjectMenuProps { -} - -export class PodShellMenu extends React.Component { - async execShell(container?: string) { - const { object: pod } = this.props; - - const kubectlPath = App.Preferences.getKubectlPath() || "kubectl"; - const commandParts = [ - kubectlPath, - "exec", - "-i", - "-t", - "-n", pod.getNs(), - pod.getName(), - ]; - - if (window.navigator.platform !== "Win32") { - commandParts.unshift("exec"); - } - - if (container) { - commandParts.push("-c", container); - } - - commandParts.push("--"); - - if (pod.getSelectedNodeOs() === "windows") { - commandParts.push("powershell"); - } else { - commandParts.push('sh -c "clear; (bash || ash || sh)"'); - } - - const shell = createTerminalTab({ - title: `Pod: ${pod.getName()} (namespace: ${pod.getNs()})`, - }); - - terminalStore.sendCommand(commandParts.join(" "), { - enter: true, - tabId: shell.id, - }); - - Navigation.hideDetails(); - } - - render() { - const { object, toolbar } = this.props; - const containers = object.getRunningContainers(); - - if (!containers.length) return null; - - return ( - this.execShell(containers[0].name))}> - - Shell - {containers.length > 1 && ( - <> - - - { - containers.map(container => { - const { name } = container; - - return ( - this.execShell(name))} - className="flex align-center" - > - - {name} - - ); - }) - } - - - )} - - ); - } -} diff --git a/extensions/pod-menu/tsconfig.json b/extensions/pod-menu/tsconfig.json deleted file mode 100644 index 5b6c61577e..0000000000 --- a/extensions/pod-menu/tsconfig.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "compilerOptions": { - "outDir": "dist", - "module": "CommonJS", - "target": "ES2017", - "lib": ["ESNext", "DOM", "DOM.Iterable"], - "moduleResolution": "Node", - "sourceMap": false, - "declaration": false, - "strict": false, - "noImplicitAny": true, - "skipLibCheck": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "experimentalDecorators": true, - "useDefineForClassFields": true, - "jsx": "react" - }, - "include": [ - "./*.ts", - "./*.tsx" - ], - "exclude": [ - "node_modules", - "*.js" - ] -} diff --git a/extensions/pod-menu/webpack.config.js b/extensions/pod-menu/webpack.config.js deleted file mode 100644 index 8fe82e48a7..0000000000 --- a/extensions/pod-menu/webpack.config.js +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ -const path = require("path"); - -module.exports = [ - { - entry: "./renderer.tsx", - context: __dirname, - target: "electron-renderer", - mode: "production", - optimization: { - minimize: false, - }, - module: { - rules: [ - { - test: /\.tsx?$/, - use: "ts-loader", - exclude: /node_modules/, - }, - ], - }, - externals: [ - { - "@k8slens/extensions": "var global.LensExtensions", - "react": "var global.React", - "react-dom": "var global.ReactDOM", - "mobx": "var global.Mobx", - "mobx-react": "var global.MobxReact", - }, - ], - resolve: { - extensions: [ ".tsx", ".ts", ".js" ], - }, - output: { - libraryTarget: "commonjs2", - globalObject: "this", - filename: "renderer.js", - path: path.resolve(__dirname, "dist"), - }, - }, -]; diff --git a/package.json b/package.json index 11dd80cb87..a7711d1fc1 100644 --- a/package.json +++ b/package.json @@ -59,9 +59,7 @@ "sentryDsn": "", "contentSecurityPolicy": "script-src 'unsafe-eval' 'self'; frame-src http://*.localhost:*/; img-src * data:", "welcomeRoute": "/welcome", - "extensions": [ - "pod-menu" - ] + "extensions": [] }, "engines": { "node": ">=16 <17" @@ -231,7 +229,6 @@ "joi": "^17.7.0", "js-yaml": "^4.1.0", "jsdom": "^16.7.0", - "lens-pod-menu": "file:./extensions/pod-menu", "lodash": "^4.17.15", "marked": "^4.2.4", "md5-file": "^5.0.0", @@ -249,7 +246,6 @@ "npm": "^8.19.3", "p-limit": "^3.1.0", "path-to-regexp": "^6.2.0", - "pod-menu": "file:./extensions/pod-menu", "proper-lockfile": "^4.1.2", "react": "^17.0.2", "react-dom": "^17.0.2",