pub use crate::core::impls::{
GitignoreTemplateManager, LocalGitignoreTemplateManager,
RemoteGitignoreTemplateManager,
};
#[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 struct QualifiedString {
pub value: String,
pub kind: StringKind,
}
#[derive(Clone, PartialEq, Debug)]
pub enum ExitKind {
VersionInfos,
HelpInfos,
AuthorInfos,
Error,
}
#[derive(Clone, PartialEq, Debug, Copy)]
pub enum StringKind {
Remote,
Local,
Mixed,
}
pub trait TemplateGenerator: TemplateLister {
fn generate(
&self,
template_names: &[String],
) -> Result<QualifiedString, ProgramExit>;
fn generate_with_template_check(
&self,
template_names: &[String],
) -> Result<QualifiedString, ProgramExit>;
}
pub trait TemplateLister {
fn list(&self) -> Result<QualifiedString, ProgramExit>;
}