Skip to main content

Config

Struct Config 

Source
pub struct Config {
    pub daemon: Option<DaemonConfig>,
    pub monitored: MonitoredConfig,
    pub logging: LoggingConfig,
    pub cache: Option<CacheConfig>,
    pub watchdog: Option<WatchdogConfig>,
}
Expand description

Infrastructure configuration for fsmon.

The config file lives at ~/.config/fsmon/fsmon.toml. All path resolution is based on the original user (not root’s HOME). Daemon (running as root via sudo) uses SUDO_UID to find the right home. CLI (running as user) uses the user’s own HOME directly.

This file is manually edited. Only infrastructure paths go here. Monitored path entries are stored in the separate store file (see [monitored].path).

§示例

use fsmon::common::config::Config;

// 加载配置文件
let config = Config::load()?;

// 访问配置项
if let Some(daemon) = &config.daemon {
    if let Some(debug) = daemon.debug {
        println!("Debug mode: {}", debug);
    }
}

Fields§

§daemon: Option<DaemonConfig>§monitored: MonitoredConfig§logging: LoggingConfig§cache: Option<CacheConfig>§watchdog: Option<WatchdogConfig>

Implementations§

Source§

impl Config

Source

pub fn user_path() -> PathBuf

Return the user config file path: $XDG_CONFIG_HOME/fsmon/fsmon.toml Falls back to ~/.config/fsmon/fsmon.toml.

Source

pub fn path() -> PathBuf

Alias for backward compatibility.

Source

pub fn load() -> Result<Self>

Load config from file. Returns default Config if file doesn’t exist. Also returns default if file exists but contains only comments (e.g. a reference file created by fsmon init).

§Errors

Returns an error if:

  • The config file exists but cannot be read
  • The config file contains invalid TOML syntax
  • The config file cannot be parsed into a Config struct
Source

pub fn resolve_paths(&mut self) -> Result<()>

Expand ~ in all paths using the original user’s home directory.

Source

pub fn ensure_monitored_dir() -> Result<()>

Ensure the monitored store’s parent directory exists. Called by fsmon add / fsmon monitored on first use.

Source

pub fn init_dirs() -> Result<()>

Create the config file only. Directories are created on first use:

  • Monitored dir: created by fsmon add / fsmon monitored
  • Log dir: created by fsmon cd or fsmon daemon

Trait Implementations§

Source§

impl Clone for Config

Source§

fn clone(&self) -> Config

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Config

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Config

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for Config

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for Config

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.