Skip to main content

dre_core/
lib.rs

1//! DRE core: turns a project directory into a resolved, validated project, and runs it.
2
3pub mod catalog;
4pub mod codes;
5pub mod coltypes;
6pub mod config;
7pub mod constraints;
8pub mod dates;
9pub mod diag;
10pub mod engine;
11pub mod error;
12pub mod fs;
13pub mod lock;
14pub mod lookups;
15pub mod manager;
16pub mod manifest;
17pub mod message;
18mod mutable;
19pub mod numbers;
20pub mod occurrences;
21pub mod options;
22pub mod packages;
23pub mod parse;
24pub mod plugins;
25pub mod preflight;
26pub mod profiles;
27pub mod project;
28pub mod query;
29pub mod render;
30pub mod rows;
31pub mod run;
32pub mod run_results;
33pub mod runs;
34pub mod schedule;
35mod schema;
36pub mod secrets;
37pub mod selector;
38pub mod settings;
39pub mod sqlsplit;
40pub mod target;
41pub mod values;
42pub mod variables;
43pub mod yaml;
44
45pub use diag::{Diagnostic, Diagnostics, Severity};
46
47/// The version string `dre --version` prints. DRE has no released version yet.
48pub fn version() -> &'static str {
49    match env!("CARGO_PKG_VERSION") {
50        "0.0.0" => "unreleased",
51        v => v,
52    }
53}
54
55/// DRE's home directory: `~/.dre`.
56pub fn dre_home() -> std::path::PathBuf {
57    std::env::home_dir().unwrap_or_default().join(".dre")
58}
59
60/// A path with `/` separators on every platform, so messages and goldens read the same everywhere.
61pub fn slash(p: &std::path::Path) -> std::path::PathBuf {
62    std::path::PathBuf::from(p.to_string_lossy().replace('\\', "/"))
63}