1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//! # Pace Core

pub(crate) mod commands;
pub(crate) mod config;
pub(crate) mod domain;
pub(crate) mod error;
pub(crate) mod service;
pub(crate) mod storage;
pub(crate) mod util;

// Constants
pub mod constants {
    pub const PACE_APP_NAME: &str = "pace";
    pub const PACE_CORE_VERSION: &str = env!("CARGO_PKG_VERSION");
    pub const PACE_CONFIG_FILENAME: &str = "pace.toml";
    pub const PACE_ACTIVITY_LOG_FILENAME: &str = "activities.pace.toml";
    pub const PACE_DOCS_URL: &str = "https://pace.cli.rs/docs";
    pub const PACE_DEV_DOCS_URL: &str = "https://pace.cli.rs/dev-docs";
}

// Re-export commonly used external crates
pub use merge;
pub use toml;

// Public API
pub use crate::{
    commands::{
        adjust::AdjustCommandOptions,
        begin::BeginCommandOptions,
        docs::DocsCommandOptions,
        end::EndCommandOptions,
        hold::{HoldCommandOptions, HoldOptions},
        now::NowCommandOptions,
        resume::{ResumeCommandOptions, ResumeOptions},
        review::{DateFlags, ExpensiveFlags, ReviewCommandOptions, TimeFlags},
        DeleteOptions, EndOptions, KeywordOptions, UpdateOptions,
    },
    config::{
        find_root_config_file_path, find_root_project_file, get_activity_log_paths,
        get_config_paths, get_home_activity_log_path, get_home_config_path, ActivityLogFormatKind,
        ActivityLogStorageKind, AutoArchivalConfig, DatabaseConfig, ExportConfig, GeneralConfig,
        InboxConfig, PaceConfig, PomodoroConfig, ReviewConfig,
    },
    domain::{
        activity::{
            Activity, ActivityEndOptions, ActivityGuid, ActivityItem, ActivityKind,
            ActivityKindOptions,
        },
        activity_log::ActivityLog,
        filter::{ActivityStatusFilter, FilteredActivities},
        intermission::IntermissionAction,
        review::{ActivitySummary, Highlights, ReviewSummary},
        status::ActivityStatus,
        time::{
            calculate_duration, duration_to_str, extract_time_or_now, get_time_frame_from_flags,
            parse_time_from_user_input, PaceDate, PaceDateTime, PaceDuration, PaceDurationRange,
            PaceTime, PaceTimeFrame, TimeRangeOptions,
        },
    },
    error::{PaceError, PaceErrorKind, PaceOptResult, PaceResult, TestResult},
    service::{activity_store::ActivityStore, activity_tracker::ActivityTracker},
    storage::{
        file::TomlActivityStorage, get_storage_from_config, in_memory::InMemoryActivityStorage,
        ActivityQuerying, ActivityReadOps, ActivityStateManagement, ActivityStorage,
        ActivityWriteOps, StorageKind, SyncStorage,
    },
    util::overwrite_left_with_right,
};