62 lines
1.9 KiB
Rust
62 lines
1.9 KiB
Rust
use tas::repo::{self, Repository};
|
|
use xdg::BaseDirectories;
|
|
|
|
fn main() {
|
|
let xdg_dirs = BaseDirectories::with_prefix(env!("CARGO_PKG_NAME")).unwrap();
|
|
let fs_repo = repo::fs::FsRepo::new(xdg_dirs.clone());
|
|
let sqlite_repo = repo::sqlite::SqliteRepo::new(xdg_dirs.clone()).unwrap();
|
|
|
|
log::info!("active tasks");
|
|
|
|
let fs_tasks = fs_repo.get_tasks(false).unwrap();
|
|
if !fs_tasks.is_empty() {
|
|
for task in fs_tasks {
|
|
log::info!("task: {}", task.name);
|
|
log::info!(" inserting...");
|
|
|
|
sqlite_repo
|
|
.insert_task(repo::InsertTaskData {
|
|
name: task.name,
|
|
project: task.project,
|
|
link: task.link,
|
|
dir_path: task.dir_path,
|
|
index: None,
|
|
finished_at: None,
|
|
})
|
|
.unwrap();
|
|
|
|
log::info!(" inserted");
|
|
}
|
|
}
|
|
|
|
log::info!("finished tasks");
|
|
|
|
let fs_tasks = fs_repo.get_tasks(true).unwrap();
|
|
if !fs_tasks.is_empty() {
|
|
let meta = std::fs::metadata(xdg_dirs.get_data_file(repo::fs::FINISHED_DATA_FILE)).unwrap();
|
|
let finished_at = meta
|
|
.modified()
|
|
.map(time::OffsetDateTime::from)
|
|
.unwrap_or_else(|_| time::OffsetDateTime::now_utc());
|
|
|
|
for task in fs_tasks {
|
|
log::info!("task: {}", task.name);
|
|
log::info!(" inserting...");
|
|
|
|
sqlite_repo
|
|
.insert_task(repo::InsertTaskData {
|
|
name: task.name,
|
|
project: task.project,
|
|
link: task.link,
|
|
dir_path: task.dir_path,
|
|
index: None,
|
|
finished_at: Some(finished_at),
|
|
})
|
|
// TODO: think of a better solution than idx
|
|
.ok();
|
|
|
|
log::info!(" inserted");
|
|
}
|
|
}
|
|
}
|