refactor: remove duplicate code
This commit is contained in:
parent
b8a73bfb3e
commit
ee96033639
5 changed files with 61 additions and 119 deletions
|
|
@ -4,38 +4,13 @@ use std::process::Command;
|
|||
|
||||
use chrono::{Days, NaiveDate, NaiveDateTime, NaiveTime, TimeZone, Utc};
|
||||
use chrono_tz::Tz;
|
||||
use walkdir::WalkDir;
|
||||
|
||||
use crate::config::Settings;
|
||||
use crate::error::StreamdError;
|
||||
use crate::extract::parse_markdown_file;
|
||||
use crate::localize::localize_stream_file;
|
||||
use crate::models::{LocalizedShard, RepositoryConfiguration};
|
||||
use crate::models::RepositoryConfiguration;
|
||||
use crate::timesheet::load_repository_config;
|
||||
|
||||
fn load_all_shards(base_folder: &Path, tz: Tz) -> Result<Vec<LocalizedShard>, StreamdError> {
|
||||
let config = RepositoryConfiguration::new();
|
||||
let mut shards = Vec::new();
|
||||
|
||||
for entry in WalkDir::new(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, &config, tz) {
|
||||
shards.push(shard);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Ok(shards)
|
||||
}
|
||||
use super::load_markdown_shards;
|
||||
|
||||
pub fn run(date: Option<String>) -> Result<(), StreamdError> {
|
||||
let settings = Settings::load()?;
|
||||
|
|
@ -69,7 +44,7 @@ pub fn run(date: Option<String>) -> Result<(), StreamdError> {
|
|||
.unwrap()
|
||||
.with_timezone(&Utc);
|
||||
|
||||
let all_shards = load_all_shards(base_folder, tz)?;
|
||||
let all_shards = load_markdown_shards(base_folder, &RepositoryConfiguration::new(), tz)?;
|
||||
let mut daily_shards: Vec<_> = all_shards
|
||||
.into_iter()
|
||||
.filter(|s| {
|
||||
|
|
@ -77,8 +52,9 @@ pub fn run(date: Option<String>) -> Result<(), StreamdError> {
|
|||
.get("file_type")
|
||||
.map(|v| v == "daily")
|
||||
.unwrap_or(false)
|
||||
&& s.moment >= day_start
|
||||
&& s.moment < day_end
|
||||
})
|
||||
.filter(|s| s.moment >= day_start && s.moment < day_end)
|
||||
.collect();
|
||||
daily_shards.sort_by_key(|s| s.moment);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue