rtx-cli 1.3.0

Polyglot runtime manager (asdf rust clone)
use std::fmt::{Display, Formatter};
use std::path::PathBuf;

use crate::cli::args::runtime::RuntimeArg;
use crate::file::display_path;

#[derive(Debug, Clone)]
pub enum PluginSource {
    ToolVersions(PathBuf),
    RtxRc(PathBuf),
    LegacyVersionFile(PathBuf),
    Argument(RuntimeArg),
    Environment(String, String),
}

impl Display for PluginSource {
    fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
        match self {
            PluginSource::ToolVersions(path) => write!(f, "{}", display_path(path)),
            PluginSource::RtxRc(path) => write!(f, "{}", display_path(path)),
            PluginSource::LegacyVersionFile(path) => write!(f, "{}", display_path(path)),
            PluginSource::Argument(arg) => write!(f, "--runtime {arg}"),
            PluginSource::Environment(k, v) => write!(f, "{k}={v}"),
        }
    }
}