pub struct AppConfig {Show 21 fields
pub import: Vec<String>,
pub catalogs: Vec<CatalogRef>,
pub read_catalogs: Vec<Catalog>,
pub catalog_dir: Option<PathBuf>,
pub broken_catalogs: Vec<Broken>,
pub read: ReadConfig,
pub csv: CsvConfig,
pub display: DisplayConfig,
pub performance: PerformanceConfig,
pub analysis: AnalysisConfig,
pub chart: ChartConfig,
pub home: HomeConfig,
pub cloud: CloudConfig,
pub http: HttpConfig,
pub query: QueryConfig,
pub views: ViewsConfig,
pub clipboard: ClipboardConfig,
pub formats: FormatsConfig,
pub log: LogConfig,
pub theme: ThemeConfig,
pub glyphs: GlyphsConfig,
}Expand description
Complete application configuration
Fields§
§import: Vec<String>Additional config files merged in before this file’s own values.
catalogs: Vec<CatalogRef>Catalog files elsewhere, listed on the home screen besides catalog.toml and
catalogs/: a path, or { path, id, label }.
read_catalogs: Vec<Catalog>The catalogs read: catalog.toml, then each of catalogs. Not a key: read by
AppConfig::read_catalog_files once the layers are merged.
catalog_dir: Option<PathBuf>The directory catalog.toml was looked for in: the config file’s.
broken_catalogs: Vec<Broken>Catalog files left out for a mistake, each with what is wrong.
read: ReadConfig§csv: CsvConfig§display: DisplayConfig§performance: PerformanceConfig§analysis: AnalysisConfig§chart: ChartConfig§home: HomeConfig§cloud: CloudConfig§http: HttpConfig§query: QueryConfig§views: ViewsConfig§clipboard: ClipboardConfig§formats: FormatsConfig§log: LogConfig§theme: ThemeConfig§glyphs: GlyphsConfigImplementations§
Source§impl AppConfig
impl AppConfig
Sourcepub fn load(app_name: &str) -> Result<Self>
pub fn load(app_name: &str) -> Result<Self>
Load configuration from all layers (default → imports → user config)
Sourcepub fn load_with(app_name: &str, overrides: &[Override]) -> Result<Self>
pub fn load_with(app_name: &str, overrides: &[Override]) -> Result<Self>
Self::load, with -c KEY=VALUE over the files.
Sourcepub fn load_from_file(config_path: &Path) -> Result<Self>
pub fn load_from_file(config_path: &Path) -> Result<Self>
Load configuration rooted at config_path, resolving its import chain.
Layers apply lowest precedence first: datui’s defaults, then every file named
by import in declaration order (depth-first, so an imported file’s own
imports land before it), then config_path’s own values. Each layer changes
only the keys it writes, so an imported theme restyles datui while anything
the user writes, a default value included, still wins.
A missing root file means defaults. A root file that exists but cannot be read or parsed is an error naming it: running on defaults would quietly discard every setting in it. A missing import is skipped with a warning — the file is often generated by a theme system that may not have run yet — but an import that exists and cannot be read or parsed is an error too.
Sourcepub fn load_from_file_with(
config_path: &Path,
overrides: &[Override],
) -> Result<Self>
pub fn load_from_file_with( config_path: &Path, overrides: &[Override], ) -> Result<Self>
Self::load_from_file, with -c KEY=VALUE laid over every file.
Sourcepub fn read_layers(
config_path: &Path,
overrides: &[Override],
) -> Result<Vec<(LayerSource, ConfigLayer)>>
pub fn read_layers( config_path: &Path, overrides: &[Override], ) -> Result<Vec<(LayerSource, ConfigLayer)>>
Every layer the configuration rooted at config_path is built from, lowest
precedence first: each import, depth-first, then the file, then -c. Each is
named by where it came from. A missing root file contributes nothing.
Sourcepub fn from_read_layers(
config_path: &Path,
overrides: &[Override],
layers: &[(LayerSource, ConfigLayer)],
) -> Result<Self>
pub fn from_read_layers( config_path: &Path, overrides: &[Override], layers: &[(LayerSource, ConfigLayer)], ) -> Result<Self>
The configuration layers, read by Self::read_layers for config_path,
describe: merged over the defaults and validated.
Sourcepub fn from_layers(
layers: impl IntoIterator<Item = ConfigLayer>,
) -> Result<Self>
pub fn from_layers( layers: impl IntoIterator<Item = ConfigLayer>, ) -> Result<Self>
The configuration layers describe, lowest precedence first, over datui’s
defaults. Defaults are resolved here, once: a layer holds only what it wrote.
The colors start from the theme theme.dark or theme.light names for the
theme.mode the layers declare, built-ins only: from_read_layers adds the
theme files. import is left empty; load_from_file follows imports and
reports them. Not validated.
Sourcepub fn read_theme_files(&mut self, config_dir: Option<&Path>) -> Result<()>
pub fn read_theme_files(&mut self, config_dir: Option<&Path>) -> Result<()>
Resolve theme.dark and theme.light with the theme files in config_dir’s
themes/ as well as the built-ins. A file with a mistake, or a name that
cannot be used, is said on stderr and the log, and its mode falls back to
the built-in: as with catalogs, it never stops datui from starting.
Sourcepub fn catalogs(&self) -> Vec<Catalog>
pub fn catalogs(&self) -> Vec<Catalog>
Every catalog, hidden ones included: catalog.toml, the listed files in order,
then the bundled examples catalog, unless a listed file named examples.toml
replaces it.
Sourcepub fn shown_catalogs(&self) -> Vec<Catalog>
pub fn shown_catalogs(&self) -> Vec<Catalog>
The catalogs the home screen shows: Self::catalogs less [home] hide, which
names a whole catalog by its id or one entry as catalog/id.
Sourcepub fn hides_nothing(name: &str) -> String
pub fn hides_nothing(name: &str) -> String
The [home] hide names no catalog or entry has, each once.
Why name in home.hide hides nothing, with the fix when the name is the
bundled catalog’s old id: public is now examples.
Sourcepub fn read_catalog_files(&mut self, config_dir: Option<&Path>) -> Result<()>
pub fn read_catalog_files(&mut self, config_dir: Option<&Path>) -> Result<()>
Read catalog.toml from config_dir, when there is one, every *.toml in its
catalogs/ directory, by name, and every file catalogs lists. A listed file
that is not there is skipped with a warning, as a missing import is: it may be on
a share that is not mounted.
Sourcepub fn sync_dataset_access(&mut self)
pub fn sync_dataset_access(&mut self)
Derive [cloud]’s view of how catalog URLs are read. Called by from_layers,
read_catalog_files and default; call it after changing the catalogs by hand.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for AppConfig
impl<'de> Deserialize<'de> for AppConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for AppConfig
impl RefUnwindSafe for AppConfig
impl Send for AppConfig
impl Sync for AppConfig
impl Unpin for AppConfig
impl UnsafeUnpin for AppConfig
impl UnwindSafe for AppConfig
Blanket Implementations§
impl<T> Allocation for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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<T> Key for Twhere
T: Clone,
impl<T> Key for Twhere
T: Clone,
Source§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