pub struct SearchDirectoriesForProject<'a, TProject> { /* private fields */ }
Expand description
A list of search directories that the config files will be searched under, scoped to a particular project.
Implementations§
Source§impl<'a, TProject> SearchDirectoriesForProject<'a, TProject>
impl<'a, TProject> SearchDirectoriesForProject<'a, TProject>
Sourcepub fn with_file_name<TFileName>(
self,
file_name: TFileName,
) -> SearchDirectoriesForProjectAndFileName<'a, TProject, TFileName>
pub fn with_file_name<TFileName>( self, file_name: TFileName, ) -> SearchDirectoriesForProjectAndFileName<'a, TProject, TFileName>
Search for configuration files of this project with the given config file name.
Sourcepub fn find_files<TDropinSuffix>(
self,
dropin_suffix: TDropinSuffix,
) -> Result<Files>
pub fn find_files<TDropinSuffix>( self, dropin_suffix: TDropinSuffix, ) -> Result<Files>
Returns an Iterator
of (
PathBuf
,
File
)
s for all the files found in the specified search directories.
The name format!("{project}.d")
is appended to each search directory, then those directories are searched as if they are
dropin directories. Only dropin files whose name ends with dropin_suffix
will be considered.
Note that if you intend to use a file extension as a suffix, then dropin_suffix
must include the .
, such as ".conf"
.
You will likely want to parse each file returned by this function according to whatever format they’re supposed to contain and merge them into a unified config object, with settings from later files overriding settings from earlier files. This function does not guarantee that the files are well-formed, only that they exist and could be opened for reading.
§Errors
Any errors from reading non-existing directories and non-existing files are ignored. Apart from that, any I/O errors from walking the directories and from opening the files found within are propagated.
§Examples
§Get all config files for the system service foobar
… taking into account OS vendor configs, ephemeral overrides and sysadmin overrides.
let files =
uapi_config::SearchDirectories::modern_system()
.with_project("foobar")
.find_files(".conf")
.unwrap();
This will locate all dropins /usr/etc/foobar.d/*.conf
, /run/foobar.d/*.conf
, /etc/foobar.d/*.conf
in lexicographical order.
§Get all config files for the application foobar
… taking into account OS vendor configs, ephemeral overrides, sysadmin overrides and local user overrides.
let files =
uapi_config::SearchDirectories::modern_system()
.with_user_directory()
.with_project("foobar")
.find_files(".conf")
.unwrap();
This will locate all dropins /usr/etc/foobar.d/*.conf
, /run/foobar.d/*.conf
, /etc/foobar.d/*.conf
, $XDG_CONFIG_HOME/foobar.d/*.conf
in lexicographical order.
Trait Implementations§
Source§impl<'a, TProject: Clone> Clone for SearchDirectoriesForProject<'a, TProject>
impl<'a, TProject: Clone> Clone for SearchDirectoriesForProject<'a, TProject>
Source§fn clone(&self) -> SearchDirectoriesForProject<'a, TProject>
fn clone(&self) -> SearchDirectoriesForProject<'a, TProject>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more