Add: add template for notes support

This commit is contained in:
Kirill Samoylenkov 2025-12-01 15:25:37 +05:00
parent 21e08b17ce
commit ddc8d65169
5 changed files with 70 additions and 1 deletions

View file

@ -25,6 +25,9 @@ pub enum Commands {
/// Work with user git projects
Project(ProjectsCommand),
/// Notes for projects
Notes(NotesCommand),
}
#[derive(Args)]
@ -87,3 +90,21 @@ pub enum ProjectsAction {
/// List of all user projects
List,
}
#[derive(Args)]
pub struct NotesCommand {
#[command(subcommand)]
pub action: NotesAction,
}
#[derive(Subcommand)]
pub enum NotesAction {
/// Add project note
Add,
/// Remove project note
Remove,
/// List of all project notes
List,
}

View file

@ -1,4 +1,7 @@
use serde::{Deserialize, Serialize};
use crate::notes::Note;
use std::path::PathBuf;
#[derive(Debug, Deserialize, Serialize)]
@ -7,6 +10,7 @@ pub struct Config {
pub timer_concentrate_mins: u8,
pub timer_rest_mins: u8,
pub projects: Vec<PathBuf>,
pub notes: Vec<Note>,
}
impl Config {
@ -16,6 +20,7 @@ impl Config {
timer_concentrate_mins: 45,
timer_rest_mins: 15,
projects: Vec::new(),
notes: Vec::new(),
}
}
}

View file

@ -2,6 +2,7 @@ mod cli;
mod config;
mod core;
mod misc;
mod notes;
mod projects;
mod templates;
mod timer;
@ -12,7 +13,7 @@ use strfmt::strfmt;
use std::collections::HashMap;
use std::{fs, process};
use cli::{CLI, Commands, PomodoroAction, ProjectsAction, TemplateAction};
use cli::{CLI, Commands, NotesAction, PomodoroAction, ProjectsAction, TemplateAction};
use config::{Config, load_config, save_config};
use projects::{commits_info, repository_status};
use templates::{list_templates, load_template};
@ -243,6 +244,19 @@ fn process_command(mut cfg: Config) {
}
}
},
Some(Commands::Notes(notes_command)) => match notes_command.action {
NotesAction::Add => {
todo!("Add notes!");
}
NotesAction::Remove => {
todo!("Remove notes!");
}
NotesAction::List => {
todo!("List of notes!");
// let notes = cfg.notes;
}
},
None => {
eprintln!("No command provided. Use --help for usage.");
process::exit(1);

3
src/notes/mod.rs Normal file
View file

@ -0,0 +1,3 @@
mod notes;
pub use notes::Note;

26
src/notes/notes.rs Normal file
View file

@ -0,0 +1,26 @@
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
#[derive(Debug, Deserialize, Serialize)]
pub struct Note {
pub project_dir: PathBuf,
pub project_note_info: NoteInfo,
}
impl Note {
pub fn render(&self) -> String {
format!(
"{}\n\nDescription:\n{}",
self.project_note_info.name, self.project_note_info.description
)
.to_string()
}
}
#[derive(Debug, Deserialize, Serialize)]
pub struct NoteInfo {
pub id: u8,
pub name: String,
pub description: String,
}