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}