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