diff --git a/Cargo.lock b/Cargo.lock index 8031891..9f054cd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -113,7 +113,7 @@ checksum = "edf3ee19dbc0a46d740f6f0926bde8c50f02bdbc7b536842da28f6ac56513a8b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn", ] [[package]] @@ -182,7 +182,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.60", + "syn", ] [[package]] @@ -239,7 +239,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.60", + "syn", ] [[package]] @@ -362,9 +362,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.1" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" +checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" [[package]] name = "heck" @@ -418,17 +418,16 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", - "serde", ] [[package]] name = "indexmap" -version = "2.0.2" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown 0.14.1", + "hashbrown 0.15.3", ] [[package]] @@ -571,6 +570,26 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "ref-cast" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "regex" version = "1.6.0" @@ -616,12 +635,12 @@ checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" [[package]] name = "schemars" -version = "0.8.12" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" dependencies = [ "dyn-clone", - "indexmap 1.9.3", + "ref-cast", "schemars_derive", "serde", "serde_json", @@ -629,54 +648,56 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "5016d94c77c6d32f0b8e08b781f7dc8a90c2007d4e77472cc2807bc10a8438fe" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 1.0.109", + "syn", ] [[package]] name = "serde" -version = "1.0.158" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.158" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn", ] [[package]] name = "serde_derive_internals" -version = "0.26.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn", ] [[package]] name = "serde_json" -version = "1.0.85" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ + "indexmap 2.9.0", "itoa", + "memchr", "ryu", "serde", ] @@ -736,17 +757,6 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - [[package]] name = "syn" version = "2.0.60" @@ -800,7 +810,7 @@ version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca676d9ba1a322c1b64eb8045a5ec5c0cfb0c9d08e15e9ff622589ad5221c8fe" dependencies = [ - "indexmap 2.0.2", + "indexmap 2.9.0", "serde", "serde_spanned", "toml_datetime", diff --git a/Cargo.toml b/Cargo.toml index 7b3dc9a..4928b11 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -134,7 +134,7 @@ humantime-serde = { version = "1", optional = true } bstr = { version = "1.4", features = ["serde"] } derive_more = { version = "2.0.0", features = ["is_variant"] } eyre = "0.6" -schemars = { version = "0.8.12", features = ["preserve_order"], optional = true } +schemars = { version = "0.9.0", features = ["preserve_order"], optional = true } clap = { version = "4.2", features = ["derive"], optional = true } proc-exit = { version = "2.0", optional = true } env_logger = { version = "0.11.1", optional = true } diff --git a/schema.json b/schema.json index 200ec19..56d92c0 100644 --- a/schema.json +++ b/schema.json @@ -1,58 +1,58 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", + "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "TodoList", "type": "object", "properties": { "init": { - "default": true, - "type": "boolean" + "type": "boolean", + "default": true }, "sleep": { - "default": null, "anyOf": [ { - "$ref": "#/definitions/Duration" + "$ref": "#/$defs/Duration" }, { "type": "null" } - ] + ], + "default": null }, "author": { - "default": null, "type": [ "string", "null" - ] + ], + "default": null }, "commands": { - "default": [], "type": "array", "items": { - "$ref": "#/definitions/Command" - } + "$ref": "#/$defs/Command" + }, + "default": [] } }, "additionalProperties": false, - "definitions": { + "$defs": { "Duration": { "type": "object", - "required": [ - "nanos", - "secs" - ], "properties": { "secs": { "type": "integer", "format": "uint64", - "minimum": 0.0 + "minimum": 0 }, "nanos": { "type": "integer", "format": "uint32", - "minimum": 0.0 + "minimum": 0 } - } + }, + "required": [ + "secs", + "nanos" + ] }, "Command": { "oneOf": [ @@ -64,106 +64,106 @@ }, { "type": "object", - "required": [ - "label" - ], "properties": { "label": { "type": "string" } }, + "required": [ + "label" + ], "additionalProperties": false }, { "type": "object", - "required": [ - "reset" - ], "properties": { "reset": { "type": "string" } }, + "required": [ + "reset" + ], "additionalProperties": false }, { "type": "object", - "required": [ - "tree" - ], "properties": { "tree": { - "$ref": "#/definitions/Tree" + "$ref": "#/$defs/Tree" } }, + "required": [ + "tree" + ], "additionalProperties": false }, { "type": "object", - "required": [ - "merge" - ], "properties": { "merge": { - "$ref": "#/definitions/Merge" + "$ref": "#/$defs/Merge" } }, + "required": [ + "merge" + ], "additionalProperties": false }, { "type": "object", - "required": [ - "branch" - ], "properties": { "branch": { "type": "string" } }, + "required": [ + "branch" + ], "additionalProperties": false }, { "type": "object", - "required": [ - "tag" - ], "properties": { "tag": { "type": "string" } }, + "required": [ + "tag" + ], "additionalProperties": false } ] }, "Tree": { "type": "object", - "required": [ - "files" - ], "properties": { "files": { "type": "object", "additionalProperties": { - "$ref": "#/definitions/FileContent" + "$ref": "#/$defs/FileContent" } }, "message": { - "default": null, "type": [ "string", "null" - ] + ], + "default": null }, "author": { - "default": null, "type": [ "string", "null" - ] + ], + "default": null } }, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "files" + ] }, "FileContent": { "anyOf": [ @@ -172,7 +172,8 @@ "items": { "type": "integer", "format": "uint8", - "minimum": 0.0 + "minimum": 0, + "maximum": 255 } }, { @@ -182,9 +183,6 @@ }, "Merge": { "type": "object", - "required": [ - "base" - ], "properties": { "base": { "type": "array", @@ -193,21 +191,24 @@ } }, "message": { - "default": null, "type": [ "string", "null" - ] + ], + "default": null }, "author": { - "default": null, "type": [ "string", "null" - ] + ], + "default": null } }, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "base" + ] } } } \ No newline at end of file