pub use crate::core::impls::GitignoreTemplateManager;
use crate::http_client::HttpClient;
#[derive(Clone, PartialEq, Debug)]
pub struct ProgramExit {
pub message: String,
pub exit_status: i32,
pub styled_message: Option<String>,
pub kind: ExitKind,
}
#[derive(Clone, PartialEq, Debug)]
pub enum ExitKind {
VersionInfos,
HelpInfos,
AuthorInfos,
Error,
}
pub trait TemplateGenerator: TemplateLister {
fn generate_from_api(
http_client: &impl HttpClient,
endpoint_uri: Option<&str>,
template_names: &[String],
) -> Result<String, ProgramExit>;
fn generate_from_api_with_template_check(
http_client: &impl HttpClient,
generator_endpoint_uri: Option<&str>,
lister_endpoint_uri: Option<&str>,
template_names: &[String],
) -> Result<String, ProgramExit>;
}
pub trait TemplateLister {
fn list_from_api(
http_client: &impl HttpClient,
endpoint_uri: Option<&str>,
) -> Result<String, ProgramExit>;
}