Added a tablize function and did more

re coloring.

The tablize function isn't quite 100% there yet.
It mostly works, but I need to figure out word
wrapping for cells.
This commit is contained in:
Pyro57000
2025-05-30 10:24:45 -05:00
parent f8ec8de137
commit 21d8da25e3
10 changed files with 280 additions and 112 deletions

View File

@@ -11,8 +11,12 @@ use std::str::FromStr;
use colored::Colorize;
use crate::get_user_input;
use crate::tableize;
use crate::Project;
use crate::box_controls::make_box;
use crate::print_success;
use crate::print_error;
use crate::print_informational;
pub fn
switch_project(projects: &mut Vec<Project>){
@@ -29,19 +33,19 @@ switch_project(projects: &mut Vec<Project>){
for project in projects{
if project.id == new_id{
project.active = true;
println!("project found switching to {} {}", project.customer, project.project_name);
print_success(format!("project found switching to {} {}", project.customer, project.project_name));
env::set_var("CURRENT_PROJECT_BOX", project.boxname.clone());
}
else if project.id != new_id{
project.active = false;
}
else{
println!("error unknown project id");
print_error("error selecting new project", String::from("unknown project id selected."));
}
}
}
else{
println!("error we need user input here dummy!");
print_error("error selecting new project", String::from("we need input here dummy!"));
}
}
@@ -51,7 +55,13 @@ pub fn save_projects(projects: &Vec<Project>, config_path: &PathBuf){
let mut active_set = false;
save_file_path.pop();
save_file_path.push("projects.conf");
let mut save_file = fs::File::create(save_file_path).expect("error creating save_file");
let save_file_res = fs::File::create(save_file_path);
if save_file_res.is_err(){
let error = save_file_res.err().unwrap().to_string();
print_error("error creating save file.", error);
return;
}
let mut save_file = save_file_res.unwrap();
save_file.write_all(b"customer:name:notes:files:active:time:box_name:stage\n").expect("error writing first line to file");
for project in projects{
let default = format!{"{}:{}:{}:{}:", project.customer, project.project_name, project.notes_folder.display(), project.files_folder.display()};
@@ -66,7 +76,13 @@ pub fn save_projects(projects: &Vec<Project>, config_path: &PathBuf){
else{
_outline = format!("{}no:{}:{}\n", default, project.boxname, project.stage);
}
save_file.write_all(_outline.as_bytes()).expect("error writing outline");
let write_res = save_file.write_all(_outline.as_bytes());
if write_res.is_err(){
let error = write_res.err().unwrap().to_string();
print_error("error saving projects.conf file!", error);
return;
}
write_res.unwrap();
}
}
@@ -357,11 +373,14 @@ pub fn get_projects(config_path: &PathBuf, show: bool) -> Option<Vec<Project>>{
}
pub fn print_upcoming_projects(projects: &Vec<Project>){
let mut lines = vec![String::from("CUSTOMER||PROJECT")];
for project in projects{
if project.stage.contains("upcoming"){
println!("{}:{}", project.customer, project.project_name);
let new_line = format!("{}||{}", project.customer, project.project_name);
lines.push(new_line);
}
}
tableize(lines);
}
pub fn promote_project(projects: &mut Vec<Project>, config_path: &PathBuf, project_dir: &PathBuf, notes_dir: &PathBuf, tools_dir: &PathBuf, boxtemplate: &String, fingerprint: bool){
@@ -418,7 +437,7 @@ pub fn promote_project(projects: &mut Vec<Project>, config_path: &PathBuf, proje
println!("failed to copy the project folder, try to move it manually!");
}
if note_move_success.success(){
println!("we copied the notes folder correctly!!");
print_success("we copied the notes folder correctly!!");
let mut remove_folder = PathBuf::new();
remove_folder.push(&project.files_folder);
remove_folder.pop();
@@ -465,11 +484,15 @@ pub fn promote_project(projects: &mut Vec<Project>, config_path: &PathBuf, proje
projects.clear();
projects.append(&mut projects_to_save);
save_projects(&projects_to_save, config_path);
print_success("project promoted successfully!");
}
pub fn list_projects(projects: &Vec<Project>){
println!("+++++++++++++++++++++");
let mut lines = vec!["customer||project||stage".to_owned()];
for project in projects{
println!("++Customer: {}|Project name: {}|Stage: {}++",project.customer ,project.project_name, project.stage)}
println!("++++++++++++++++++++")
}
let new_line = format!("{}||{}||{}", project.customer, project.project_name, project.stage);
lines.push(new_line);
}
tableize(lines);
}