refactor: rewrite in rust
This commit is contained in:
parent
20a3e8b437
commit
ed493cff29
72 changed files with 5684 additions and 3688 deletions
56
src/cli/commands/todo.rs
Normal file
56
src/cli/commands/todo.rs
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
use std::fs;
|
||||
|
||||
use walkdir::WalkDir;
|
||||
|
||||
use crate::config::Settings;
|
||||
use crate::error::StreamdError;
|
||||
use crate::extract::parse_markdown_file;
|
||||
use crate::localize::{localize_stream_file, TaskConfiguration};
|
||||
use crate::models::LocalizedShard;
|
||||
use crate::query::find_shard_by_position;
|
||||
|
||||
fn all_files() -> Result<Vec<LocalizedShard>, StreamdError> {
|
||||
let settings = Settings::load()?;
|
||||
let mut shards = Vec::new();
|
||||
|
||||
for entry in WalkDir::new(&settings.base_folder)
|
||||
.max_depth(1)
|
||||
.into_iter()
|
||||
.filter_map(|e| e.ok())
|
||||
{
|
||||
let path = entry.path();
|
||||
if path.extension().map(|e| e == "md").unwrap_or(false) {
|
||||
let file_name = path.to_string_lossy().to_string();
|
||||
let content = fs::read_to_string(path)?;
|
||||
let stream_file = parse_markdown_file(&file_name, &content);
|
||||
|
||||
if let Ok(shard) = localize_stream_file(&stream_file, &TaskConfiguration) {
|
||||
shards.push(shard);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Ok(shards)
|
||||
}
|
||||
|
||||
pub fn run() -> Result<(), StreamdError> {
|
||||
let all_shards = all_files()?;
|
||||
|
||||
for task_shard in find_shard_by_position(&all_shards, "task", "open") {
|
||||
if let Some(file_path) = task_shard.location.get("file") {
|
||||
let content = fs::read_to_string(file_path)?;
|
||||
let lines: Vec<&str> = content.lines().collect();
|
||||
|
||||
let start = task_shard.start_line.saturating_sub(1);
|
||||
let end = std::cmp::min(task_shard.end_line, lines.len());
|
||||
|
||||
println!("--- {}:{} ---", file_path, task_shard.start_line);
|
||||
for line in &lines[start..end] {
|
||||
println!("{}", line);
|
||||
}
|
||||
println!();
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue