krabby_cli/
messages.rs

1use std::fmt::{self, Display};
2
3use owo_colors::OwoColorize;
4
5use crate::project::ProjectName;
6
7pub enum Message {
8    RegisterProject,
9    RegisterScript,
10    ProjectNotFound(ProjectName),
11    ProjectFileNotFound(ProjectName, String),
12    RegisterProjectSuccess(ProjectName),
13    RegisterProjectFail(ProjectName, anyhow::Error),
14}
15
16impl Message {
17    pub fn println(self) {
18        println!("{}", self)
19    }
20}
21
22impl Display for Message {
23    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
24        let message = match self {
25            Self::RegisterProject => {
26                format!(
27                    "You can {} a new project with {}",
28                    "register".green().bold(),
29                    "'kb project add PROJECT_NAME PROJECT_PATH'".bold()
30                )
31            }
32            Self::RegisterScript => {
33                format!(
34                    "You can {} a new script with {}",
35                    "register".green().bold(),
36                    "'kb script add SCRIPT_NAME SCRIPT_COMMAND'".bold()
37                )
38            }
39            Self::ProjectNotFound(project_name) => {
40                format!(
41                    "Project {} was {} on database! Are you sure you registered it?",
42                    project_name.bold(),
43                    "not found".red().bold(),
44                )
45            }
46            Self::ProjectFileNotFound(project_name, path) => {
47                format!("I dont know how to tell you this, but there was a problem with the registry.\nApparently the {} directory {} or {} {}.", project_name.bold(), "is missing".red().bold(), path, "is not a directory".red().bold())
48            }
49            Self::RegisterProjectSuccess(project_name) => {
50                format!("{} was registered successfully!", project_name.bold())
51            }
52
53            Self::RegisterProjectFail(project_name, error) => {
54                format!(
55                    "There was a problem registering {}!\n{}",
56                    project_name.bold(),
57                    error
58                )
59            }
60        };
61        write!(f, "{}", message)
62    }
63}