atuin_dotfiles/shell/
xonsh.rsuse std::path::PathBuf;
use crate::store::{var::VarStore, AliasStore};
async fn cached_aliases(path: PathBuf, store: &AliasStore) -> String {
match tokio::fs::read_to_string(path).await {
Ok(aliases) => aliases,
Err(r) => {
store.xonsh().await.unwrap_or_else(|e| {
format!("echo 'Atuin: failed to read and generate aliases: \n{r}\n{e}'",)
})
}
}
}
async fn cached_vars(path: PathBuf, store: &VarStore) -> String {
match tokio::fs::read_to_string(path).await {
Ok(vars) => vars,
Err(r) => {
store.xonsh().await.unwrap_or_else(|e| {
format!("echo 'Atuin: failed to read and generate vars: \n{r}\n{e}'",)
})
}
}
}
pub async fn alias_config(store: &AliasStore) -> String {
let aliases = atuin_common::utils::dotfiles_cache_dir().join("aliases.xsh");
if aliases.exists() {
return cached_aliases(aliases, store).await;
}
if let Err(e) = store.build().await {
return format!("echo 'Atuin: failed to generate aliases: {}'", e);
}
cached_aliases(aliases, store).await
}
pub async fn var_config(store: &VarStore) -> String {
let vars = atuin_common::utils::dotfiles_cache_dir().join("vars.xsh");
if vars.exists() {
return cached_vars(vars, store).await;
}
if let Err(e) = store.build().await {
return format!("echo 'Atuin: failed to generate vars: {}'", e);
}
cached_vars(vars, store).await
}