1use clap::ValueEnum;
2use owo_colors::OwoColorize;
3use serde::{Deserialize, Serialize};
4use std::fmt::Display;
5
6#[derive(Deserialize, Serialize)]
7pub struct Task {
8 pub id: u16,
9 pub content: String,
10 pub status: TaskStatus,
11}
12
13impl Display for Task {
14 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
15 write!(f, "{}. {}", self.id.green(), self.content.bright_purple())
16 }
17}
18
19#[derive(Clone, Copy, Default, Deserialize, PartialEq, Serialize, ValueEnum)]
20pub enum TaskStatus {
21 Complete,
22 InProgress,
23 #[default]
24 ToDo,
25}
26
27impl Display for TaskStatus {
28 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
29 match self {
30 TaskStatus::Complete => write!(f, "Complete"),
31 TaskStatus::InProgress => write!(f, "In Progress"),
32 TaskStatus::ToDo => write!(f, "TO-DO"),
33 }
34 }
35}