use std::env;
use std::path::PathBuf;
use color_eyre::eyre::Result;
use etcetera::base_strategy::BaseStrategy;
use crate::command::CommandExt;
use crate::terminal::print_separator;
use crate::utils::require;
use crate::{HOME_DIR, XDG_DIRS};
use crate::{execution_context::ExecutionContext, utils::PathExt};
const UPDATE_PLUGINS: &str = "bin/update_plugins";
const TPM_PATH: &str = "plugins/tpm";
pub fn run_tpm(ctx: &ExecutionContext) -> Result<()> {
let tpm = match env::var("TMUX_PLUGIN_MANAGER_PATH") {
Ok(var) => PathBuf::from(var).join(UPDATE_PLUGINS),
Err(_) => {
#[cfg(unix)]
let xdg_path = XDG_DIRS.config_dir().join("tmux").join(TPM_PATH).join(UPDATE_PLUGINS);
#[cfg(windows)]
let xdg_path = HOME_DIR.join(".config/tmux").join(TPM_PATH).join(UPDATE_PLUGINS);
if xdg_path.exists() {
xdg_path
} else {
HOME_DIR.join(".tmux").join(TPM_PATH).join(UPDATE_PLUGINS)
}
}
}
.require()?;
print_separator("tmux plugins");
ctx.execute(tpm).arg("all").status_checked()
}
pub fn run_tpack(ctx: &ExecutionContext) -> Result<()> {
let tpack = require("tpack")?;
print_separator("tpack");
ctx.execute(tpack).args(["update", "all"]).status_checked()
}