1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
//! Configuration layer for DDNS-A.
//!
//! This module provides:
//! - CLI argument parsing ([`Cli`], [`Command`])
//! - TOML configuration file parsing ([`TomlConfig`])
//! - Validated configuration ([`ValidatedConfig`])
//! - Configuration file generation ([`write_default_config`])
//! - Default values ([`defaults`])
//!
//! # Priority
//!
//! Configuration values are resolved with the following priority (highest to lowest):
//!
//! 1. **Explicit CLI arguments** - Values explicitly passed via command line
//! 2. **TOML config file** - Values from the configuration file
//! 3. **Built-in defaults** - Hardcoded default values
//!
//! For required fields without defaults (`url`, `ip_version`), CLI takes precedence over TOML.
//!
//! For optional fields with defaults (`method`, `poll_interval`, retry settings),
//! explicit CLI values always win, then TOML, then built-in defaults.
//!
//! For filter patterns (`include_adapters`, `exclude_adapters`), CLI patterns **replace**
//! TOML patterns entirely (not merged). This is intentional "replace" semantics.
//! Note: include and exclude patterns are handled independently - if CLI has `--include-adapter`,
//! only TOML includes are replaced; TOML excludes are still used (unless CLI excludes are specified).
//!
//! # Boolean Flag Semantics
//!
//! Boolean flags (`--poll-only`, `--exclude-virtual`) use OR semantics:
//! - If set `true` in either CLI or TOML, the result is `true`.
//! - Once set `true` in TOML, CLI cannot override to `false` (flags only enable, not disable).
//! - This differs from other options where "CLI explicit > TOML".
//!
//! # CLI-Only vs TOML-Only Options
//!
//! Some retry policy options are TOML-only (not available via CLI):
//! - `retry.max_delay` (default: 60s) - Maximum retry delay
//! - `retry.multiplier` (default: 2.0) - Exponential backoff multiplier
//!
//! For full configurability, use a config file.
//!
//! # Internal Tuning Parameters
//!
//! The following parameters are intentionally not user-configurable:
//! - **Debounce window**: The monitor module uses a fixed 2-second debounce window
//! to merge rapid IP change events. This is tuned for typical OS notification patterns
//! and is not exposed via CLI or TOML configuration.
pub use ;
pub use ;
pub use ;
pub use ;