use crate::docs::Locations;
pub fn providers_doc(docs: &Locations) -> String {
format!("{}/providers.md", docs.pi_docs)
}
pub fn provider_login_help(docs: &Locations) -> String {
let docs = &docs.pi_docs;
format!(
"Use /login to log into a provider via OAuth or API key. See:\n {docs}/providers.md\n {docs}/models.md"
)
}
pub fn no_models_available(docs: &Locations) -> String {
format!("No models available. {}", provider_login_help(docs))
}
pub fn no_model_selected(docs: &Locations) -> String {
format!(
"No model selected.\n\n{}\n\nThen use /model to select a model.",
provider_login_help(docs)
)
}
pub fn no_api_key_found(provider: &str, docs: &Locations) -> String {
let provider = if provider == "unknown" {
"the selected model"
} else {
provider
};
format!(
"No API key found for {provider}.\n\n{}",
provider_login_help(docs)
)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn help_names_doc_pages() {
let docs = Locations {
pi_docs: "/agent/docs/pi/docs".into(),
..Locations::default()
};
assert_eq!(
provider_login_help(&docs),
"Use /login to log into a provider via OAuth or API key. See:\n /agent/docs/pi/docs/providers.md\n /agent/docs/pi/docs/models.md"
);
assert_eq!(providers_doc(&docs), "/agent/docs/pi/docs/providers.md");
}
}