pub struct Settings {
pub api: SettingsApi,
pub general: SettingsGeneral,
pub ipc: SettingsIpc,
pub logs: SettingsLogs,
pub proxy: SettingsProxy,
pub supervisor: SettingsSupervisor,
pub tui: SettingsTui,
pub web: SettingsWeb,
}Expand description
Every setting pitchfork has.
SETTINGS_PROPS, SETTINGS_REGISTRY, read, and spec_kdl are generated
from these fields; the CLI’s emitted spec carries the config block
through #[usage(config = ...)] on the root.
Fields§
§api: SettingsApi§general: SettingsGeneral§ipc: SettingsIpc§logs: SettingsLogs§proxy: SettingsProxy§supervisor: SettingsSupervisor§tui: SettingsTui§web: SettingsWebImplementations§
Source§impl Settings
impl Settings
Sourcepub const SETTINGS_PROPS: &'static [PropMeta] = <Self as ::usage_config::Props>::PROPS
pub const SETTINGS_PROPS: &'static [PropMeta] = <Self as ::usage_config::Props>::PROPS
Every setting this struct declares, one entry per field, flattened groups
included. The registry a build.rs used to generate, generated from the
struct instead — there is no second declaration to keep in step.
Sourcepub const SETTINGS_REGISTRY: Registry
pub const SETTINGS_REGISTRY: Registry
The registry over Self::SETTINGS_PROPS, for resolve, drift, and
the layers.
Sourcepub const SETTINGS_SPEC: ConfigSpec
pub const SETTINGS_SPEC: ConfigSpec
Metadata used only when lowering this declaration into a usage spec.
Sourcepub fn read(__usage_resolved: &Resolved) -> Result<Self, ReadErrors>
pub fn read(__usage_resolved: &Resolved) -> Result<Self, ReadErrors>
This resolution’s values, as the struct.
Every field is read before anything is returned, so the error is the whole list of what is wrong rather than the first thing found.
Sourcepub fn read_lossy(__usage_resolved: &Resolved) -> (Option<Self>, ReadErrors)
pub fn read_lossy(__usage_resolved: &Resolved) -> (Option<Self>, ReadErrors)
This resolution’s values, keeping every setting that reads.
Self::read is all or nothing, which leaves a CLI two moves when one
field is bad: refuse to start, or fall back to a struct of declared
defaults and lose the environment and every config file along with the
offending value. Neither is a choice this crate should be making.
So: a field that will not read falls back to its own declared default and
the rest keep what the merge gave them, with every failure returned
alongside for the CLI to raise, log, or ignore as it sees fit. The errors
are the same ::usage_config::ReadErrors Self::read returns, so a
caller that decides a bad value is fatal has lost nothing by asking.
None only where a setting has no value and no declared default — a hole
in the declaration rather than a bad value, and nothing to fall back to.
Source§impl Settings
impl Settings
Sourcepub fn general_autostop_delay(&self) -> Duration
pub fn general_autostop_delay(&self) -> Duration
Get general.autostop_delay as Duration
Sourcepub fn general_interval(&self) -> Duration
pub fn general_interval(&self) -> Duration
Get general.interval as Duration
Sourcepub fn general_ready_delay(&self) -> Duration
pub fn general_ready_delay(&self) -> Duration
Get general.ready_delay as Duration
Sourcepub fn ipc_connect_max_delay(&self) -> Duration
pub fn ipc_connect_max_delay(&self) -> Duration
Get ipc.connect_max_delay as Duration
Sourcepub fn ipc_connect_min_delay(&self) -> Duration
pub fn ipc_connect_min_delay(&self) -> Duration
Get ipc.connect_min_delay as Duration
Sourcepub fn ipc_rate_limit_window(&self) -> Duration
pub fn ipc_rate_limit_window(&self) -> Duration
Get ipc.rate_limit_window as Duration
Sourcepub fn ipc_request_timeout(&self) -> Duration
pub fn ipc_request_timeout(&self) -> Duration
Get ipc.request_timeout as Duration
Sourcepub fn logs_time_retention(&self) -> Duration
pub fn logs_time_retention(&self) -> Duration
Get logs.time_retention as Duration
Sourcepub fn proxy_auto_start_timeout(&self) -> Duration
pub fn proxy_auto_start_timeout(&self) -> Duration
Get proxy.auto_start_timeout as Duration
Sourcepub fn supervisor_cron_check_interval(&self) -> Duration
pub fn supervisor_cron_check_interval(&self) -> Duration
Get supervisor.cron_check_interval as Duration
Sourcepub fn supervisor_file_watch_debounce(&self) -> Duration
pub fn supervisor_file_watch_debounce(&self) -> Duration
Get supervisor.file_watch_debounce as Duration
Sourcepub fn supervisor_health_check_interval(&self) -> Duration
pub fn supervisor_health_check_interval(&self) -> Duration
Get supervisor.health_check_interval as Duration
Sourcepub fn supervisor_health_cmd_timeout(&self) -> Duration
pub fn supervisor_health_cmd_timeout(&self) -> Duration
Get supervisor.health_cmd_timeout as Duration
Sourcepub fn supervisor_health_http_timeout(&self) -> Duration
pub fn supervisor_health_http_timeout(&self) -> Duration
Get supervisor.health_http_timeout as Duration
Sourcepub fn supervisor_health_port_timeout(&self) -> Duration
pub fn supervisor_health_port_timeout(&self) -> Duration
Get supervisor.health_port_timeout as Duration
Sourcepub fn supervisor_http_client_timeout(&self) -> Duration
pub fn supervisor_http_client_timeout(&self) -> Duration
Get supervisor.http_client_timeout as Duration
Sourcepub fn supervisor_log_flush_interval(&self) -> Duration
pub fn supervisor_log_flush_interval(&self) -> Duration
Get supervisor.log_flush_interval as Duration
Sourcepub fn supervisor_oneshot_timeout(&self) -> Duration
pub fn supervisor_oneshot_timeout(&self) -> Duration
Get supervisor.oneshot_timeout as Duration
Sourcepub fn supervisor_ready_check_interval(&self) -> Duration
pub fn supervisor_ready_check_interval(&self) -> Duration
Get supervisor.ready_check_interval as Duration
Sourcepub fn supervisor_restart_delay(&self) -> Duration
pub fn supervisor_restart_delay(&self) -> Duration
Get supervisor.restart_delay as Duration
Sourcepub fn supervisor_stop_timeout(&self) -> Duration
pub fn supervisor_stop_timeout(&self) -> Duration
Get supervisor.stop_timeout as Duration
Sourcepub fn supervisor_watch_interval(&self) -> Duration
pub fn supervisor_watch_interval(&self) -> Duration
Get supervisor.watch_interval as Duration
Sourcepub fn supervisor_watch_poll_interval(&self) -> Duration
pub fn supervisor_watch_poll_interval(&self) -> Duration
Get supervisor.watch_poll_interval as Duration
Sourcepub fn tui_message_duration(&self) -> Duration
pub fn tui_message_duration(&self) -> Duration
Get tui.message_duration as Duration
Sourcepub fn tui_refresh_rate(&self) -> Duration
pub fn tui_refresh_rate(&self) -> Duration
Get tui.refresh_rate as Duration
Sourcepub fn tui_tick_rate(&self) -> Duration
pub fn tui_tick_rate(&self) -> Duration
Get tui.tick_rate as Duration
Sourcepub fn web_sse_poll_interval(&self) -> Duration
pub fn web_sse_poll_interval(&self) -> Duration
Get web.sse_poll_interval as Duration
Source§impl Settings
impl Settings
Sourcepub fn supervisor_oneshot_wait(&self) -> OneshotWait
pub fn supervisor_oneshot_wait(&self) -> OneshotWait
How long to wait for a oneshot daemon to finish.
supervisor.oneshot_timeout = "0" means no limit: a task’s natural end
is its exit, and a long migration should not be called failed merely for
outlasting a default. That is an absent deadline, not a very large one,
so no task can outlive the substitute and be reported as timed out
despite the setting promising otherwise.
Sourcepub fn general_ready_delay_secs(&self) -> Result<u64, String>
pub fn general_ready_delay_secs(&self) -> Result<u64, String>
Resolve general.ready_delay as whole seconds.
The ready-check pipeline (RunOptions/IPC/supervisor) models the delay
in whole seconds. Reject subsecond values that would otherwise be
silently truncated to a zero delay by as_secs().
Source§impl Settings
impl Settings
Sourcepub fn load() -> Self
pub fn load() -> Self
Load settings from pitchfork.toml files, then overlay environment variables. Settings are loaded from all pitchfork.toml files in precedence order:
- System-level: /etc/pitchfork/config.toml
- User-level: ~/.config/pitchfork/config.toml
- Project-level: pitchfork.toml files from root to current directory
Environment variables override all file-based settings.
The global settings() accessor resolves through
Settings::resolve_from_dir so it can keep the provenance; this
stays as the public one-shot entry point.
Sourcepub fn load_from_dir(start_dir: &Path) -> Self
pub fn load_from_dir(start_dir: &Path) -> Self
Load settings for a specific project directory, then overlay environment variables.
This is used when operating on daemons from registered namespaces whose project settings may differ from those of the invoking process’s current directory.
Sourcepub fn parse_duration(s: &str) -> Option<Duration>
pub fn parse_duration(s: &str) -> Option<Duration>
Parse a duration string (humantime format) to Duration
Sourcepub fn resolve_mise_bin(&self) -> Option<PathBuf>
pub fn resolve_mise_bin(&self) -> Option<PathBuf>
Resolve the mise binary path.
If general.mise_bin is explicitly set, returns that path.
Otherwise, searches well-known install locations:
~/.local/bin/mise~/.cargo/bin/mise/usr/local/bin/mise/opt/homebrew/bin/mise
Returns None if mise cannot be found.
Sourcepub fn resolve_shell(
&self,
shell_is_explicit: bool,
) -> Result<Vec<String>, String>
pub fn resolve_shell( &self, shell_is_explicit: bool, ) -> Result<Vec<String>, String>
Resolve the shell used for daemon run scripts, ready_cmd /
health_cmd probes, lifecycle hooks and the log archive hook, split
into a program and its arguments.
general.shell applies everywhere. On Windows it applies only when it
was set explicitly (shell_is_explicit); a Windows machine that leaves
it at its default uses general.windows_shell instead, because the
sh that general.shell defaults to is not on a stock Windows PATH.
crate::settings::resolve_shell supplies that flag from the origin
of the merged value; it is a parameter here so the precedence can be
tested without a resolution.
Err names the key whose value is empty or could not be split.
Sourcepub fn default_port_bump_attempts(&self) -> u32
pub fn default_port_bump_attempts(&self) -> u32
Return supervisor.port_bump_attempts as u32, clamping out-of-range
values to the schema default (10) and zero to 1.
This is the single source of truth for the fallback so that call-sites
don’t each duplicate the hardcoded 10.
Trait Implementations§
Source§impl Props for Settings
impl Props for Settings
Source§const PROP_SPECS: &'static [PropSpec]
const PROP_SPECS: &'static [PropSpec]
Props::PROPS.impl StructuralPartialEq for Settings
Auto Trait Implementations§
impl Freeze for Settings
impl RefUnwindSafe for Settings
impl Send for Settings
impl Sync for Settings
impl Unpin for Settings
impl UnsafeUnpin for Settings
impl UnwindSafe for Settings
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more