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
10#[doc(no_inline)]
11#[cfg(feature = "config")]
12pub use config;
13
14#[macro_use]
15pub(crate) mod macros {
16    #[macro_use]
17    pub mod config;
18    #[macro_use]
19    pub mod seal;
20}
21
22#[doc(inline)]
23pub use self::{
24    consts::*, error::*, services::prelude::*, traits::prelude::*, types::prelude::*,
25    utils::prelude::*,
26};
27/// the `error` module defines the error-handling routines for the crate
28pub mod error;
29pub mod services;
30
31/// constants declared for the configuration module
32pub mod consts {
33    /// The default environment variable prefix used for configuration schemas.
34    pub const DEFAULT_ENV_PREFIX: &str = "APP";
35    /// The default environment variable separator used for configuration schemas.
36    pub const DEFAULT_ENV_SEPARATOR: &str = "_";
37    /// The standard artifacts directory name
38    pub const ARTIFACTS: &str = ".artifacts";
39    /// The standard cache directory name
40    pub const CACHE_DIR: &str = ".cache";
41    /// The standard configuration directory name
42    pub const CONFIG_DIR: &str = ".config";
43}
44
45/// this module is used to implement various traits supporting the configuration module
46pub mod traits {
47    #[doc(inline)]
48    pub use self::prelude::*;
49
50    pub mod configure;
51
52    pub(crate) mod prelude {
53        #[doc(inline)]
54        pub use super::configure::*;
55    }
56}
57/// various types used throughout the configuration module
58pub mod types {
59    #[doc(inline)]
60    pub use self::prelude::*;
61
62    pub mod environment;
63    pub mod log_level;
64    pub mod mode;
65    pub mod network_address;
66    pub mod scope;
67
68    pub(crate) mod prelude {
69        #[doc(inline)]
70        pub use super::environment::*;
71        #[doc(inline)]
72        pub use super::log_level::*;
73        #[doc(inline)]
74        pub use super::mode::*;
75        #[doc(inline)]
76        pub use super::network_address::*;
77        #[doc(inline)]
78        pub use super::scope::*;
79    }
80}
81
82pub mod utils {
83    #[doc(inline)]
84    pub use self::prelude::*;
85
86    pub mod fs;
87    pub mod vars;
88
89    pub(crate) mod prelude {
90        #[allow(unused_imports)]
91        #[doc(inline)]
92        pub use super::fs::*;
93        #[doc(inline)]
94        pub use super::vars::*;
95    }
96}
97
98pub mod prelude {
99    #[doc(no_inline)]
100    pub use crate::consts::*;
101    #[doc(no_inline)]
102    pub use crate::error::*;
103    #[doc(no_inline)]
104    pub use crate::services::prelude::*;
105    #[doc(no_inline)]
106    pub use crate::types::prelude::*;
107    #[doc(no_inline)]
108    pub use crate::utils::prelude::*;
109}