Expand description
Taskdn - Rust library for parsing, querying, and manipulating Taskdn task files.
This library provides the core functionality for working with Taskdn’s markdown-based task management system. It handles parsing files with YAML frontmatter, validating against the specification, and performing CRUD operations.
§Features
- Parse markdown files with YAML frontmatter into typed entities
- Query tasks, projects, and areas with flexible filters
- Create/Update/Delete entities with automatic timestamp management
- Validate files against the Taskdn specification
- Preserve unknown frontmatter fields during round-trip serialization
- Process file system events into typed vault events
- Watch directories for changes (with the
watchfeature)
§Quick Start
ⓘ
use taskdn::{Taskdn, TaskdnConfig, TaskFilter, TaskStatus, NewTask};
use std::path::PathBuf;
// Initialize the SDK with your vault directories
let config = TaskdnConfig::new(
PathBuf::from("./tasks"),
PathBuf::from("./projects"),
PathBuf::from("./areas"),
);
let sdk = Taskdn::new(config)?;
// Create a new task
let path = sdk.create_task(NewTask::new("My new task"))?;
// List tasks by status
let ready_tasks = sdk.list_tasks(&TaskFilter::new().with_status(TaskStatus::Ready))?;
// Complete a task (automatically sets completed_at)
sdk.complete_task(&path)?;§Core Types
Taskdn- The main SDK entry pointTask,Project,Area- Parsed entity typesNewTask,NewProject,NewArea- Builder types for creating entitiesTaskFilter,ProjectFilter,AreaFilter- Query filtersTaskStatus,ProjectStatus,AreaStatus- Status enums
§File Watching
Enable the watch feature to use the built-in file watcher:
[dependencies]
taskdn = { version = "0.1", features = ["watch"] }Or process file changes manually using Taskdn::process_file_change:
ⓘ
use taskdn::{Taskdn, FileChangeKind, VaultEvent};
// When your file watcher reports a change:
if let Some(event) = sdk.process_file_change(&path, FileChangeKind::Modified)? {
match event {
VaultEvent::TaskUpdated(task) => println!("Updated: {}", task.title),
VaultEvent::TaskCreated(task) => println!("Created: {}", task.title),
_ => {}
}
}§Modules
types- All entity types, status enums, and builder typesvalidation- Spec compliance warnings
Re-exports§
pub use types::Area;pub use types::AreaStatus;pub use types::AreaUpdates;pub use types::DateTimeValue;pub use types::FileReference;pub use types::NewArea;pub use types::NewProject;pub use types::NewTask;pub use types::ParsedArea;pub use types::ParsedProject;pub use types::ParsedTask;pub use types::Project;pub use types::ProjectStatus;pub use types::ProjectUpdates;pub use types::Task;pub use types::TaskStatus;pub use types::TaskUpdates;pub use validation::ValidationWarning;
Modules§
- types
- Core types for the Taskdn library.
- validation
- Validation warnings for spec compliance.
Structs§
- Area
Filter - Filter criteria for querying areas.
- Batch
Result - Result type for batch operations that can partially succeed.
- Project
Filter - Filter criteria for querying projects.
- Task
Filter - Filter criteria for querying tasks.
- Taskdn
- The main entry point for the Taskdn SDK.
- Taskdn
Config - Configuration for initializing the Taskdn SDK.
Enums§
- Error
- All errors that can occur in the taskdn library.
- File
Change Kind - The kind of file system change that occurred.
- Vault
Event - A typed event representing a change in the vault.
Type Aliases§
- Result
- Result type alias for taskdn operations.