macro_rules! include_trimmed {
    ($path:expr) => {
        include_str!($path).trim_ascii_end()
    };
}

macro_rules! include_shell {
    ($path:expr) => {
        include_trimmed!(concat!("shell/", $path))
    };
}

pub struct Bash<'a> {
    pub include_guard: &'a str,
    pub main: &'a str,
    pub preexec: &'a str,
}

pub const BASH: Bash<'_> = Bash {
    include_guard: include_shell!("atuin.bash.d/include-guard.bash"),
    main: include_shell!("atuin.bash"),
    preexec: include_trimmed!("../vendor/bash-preexec/bash-preexec.sh"),
};

pub const FISH: &str = include_shell!("atuin.fish");
pub const NU: &str = include_shell!("atuin.nu");
pub const POWERSHELL: &str = include_shell!("atuin.ps1");
pub const XONSH: &str = include_shell!("atuin.xsh");
pub const ZSH: &str = include_shell!("atuin.zsh");
