35 lines
818 B
Rust
35 lines
818 B
Rust
use serde::Deserialize;
|
|
use tokio::process::Command;
|
|
|
|
use crate::{get_configs_path, run_command};
|
|
|
|
#[derive(Debug, Deserialize)]
|
|
pub struct TalosConfig {
|
|
pub context: String,
|
|
}
|
|
|
|
pub async fn get_current_context() -> Option<String> {
|
|
let path = get_configs_path().join("talosconfig");
|
|
|
|
tokio::fs::read(&path)
|
|
.await
|
|
.ok()
|
|
.and_then(|config| serde_yaml::from_slice(&config).ok())
|
|
.map(|config: TalosConfig| config.context)
|
|
}
|
|
|
|
pub async fn set_context(context: String) {
|
|
let path = get_configs_path().join("talosconfig");
|
|
|
|
let mut command = Command::new("talosctl");
|
|
command.args([
|
|
"config",
|
|
"--talosconfig",
|
|
path.to_str().expect("Path should be valid utf-8"),
|
|
"context",
|
|
&context,
|
|
]);
|
|
|
|
run_command(command).await;
|
|
}
|