From b5d3d8fcf331cdff6d0e687dcdbac77351731475 Mon Sep 17 00:00:00 2001 From: David Knaack Date: Fri, 9 Sep 2022 14:59:38 +0200 Subject: [PATCH] feat(schema): deny unknown keys (#4270) --- .github/config-schema.json | 232 ++++++++++++------ .../presets/toml/plain-text-symbols.toml | 2 +- .../public/presets/toml/pure-preset.toml | 2 +- docs/config/README.md | 6 +- src/config.rs | 6 +- src/configs/aws.rs | 6 +- src/configs/azure.rs | 6 +- src/configs/battery.rs | 12 +- src/configs/buf.rs | 6 +- src/configs/bun.rs | 6 +- src/configs/c.rs | 6 +- src/configs/character.rs | 6 +- src/configs/cmake.rs | 6 +- src/configs/cmd_duration.rs | 6 +- src/configs/cobol.rs | 6 +- src/configs/conda.rs | 6 +- src/configs/container.rs | 6 +- src/configs/crystal.rs | 6 +- src/configs/custom.rs | 6 +- src/configs/daml.rs | 6 +- src/configs/dart.rs | 6 +- src/configs/deno.rs | 6 +- src/configs/directory.rs | 6 +- src/configs/docker_context.rs | 6 +- src/configs/dotnet.rs | 6 +- src/configs/elixir.rs | 6 +- src/configs/elm.rs | 6 +- src/configs/env_var.rs | 6 +- src/configs/erlang.rs | 6 +- src/configs/fill.rs | 6 +- src/configs/gcloud.rs | 6 +- src/configs/git_branch.rs | 6 +- src/configs/git_commit.rs | 6 +- src/configs/git_metrics.rs | 6 +- src/configs/git_state.rs | 6 +- src/configs/git_status.rs | 6 +- src/configs/go.rs | 6 +- src/configs/haskell.rs | 6 +- src/configs/helm.rs | 6 +- src/configs/hg_branch.rs | 6 +- src/configs/hostname.rs | 6 +- src/configs/java.rs | 6 +- src/configs/jobs.rs | 6 +- src/configs/julia.rs | 6 +- src/configs/kotlin.rs | 6 +- src/configs/kubernetes.rs | 6 +- src/configs/line_break.rs | 6 +- src/configs/localip.rs | 6 +- src/configs/lua.rs | 6 +- src/configs/memory_usage.rs | 6 +- src/configs/mod.rs | 6 +- src/configs/nim.rs | 6 +- src/configs/nix_shell.rs | 6 +- src/configs/nodejs.rs | 6 +- src/configs/ocaml.rs | 6 +- src/configs/openstack.rs | 6 +- src/configs/package.rs | 6 +- src/configs/perl.rs | 6 +- src/configs/php.rs | 6 +- src/configs/pulumi.rs | 6 +- src/configs/purescript.rs | 6 +- src/configs/python.rs | 6 +- src/configs/raku.rs | 6 +- src/configs/red.rs | 6 +- src/configs/rlang.rs | 6 +- src/configs/ruby.rs | 6 +- src/configs/rust.rs | 6 +- src/configs/scala.rs | 6 +- src/configs/shell.rs | 6 +- src/configs/shlvl.rs | 6 +- src/configs/singularity.rs | 6 +- src/configs/spack.rs | 6 +- src/configs/starship_root.rs | 6 +- src/configs/status.rs | 6 +- src/configs/sudo.rs | 6 +- src/configs/swift.rs | 6 +- src/configs/terraform.rs | 6 +- src/configs/time.rs | 6 +- src/configs/username.rs | 6 +- src/configs/v.rs | 6 +- src/configs/vagrant.rs | 6 +- src/configs/vcsh.rs | 6 +- src/configs/zig.rs | 6 +- 83 files changed, 560 insertions(+), 162 deletions(-) diff --git a/.github/config-schema.json b/.github/config-schema.json index 5d0a7c96..b04c593f 100644 --- a/.github/config-schema.json +++ b/.github/config-schema.json @@ -1546,6 +1546,7 @@ "type": "boolean" } }, + "additionalProperties": false, "definitions": { "AwsConfig": { "title": "AWS", @@ -1598,7 +1599,8 @@ "default": false, "type": "boolean" } - } + }, + "additionalProperties": false }, "AzureConfig": { "type": "object", @@ -1619,7 +1621,8 @@ "default": true, "type": "boolean" } - } + }, + "additionalProperties": false }, "BatteryConfig": { "type": "object", @@ -1666,7 +1669,8 @@ "default": "[$symbol$percentage]($style) ", "type": "string" } - } + }, + "additionalProperties": false }, "BatteryDisplayConfig": { "type": "object", @@ -1694,7 +1698,8 @@ "null" ] } - } + }, + "additionalProperties": false }, "BufConfig": { "type": "object", @@ -1744,7 +1749,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "BunConfig": { "type": "object", @@ -1793,7 +1799,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "CConfig": { "type": "object", @@ -1865,7 +1872,8 @@ } } } - } + }, + "additionalProperties": false }, "CharacterConfig": { "type": "object", @@ -1902,7 +1910,8 @@ "default": false, "type": "boolean" } - } + }, + "additionalProperties": false }, "CMakeConfig": { "type": "object", @@ -1951,7 +1960,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "CmdDurationConfig": { "type": "object", @@ -1994,7 +2004,8 @@ "format": "uint32", "minimum": 0.0 } - } + }, + "additionalProperties": false }, "CobolConfig": { "type": "object", @@ -2045,7 +2056,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "CondaConfig": { "type": "object", @@ -2076,7 +2088,8 @@ "default": false, "type": "boolean" } - } + }, + "additionalProperties": false }, "ContainerConfig": { "type": "object", @@ -2097,7 +2110,8 @@ "default": false, "type": "boolean" } - } + }, + "additionalProperties": false }, "CrystalConfig": { "type": "object", @@ -2147,7 +2161,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "DamlConfig": { "type": "object", @@ -2195,7 +2210,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "DartConfig": { "type": "object", @@ -2249,7 +2265,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "DenoConfig": { "type": "object", @@ -2302,7 +2319,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "DirectoryConfig": { "type": "object", @@ -2375,7 +2393,8 @@ "default": true, "type": "boolean" } - } + }, + "additionalProperties": false }, "DockerContextConfig": { "type": "object", @@ -2425,7 +2444,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "DotnetConfig": { "type": "object", @@ -2485,7 +2505,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "ElixirConfig": { "type": "object", @@ -2533,7 +2554,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "ElmConfig": { "type": "object", @@ -2587,7 +2609,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "EnvVarConfig": { "type": "object", @@ -2620,7 +2643,8 @@ "default": false, "type": "boolean" } - } + }, + "additionalProperties": false }, "ErlangConfig": { "type": "object", @@ -2669,7 +2693,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "FillConfig": { "type": "object", @@ -2686,7 +2711,8 @@ "default": false, "type": "boolean" } - } + }, + "additionalProperties": false }, "GcloudConfig": { "type": "object", @@ -2721,7 +2747,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "GitBranchConfig": { "type": "object", @@ -2766,7 +2793,8 @@ "default": false, "type": "boolean" } - } + }, + "additionalProperties": false }, "GitCommitConfig": { "type": "object", @@ -2807,7 +2835,8 @@ "format": "uint", "minimum": 0.0 } - } + }, + "additionalProperties": false }, "GitMetricsConfig": { "type": "object", @@ -2832,7 +2861,8 @@ "default": true, "type": "boolean" } - } + }, + "additionalProperties": false }, "GitStateConfig": { "type": "object", @@ -2877,7 +2907,8 @@ "default": false, "type": "boolean" } - } + }, + "additionalProperties": false }, "GitStatusConfig": { "type": "object", @@ -2948,7 +2979,8 @@ "null" ] } - } + }, + "additionalProperties": false }, "GoConfig": { "type": "object", @@ -3006,7 +3038,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "HaskellConfig": { "type": "object", @@ -3059,7 +3092,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "HelmConfig": { "type": "object", @@ -3108,7 +3142,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "HgBranchConfig": { "type": "object", @@ -3138,7 +3173,8 @@ "default": true, "type": "boolean" } - } + }, + "additionalProperties": false }, "HostnameConfig": { "type": "object", @@ -3167,7 +3203,8 @@ "default": false, "type": "boolean" } - } + }, + "additionalProperties": false }, "JavaConfig": { "type": "object", @@ -3228,7 +3265,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "JobsConfig": { "type": "object", @@ -3264,7 +3302,8 @@ "default": false, "type": "boolean" } - } + }, + "additionalProperties": false }, "JuliaConfig": { "type": "object", @@ -3315,7 +3354,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "KotlinConfig": { "type": "object", @@ -3368,7 +3408,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "KubernetesConfig": { "type": "object", @@ -3424,7 +3465,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "LineBreakConfig": { "type": "object", @@ -3433,7 +3475,8 @@ "default": false, "type": "boolean" } - } + }, + "additionalProperties": false }, "LocalipConfig": { "type": "object", @@ -3454,7 +3497,8 @@ "default": true, "type": "boolean" } - } + }, + "additionalProperties": false }, "LuaConfig": { "type": "object", @@ -3510,7 +3554,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "MemoryConfig": { "type": "object", @@ -3536,7 +3581,8 @@ "default": true, "type": "boolean" } - } + }, + "additionalProperties": false }, "NimConfig": { "type": "object", @@ -3588,7 +3634,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "NixShellConfig": { "type": "object", @@ -3617,7 +3664,8 @@ "default": false, "type": "boolean" } - } + }, + "additionalProperties": false }, "NodejsConfig": { "type": "object", @@ -3680,7 +3728,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "OCamlConfig": { "type": "object", @@ -3749,7 +3798,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "OspConfig": { "type": "object", @@ -3770,7 +3820,8 @@ "default": false, "type": "boolean" } - } + }, + "additionalProperties": false }, "PackageConfig": { "type": "object", @@ -3799,7 +3850,8 @@ "default": "v${raw}", "type": "string" } - } + }, + "additionalProperties": false }, "PerlConfig": { "type": "object", @@ -3857,7 +3909,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "PhpConfig": { "type": "object", @@ -3908,7 +3961,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "PulumiConfig": { "type": "object", @@ -3937,7 +3991,8 @@ "default": true, "type": "boolean" } - } + }, + "additionalProperties": false }, "PureScriptConfig": { "type": "object", @@ -3987,7 +4042,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "PythonConfig": { "type": "object", @@ -4063,7 +4119,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "Either_for_String_and_Array_of_String": { "anyOf": [ @@ -4130,7 +4187,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "RedConfig": { "type": "object", @@ -4179,7 +4237,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "RLangConfig": { "type": "object", @@ -4235,7 +4294,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "RubyConfig": { "type": "object", @@ -4296,7 +4356,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "RustConfig": { "type": "object", @@ -4346,7 +4407,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "ScalaConfig": { "type": "object", @@ -4401,7 +4463,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "ShellConfig": { "type": "object", @@ -4462,7 +4525,8 @@ "default": true, "type": "boolean" } - } + }, + "additionalProperties": false }, "ShLvlConfig": { "type": "object", @@ -4492,7 +4556,8 @@ "default": true, "type": "boolean" } - } + }, + "additionalProperties": false }, "SingularityConfig": { "type": "object", @@ -4513,7 +4578,8 @@ "default": false, "type": "boolean" } - } + }, + "additionalProperties": false }, "SpackConfig": { "type": "object", @@ -4540,7 +4606,8 @@ "default": false, "type": "boolean" } - } + }, + "additionalProperties": false }, "StatusConfig": { "type": "object", @@ -4607,7 +4674,8 @@ "default": true, "type": "boolean" } - } + }, + "additionalProperties": false }, "SudoConfig": { "type": "object", @@ -4632,7 +4700,8 @@ "default": true, "type": "boolean" } - } + }, + "additionalProperties": false }, "SwiftConfig": { "type": "object", @@ -4682,7 +4751,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "TerraformConfig": { "type": "object", @@ -4734,7 +4804,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "TimeConfig": { "type": "object", @@ -4769,7 +4840,8 @@ "default": "-", "type": "string" } - } + }, + "additionalProperties": false }, "UsernameConfig": { "type": "object", @@ -4794,7 +4866,8 @@ "default": false, "type": "boolean" } - } + }, + "additionalProperties": false }, "VagrantConfig": { "type": "object", @@ -4842,7 +4915,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "VcshConfig": { "type": "object", @@ -4863,7 +4937,8 @@ "default": false, "type": "boolean" } - } + }, + "additionalProperties": false }, "VConfig": { "type": "object", @@ -4915,7 +4990,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "ZigConfig": { "type": "object", @@ -4963,7 +5039,8 @@ "type": "string" } } - } + }, + "additionalProperties": false }, "CustomConfig": { "type": "object", @@ -5045,7 +5122,8 @@ "default": false, "type": "boolean" } - } + }, + "additionalProperties": false }, "Either_for_Boolean_and_String": { "anyOf": [ diff --git a/docs/.vuepress/public/presets/toml/plain-text-symbols.toml b/docs/.vuepress/public/presets/toml/plain-text-symbols.toml index b4b0eddc..05b23720 100644 --- a/docs/.vuepress/public/presets/toml/plain-text-symbols.toml +++ b/docs/.vuepress/public/presets/toml/plain-text-symbols.toml @@ -1,7 +1,7 @@ [character] success_symbol = "[>](bold green)" error_symbol = "[x](bold red)" -vicmd_symbol = "[<](bold green)" +vimcmd_symbol = "[<](bold green)" [git_commit] tag_symbol = " tag " diff --git a/docs/.vuepress/public/presets/toml/pure-preset.toml b/docs/.vuepress/public/presets/toml/pure-preset.toml index 377378ee..9636f523 100644 --- a/docs/.vuepress/public/presets/toml/pure-preset.toml +++ b/docs/.vuepress/public/presets/toml/pure-preset.toml @@ -16,7 +16,7 @@ style = "blue" [character] success_symbol = "[❯](purple)" error_symbol = "[❯](red)" -vicmd_symbol = "[❮](green)" +vimcmd_symbol = "[❮](green)" [git_branch] format = "[$branch]($style)" diff --git a/docs/config/README.md b/docs/config/README.md index ba6ca574..93a60359 100644 --- a/docs/config/README.md +++ b/docs/config/README.md @@ -641,9 +641,9 @@ are only supported in fish due to [upstream issues with mode detection in zsh](h ### Variables -| Variable | Example | Description | -| -------- | ------- | --------------------------------------------------------------------- | -| symbol | | A mirror of either `success_symbol`, `error_symbol` or `vicmd_symbol` | +| Variable | Example | Description | +| -------- | ------- | -------------------------------------------------------------------------------------------------------- | +| symbol | | A mirror of either `success_symbol`, `error_symbol`, `vimcmd_symbol` or `vimcmd_replace_one_symbol` etc. | ### Examples diff --git a/src/config.rs b/src/config.rs index af882dea..5f4ead78 100644 --- a/src/config.rs +++ b/src/config.rs @@ -50,7 +50,11 @@ impl<'a, T: Deserialize<'a> + Default> ModuleConfig<'a, ValueError> for T { } #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(untagged)] pub enum Either { First(A), diff --git a/src/configs/aws.rs b/src/configs/aws.rs index 7240d760..e226af1b 100644 --- a/src/configs/aws.rs +++ b/src/configs/aws.rs @@ -2,7 +2,11 @@ use serde::{Deserialize, Serialize}; use std::collections::HashMap; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] /// ## AWS /// diff --git a/src/configs/azure.rs b/src/configs/azure.rs index 259e02c4..aaac529d 100644 --- a/src/configs/azure.rs +++ b/src/configs/azure.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct AzureConfig<'a> { pub format: &'a str, diff --git a/src/configs/battery.rs b/src/configs/battery.rs index baa97355..15a042bc 100644 --- a/src/configs/battery.rs +++ b/src/configs/battery.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct BatteryConfig<'a> { pub full_symbol: &'a str, @@ -31,7 +35,11 @@ impl<'a> Default for BatteryConfig<'a> { } #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct BatteryDisplayConfig<'a> { pub threshold: i64, diff --git a/src/configs/buf.rs b/src/configs/buf.rs index 32dd5071..60e6f761 100644 --- a/src/configs/buf.rs +++ b/src/configs/buf.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct BufConfig<'a> { pub format: &'a str, diff --git a/src/configs/bun.rs b/src/configs/bun.rs index 24c73e95..4d527d58 100644 --- a/src/configs/bun.rs +++ b/src/configs/bun.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct BunConfig<'a> { pub format: &'a str, diff --git a/src/configs/c.rs b/src/configs/c.rs index b9d15f6e..474a78fe 100644 --- a/src/configs/c.rs +++ b/src/configs/c.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct CConfig<'a> { pub format: &'a str, diff --git a/src/configs/character.rs b/src/configs/character.rs index 27950caf..c6719a67 100644 --- a/src/configs/character.rs +++ b/src/configs/character.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct CharacterConfig<'a> { pub format: &'a str, diff --git a/src/configs/cmake.rs b/src/configs/cmake.rs index 679d403e..5187f559 100644 --- a/src/configs/cmake.rs +++ b/src/configs/cmake.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct CMakeConfig<'a> { pub format: &'a str, diff --git a/src/configs/cmd_duration.rs b/src/configs/cmd_duration.rs index 9e1e6725..7c186972 100644 --- a/src/configs/cmd_duration.rs +++ b/src/configs/cmd_duration.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct CmdDurationConfig<'a> { pub min_time: i64, diff --git a/src/configs/cobol.rs b/src/configs/cobol.rs index 7858de92..ff6f621a 100644 --- a/src/configs/cobol.rs +++ b/src/configs/cobol.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct CobolConfig<'a> { pub format: &'a str, diff --git a/src/configs/conda.rs b/src/configs/conda.rs index e2e39154..e75806a3 100644 --- a/src/configs/conda.rs +++ b/src/configs/conda.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct CondaConfig<'a> { pub truncation_length: usize, diff --git a/src/configs/container.rs b/src/configs/container.rs index b0173797..def6580f 100644 --- a/src/configs/container.rs +++ b/src/configs/container.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct ContainerConfig<'a> { pub format: &'a str, diff --git a/src/configs/crystal.rs b/src/configs/crystal.rs index 015d6499..bd760f37 100644 --- a/src/configs/crystal.rs +++ b/src/configs/crystal.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct CrystalConfig<'a> { pub format: &'a str, diff --git a/src/configs/custom.rs b/src/configs/custom.rs index ac06dc1d..c4026f54 100644 --- a/src/configs/custom.rs +++ b/src/configs/custom.rs @@ -3,7 +3,11 @@ use crate::config::{Either, VecOr}; use serde::{self, Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct CustomConfig<'a> { pub format: &'a str, diff --git a/src/configs/daml.rs b/src/configs/daml.rs index 51ea9330..3ec94f86 100644 --- a/src/configs/daml.rs +++ b/src/configs/daml.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct DamlConfig<'a> { pub symbol: &'a str, diff --git a/src/configs/dart.rs b/src/configs/dart.rs index 5046d046..49ccf1b2 100644 --- a/src/configs/dart.rs +++ b/src/configs/dart.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct DartConfig<'a> { pub format: &'a str, diff --git a/src/configs/deno.rs b/src/configs/deno.rs index 1308c9c1..a562e1d0 100644 --- a/src/configs/deno.rs +++ b/src/configs/deno.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct DenoConfig<'a> { pub format: &'a str, diff --git a/src/configs/directory.rs b/src/configs/directory.rs index 32c72fb6..2701e74b 100644 --- a/src/configs/directory.rs +++ b/src/configs/directory.rs @@ -3,7 +3,11 @@ use indexmap::IndexMap; use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct DirectoryConfig<'a> { pub truncation_length: i64, diff --git a/src/configs/docker_context.rs b/src/configs/docker_context.rs index 2f747421..8d79adcd 100644 --- a/src/configs/docker_context.rs +++ b/src/configs/docker_context.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct DockerContextConfig<'a> { pub symbol: &'a str, diff --git a/src/configs/dotnet.rs b/src/configs/dotnet.rs index 4498d638..1a7b3233 100644 --- a/src/configs/dotnet.rs +++ b/src/configs/dotnet.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct DotnetConfig<'a> { pub format: &'a str, diff --git a/src/configs/elixir.rs b/src/configs/elixir.rs index b0ad3cb8..3ca5596e 100644 --- a/src/configs/elixir.rs +++ b/src/configs/elixir.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct ElixirConfig<'a> { pub format: &'a str, diff --git a/src/configs/elm.rs b/src/configs/elm.rs index 31bb1fb7..a70c3b56 100644 --- a/src/configs/elm.rs +++ b/src/configs/elm.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct ElmConfig<'a> { pub format: &'a str, diff --git a/src/configs/env_var.rs b/src/configs/env_var.rs index 8f6b995b..d9a8db9a 100644 --- a/src/configs/env_var.rs +++ b/src/configs/env_var.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct EnvVarConfig<'a> { pub symbol: &'a str, diff --git a/src/configs/erlang.rs b/src/configs/erlang.rs index a1cca11f..7f96af59 100644 --- a/src/configs/erlang.rs +++ b/src/configs/erlang.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct ErlangConfig<'a> { pub format: &'a str, diff --git a/src/configs/fill.rs b/src/configs/fill.rs index eaf72a1b..0817a93b 100644 --- a/src/configs/fill.rs +++ b/src/configs/fill.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct FillConfig<'a> { pub style: &'a str, diff --git a/src/configs/gcloud.rs b/src/configs/gcloud.rs index 1f2aec55..bca0bb73 100644 --- a/src/configs/gcloud.rs +++ b/src/configs/gcloud.rs @@ -2,7 +2,11 @@ use serde::{Deserialize, Serialize}; use std::collections::HashMap; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct GcloudConfig<'a> { pub format: &'a str, diff --git a/src/configs/git_branch.rs b/src/configs/git_branch.rs index 2f12a54d..5bf4a4e3 100644 --- a/src/configs/git_branch.rs +++ b/src/configs/git_branch.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct GitBranchConfig<'a> { pub format: &'a str, diff --git a/src/configs/git_commit.rs b/src/configs/git_commit.rs index 6b0d3140..7fb56af4 100644 --- a/src/configs/git_commit.rs +++ b/src/configs/git_commit.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct GitCommitConfig<'a> { pub commit_hash_length: usize, diff --git a/src/configs/git_metrics.rs b/src/configs/git_metrics.rs index 45aa6385..928d9829 100644 --- a/src/configs/git_metrics.rs +++ b/src/configs/git_metrics.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct GitMetricsConfig<'a> { pub added_style: &'a str, diff --git a/src/configs/git_state.rs b/src/configs/git_state.rs index b6ade44f..922ea01e 100644 --- a/src/configs/git_state.rs +++ b/src/configs/git_state.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct GitStateConfig<'a> { pub rebase: &'a str, diff --git a/src/configs/git_status.rs b/src/configs/git_status.rs index 54acfc3e..6f834548 100644 --- a/src/configs/git_status.rs +++ b/src/configs/git_status.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct GitStatusConfig<'a> { pub format: &'a str, diff --git a/src/configs/go.rs b/src/configs/go.rs index b0ff2532..2b4adebb 100644 --- a/src/configs/go.rs +++ b/src/configs/go.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct GoConfig<'a> { pub format: &'a str, diff --git a/src/configs/haskell.rs b/src/configs/haskell.rs index 1f0dcd6a..f51107c9 100644 --- a/src/configs/haskell.rs +++ b/src/configs/haskell.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct HaskellConfig<'a> { pub format: &'a str, diff --git a/src/configs/helm.rs b/src/configs/helm.rs index 8d569dfb..82071765 100644 --- a/src/configs/helm.rs +++ b/src/configs/helm.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct HelmConfig<'a> { pub format: &'a str, diff --git a/src/configs/hg_branch.rs b/src/configs/hg_branch.rs index 7be34a36..9e45fe5f 100644 --- a/src/configs/hg_branch.rs +++ b/src/configs/hg_branch.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct HgBranchConfig<'a> { pub symbol: &'a str, diff --git a/src/configs/hostname.rs b/src/configs/hostname.rs index b877ddfb..b6fbfb48 100644 --- a/src/configs/hostname.rs +++ b/src/configs/hostname.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct HostnameConfig<'a> { pub ssh_only: bool, diff --git a/src/configs/java.rs b/src/configs/java.rs index f7995ac2..ecb4c4ba 100644 --- a/src/configs/java.rs +++ b/src/configs/java.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct JavaConfig<'a> { pub disabled: bool, diff --git a/src/configs/jobs.rs b/src/configs/jobs.rs index d398f285..38a22acd 100644 --- a/src/configs/jobs.rs +++ b/src/configs/jobs.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct JobsConfig<'a> { pub threshold: i64, diff --git a/src/configs/julia.rs b/src/configs/julia.rs index a34bee8f..af8d62dd 100644 --- a/src/configs/julia.rs +++ b/src/configs/julia.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct JuliaConfig<'a> { pub format: &'a str, diff --git a/src/configs/kotlin.rs b/src/configs/kotlin.rs index 61d60184..1169d9b8 100644 --- a/src/configs/kotlin.rs +++ b/src/configs/kotlin.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct KotlinConfig<'a> { pub format: &'a str, diff --git a/src/configs/kubernetes.rs b/src/configs/kubernetes.rs index fde9add5..6441a4f1 100644 --- a/src/configs/kubernetes.rs +++ b/src/configs/kubernetes.rs @@ -2,7 +2,11 @@ use serde::{Deserialize, Serialize}; use std::collections::HashMap; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct KubernetesConfig<'a> { pub symbol: &'a str, diff --git a/src/configs/line_break.rs b/src/configs/line_break.rs index ca3697e2..8d7f4ae1 100644 --- a/src/configs/line_break.rs +++ b/src/configs/line_break.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize, Default)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct LineBreakConfig { pub disabled: bool, diff --git a/src/configs/localip.rs b/src/configs/localip.rs index d84ae9e5..e8f2f0a0 100644 --- a/src/configs/localip.rs +++ b/src/configs/localip.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct LocalipConfig<'a> { pub ssh_only: bool, diff --git a/src/configs/lua.rs b/src/configs/lua.rs index 00de6cae..d6b6239d 100644 --- a/src/configs/lua.rs +++ b/src/configs/lua.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct LuaConfig<'a> { pub format: &'a str, diff --git a/src/configs/memory_usage.rs b/src/configs/memory_usage.rs index e710cc1d..d43d69c7 100644 --- a/src/configs/memory_usage.rs +++ b/src/configs/memory_usage.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct MemoryConfig<'a> { pub threshold: i64, diff --git a/src/configs/mod.rs b/src/configs/mod.rs index bbd7ee73..ec47d501 100644 --- a/src/configs/mod.rs +++ b/src/configs/mod.rs @@ -82,7 +82,11 @@ pub mod zig; pub use starship_root::*; #[derive(Serialize, Deserialize, Clone, Default)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct FullConfig<'a> { // Meta diff --git a/src/configs/nim.rs b/src/configs/nim.rs index 7636d08a..d80ddd14 100644 --- a/src/configs/nim.rs +++ b/src/configs/nim.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct NimConfig<'a> { pub format: &'a str, diff --git a/src/configs/nix_shell.rs b/src/configs/nix_shell.rs index e7e5f400..0a676aeb 100644 --- a/src/configs/nix_shell.rs +++ b/src/configs/nix_shell.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct NixShellConfig<'a> { pub format: &'a str, diff --git a/src/configs/nodejs.rs b/src/configs/nodejs.rs index 69bd342a..1d8f1817 100644 --- a/src/configs/nodejs.rs +++ b/src/configs/nodejs.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct NodejsConfig<'a> { pub format: &'a str, diff --git a/src/configs/ocaml.rs b/src/configs/ocaml.rs index 85b83879..3a151285 100644 --- a/src/configs/ocaml.rs +++ b/src/configs/ocaml.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct OCamlConfig<'a> { pub format: &'a str, diff --git a/src/configs/openstack.rs b/src/configs/openstack.rs index 4cb4e796..2c93d426 100644 --- a/src/configs/openstack.rs +++ b/src/configs/openstack.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct OspConfig<'a> { pub format: &'a str, diff --git a/src/configs/package.rs b/src/configs/package.rs index b9653ecf..2aeb9bbd 100644 --- a/src/configs/package.rs +++ b/src/configs/package.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct PackageConfig<'a> { pub format: &'a str, diff --git a/src/configs/perl.rs b/src/configs/perl.rs index 607140f3..04e736da 100644 --- a/src/configs/perl.rs +++ b/src/configs/perl.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct PerlConfig<'a> { pub format: &'a str, diff --git a/src/configs/php.rs b/src/configs/php.rs index cef0e72a..3f3915f9 100644 --- a/src/configs/php.rs +++ b/src/configs/php.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct PhpConfig<'a> { pub format: &'a str, diff --git a/src/configs/pulumi.rs b/src/configs/pulumi.rs index 043cdab0..5e1b6667 100644 --- a/src/configs/pulumi.rs +++ b/src/configs/pulumi.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct PulumiConfig<'a> { pub format: &'a str, diff --git a/src/configs/purescript.rs b/src/configs/purescript.rs index 61a07c89..a172d52b 100644 --- a/src/configs/purescript.rs +++ b/src/configs/purescript.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct PureScriptConfig<'a> { pub format: &'a str, diff --git a/src/configs/python.rs b/src/configs/python.rs index 2f46b133..bcfa713d 100644 --- a/src/configs/python.rs +++ b/src/configs/python.rs @@ -3,7 +3,11 @@ use crate::config::VecOr; use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct PythonConfig<'a> { pub pyenv_version_name: bool, diff --git a/src/configs/raku.rs b/src/configs/raku.rs index 109d2b0f..1ad46021 100644 --- a/src/configs/raku.rs +++ b/src/configs/raku.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct RakuConfig<'a> { pub format: &'a str, diff --git a/src/configs/red.rs b/src/configs/red.rs index 2d156637..199dfa45 100644 --- a/src/configs/red.rs +++ b/src/configs/red.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct RedConfig<'a> { pub format: &'a str, diff --git a/src/configs/rlang.rs b/src/configs/rlang.rs index 0359ba86..3982b723 100644 --- a/src/configs/rlang.rs +++ b/src/configs/rlang.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct RLangConfig<'a> { pub format: &'a str, diff --git a/src/configs/ruby.rs b/src/configs/ruby.rs index 73318f45..eb301a4f 100644 --- a/src/configs/ruby.rs +++ b/src/configs/ruby.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct RubyConfig<'a> { pub format: &'a str, diff --git a/src/configs/rust.rs b/src/configs/rust.rs index b57c9d59..05b5eafe 100644 --- a/src/configs/rust.rs +++ b/src/configs/rust.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct RustConfig<'a> { pub format: &'a str, diff --git a/src/configs/scala.rs b/src/configs/scala.rs index 637b9daa..7d70b11f 100644 --- a/src/configs/scala.rs +++ b/src/configs/scala.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct ScalaConfig<'a> { pub format: &'a str, diff --git a/src/configs/shell.rs b/src/configs/shell.rs index ebadbbdc..540ea8e3 100644 --- a/src/configs/shell.rs +++ b/src/configs/shell.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct ShellConfig<'a> { pub format: &'a str, diff --git a/src/configs/shlvl.rs b/src/configs/shlvl.rs index ce4277a0..ad05a213 100644 --- a/src/configs/shlvl.rs +++ b/src/configs/shlvl.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct ShLvlConfig<'a> { pub threshold: i64, diff --git a/src/configs/singularity.rs b/src/configs/singularity.rs index e11b6acb..b9169389 100644 --- a/src/configs/singularity.rs +++ b/src/configs/singularity.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct SingularityConfig<'a> { pub symbol: &'a str, diff --git a/src/configs/spack.rs b/src/configs/spack.rs index dfbc5eae..08a041d5 100644 --- a/src/configs/spack.rs +++ b/src/configs/spack.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct SpackConfig<'a> { pub truncation_length: usize, diff --git a/src/configs/starship_root.rs b/src/configs/starship_root.rs index ce93343b..8edbbad4 100644 --- a/src/configs/starship_root.rs +++ b/src/configs/starship_root.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Serialize, Deserialize, Debug)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct StarshipRootConfig { #[serde(rename = "$schema")] diff --git a/src/configs/status.rs b/src/configs/status.rs index 839c57e6..dd701887 100644 --- a/src/configs/status.rs +++ b/src/configs/status.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct StatusConfig<'a> { pub format: &'a str, diff --git a/src/configs/sudo.rs b/src/configs/sudo.rs index 3dad2518..70e57f6c 100644 --- a/src/configs/sudo.rs +++ b/src/configs/sudo.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct SudoConfig<'a> { pub format: &'a str, diff --git a/src/configs/swift.rs b/src/configs/swift.rs index 8d90b031..139342b3 100644 --- a/src/configs/swift.rs +++ b/src/configs/swift.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct SwiftConfig<'a> { pub format: &'a str, diff --git a/src/configs/terraform.rs b/src/configs/terraform.rs index fbd5e7fd..f352ed45 100644 --- a/src/configs/terraform.rs +++ b/src/configs/terraform.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct TerraformConfig<'a> { pub format: &'a str, diff --git a/src/configs/time.rs b/src/configs/time.rs index 17c74ac1..2346781c 100644 --- a/src/configs/time.rs +++ b/src/configs/time.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct TimeConfig<'a> { pub format: &'a str, diff --git a/src/configs/username.rs b/src/configs/username.rs index 8bd46ffe..1dbcf4a3 100644 --- a/src/configs/username.rs +++ b/src/configs/username.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct UsernameConfig<'a> { pub format: &'a str, diff --git a/src/configs/v.rs b/src/configs/v.rs index 588d840f..3992411b 100644 --- a/src/configs/v.rs +++ b/src/configs/v.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct VConfig<'a> { pub format: &'a str, diff --git a/src/configs/vagrant.rs b/src/configs/vagrant.rs index fa11d452..d88062c1 100644 --- a/src/configs/vagrant.rs +++ b/src/configs/vagrant.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct VagrantConfig<'a> { pub format: &'a str, diff --git a/src/configs/vcsh.rs b/src/configs/vcsh.rs index e732da93..c5069882 100644 --- a/src/configs/vcsh.rs +++ b/src/configs/vcsh.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct VcshConfig<'a> { pub symbol: &'a str, diff --git a/src/configs/zig.rs b/src/configs/zig.rs index 6340968c..61ae3e28 100644 --- a/src/configs/zig.rs +++ b/src/configs/zig.rs @@ -1,7 +1,11 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))] +#[cfg_attr( + feature = "config-schema", + derive(schemars::JsonSchema), + schemars(deny_unknown_fields) +)] #[serde(default)] pub struct ZigConfig<'a> { pub format: &'a str,