INNER CODE UNIT · Rust
delete_context
kubie-org/kubie · src/kubeconfig.rs:141
pub fn delete_context(&mut self, name: &str) -> Result<()> {
let context = self
.find_context_by_name(name)
.ok_or_else(|| anyhow!("Context not found"))?;
let mut kubeconfig: KubeConfig = ioutil::read_yaml(context.source.as_ref())?;
// Retain all contexts whose name is not our context.
kubeconfig.contexts.retain(|x| x.name != context.item.name);
// Retain all clusters whose name is not our context's cluster reference.
kubeconfig.clusters.retain(|x| x.name != context.item.context.cluster);
// Retain all users whose name is not our context's user reference.
kubeconfig.users.retain(|x| x.name != context.item.context.user);
if kubeconfig.contexts.is_empty() && kubeconfig.clusters.is_empty() && kubeconfig.users.is_empty() {
// If the kubeconfig is empty after removing the context and dangling references,