gitignore_template_generator/
printer.rs

1use crate::{
2    constant::{help_texts, template_manager},
3    core::{ProgramExit, QualifiedString},
4};
5
6pub enum Data<'a> {
7    QualifiedString(&'a QualifiedString),
8    ProgramExit(&'a ProgramExit),
9    EnvVarReset(&'a str),
10    EnvVarRemovalBefore(),
11    EnvVarRemovalAfter(),
12    Reset(),
13    Removed(),
14    TestContextDropped(),
15    TestContextCreated(),
16    DefaultTimeout(),
17}
18
19pub fn pp(data: &Data) {
20    let value = ppg(data);
21    match data {
22        Data::ProgramExit(_) => eprintln!("{value}"),
23        _ => println!("{value}"),
24    }
25}
26
27pub fn ppg(data: &Data) -> String {
28    match data {
29        Data::QualifiedString(qs) => qs.value.clone(),
30        Data::ProgramExit(pe) => pe.message.clone(),
31        Data::EnvVarReset(ev) => help_texts::ENV_VAR_RESET
32            .replace("{name}", template_manager::HOME_ENV_VAR)
33            .replace("{value}", ev),
34        Data::EnvVarRemovalBefore() => {
35            help_texts::ENV_VAR_REMOVAL_BEFORE.replace("{name}", template_manager::HOME_ENV_VAR)
36        }
37        Data::EnvVarRemovalAfter() => {
38            help_texts::ENV_VAR_REMOVAL_AFTER.replace("{name}", template_manager::HOME_ENV_VAR)
39        }
40        Data::Reset() => help_texts::RESET.to_string(),
41        Data::Removed() => help_texts::REMOVED.to_string(),
42        Data::TestContextDropped() => help_texts::TEST_CXT_DROPPED.to_string(),
43        Data::TestContextCreated() => help_texts::TEST_CTX_CREATED.to_string(),
44        Data::DefaultTimeout() => help_texts::DEFAULT_TIMEOUT
45            .replace("{second}", template_manager::TIMEOUT)
46            .replace("{millis}", template_manager::TIMEOUT_MILLISECOND),
47    }
48}