From 45a9f85f6d78ace592dff825aec5350a5b93a2d2 Mon Sep 17 00:00:00 2001 From: Nick Mitchell Date: Wed, 29 Dec 2021 14:10:40 -0500 Subject: [PATCH] fix(plugins/plugin-kubectl): kubectl delete does not handle some shell syntax e.g. `kubectl delete pod mypod || true` --- .../src/controller/kubectl/delete.ts | 26 +++++++++++-------- .../src/controller/kubectl/exec.ts | 2 +- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/plugins/plugin-kubectl/src/controller/kubectl/delete.ts b/plugins/plugin-kubectl/src/controller/kubectl/delete.ts index 9fa2ae3b83c..df46698eb57 100644 --- a/plugins/plugin-kubectl/src/controller/kubectl/delete.ts +++ b/plugins/plugin-kubectl/src/controller/kubectl/delete.ts @@ -18,7 +18,7 @@ import { Arguments, Registrar } from '@kui-shell/core' import defaultFlags from './flags' import { KubeOptions } from './options' -import { doExecWithStatus } from './exec' +import { doExecWithStatus, doExecWithPty, reallyNeedsPty } from './exec' import deleteDirect from '../client/direct/delete' import { FinalState } from '../../lib/model/states' @@ -42,16 +42,20 @@ export const doDelete = (command = 'kubectl') => async (args: Arguments( */ export function reallyNeedsPty({ argvNoOptions, parsedOptions }: Pick) { const test1 = (_: string) => /(\$\(|`)/.test(_) // subprocess execution? - const test2 = (_: string) => /^\s*(\||>|>>)\s*$/.test(_) || test1(_) + const test2 = (_: string) => /^\s*(\|\||\||>|>>)\s*$/.test(_) || test1(_) return !!argvNoOptions.find(test2) || !!Object.values(parsedOptions).find(test1) }