scsys_config/
lib.rs

1/*
2    Appellation: scsys-config <library>
3    Contrib: @FL03
4*/
5//! A collection of common configuration primitives and utilities used throughout the
6//! [scsys-io](https://scsys.io) ecosystem.
7//!
8#![crate_type = "lib"]
9#![doc(
10    html_logo_url = "https://raw.githubusercontent.com/scattered-systems/.github/main/assets/logo.png",
11    html_favicon_url = "https://raw.githubusercontent.com/scattered-systems/.github/main/assets/favicon.ico"
12)]
13
14#[doc(no_inline)]
15#[cfg(feature = "config")]
16pub use config;
17
18#[macro_use]
19pub(crate) mod macros {
20    #[macro_use]
21    pub mod config;
22    #[macro_use]
23    pub mod seal;
24}
25
26#[doc(inline)]
27pub use self::{
28    consts::*, error::*, services::prelude::*, traits::prelude::*, types::prelude::*,
29    utils::prelude::*,
30};
31/// the `error` module defines the error-handling routines for the crate
32pub mod error;
33pub mod services;
34
35/// constants declared for the configuration module
36pub mod consts {
37    /// The default environment variable prefix used for configuration schemas.
38    pub const DEFAULT_ENV_PREFIX: &str = "APP";
39    /// The default environment variable separator used for configuration schemas.
40    pub const DEFAULT_ENV_SEPARATOR: &str = "_";
41    /// The standard artifacts directory name
42    pub const ARTIFACTS: &str = ".artifacts";
43    /// The standard cache directory name
44    pub const CACHE_DIR: &str = ".cache";
45    /// The standard configuration directory name
46    pub const CONFIG_DIR: &str = ".config";
47}
48
49/// this module is used to implement various traits supporting the configuration module
50pub mod traits {
51    #[doc(inline)]
52    pub use self::prelude::*;
53
54    pub mod configure;
55
56    pub(crate) mod prelude {
57        #[doc(inline)]
58        pub use super::configure::*;
59    }
60}
61/// various types used throughout the configuration module
62pub mod types {
63    #[doc(inline)]
64    pub use self::prelude::*;
65
66    pub mod environment;
67    pub mod log_level;
68    pub mod mode;
69    pub mod network_address;
70    pub mod scope;
71
72    pub(crate) mod prelude {
73        #[doc(inline)]
74        pub use super::environment::*;
75        #[doc(inline)]
76        pub use super::log_level::*;
77        #[doc(inline)]
78        pub use super::mode::*;
79        #[doc(inline)]
80        pub use super::network_address::*;
81        #[doc(inline)]
82        pub use super::scope::*;
83    }
84}
85
86pub mod utils {
87    #[doc(inline)]
88    pub use self::prelude::*;
89
90    pub mod fs;
91    pub mod vars;
92
93    pub(crate) mod prelude {
94        #[allow(unused_imports)]
95        #[doc(inline)]
96        pub use super::fs::*;
97        #[doc(inline)]
98        pub use super::vars::*;
99    }
100}
101
102pub mod prelude {
103    #[doc(no_inline)]
104    pub use crate::consts::*;
105    #[doc(no_inline)]
106    pub use crate::error::*;
107    #[doc(no_inline)]
108    pub use crate::services::prelude::*;
109    #[doc(no_inline)]
110    pub use crate::types::prelude::*;
111    #[doc(no_inline)]
112    pub use crate::utils::prelude::*;
113}