diff --git a/Cargo.lock b/Cargo.lock
index 7fd0767..6a093d8 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -113,12 +113,6 @@ dependencies = [
"serde",
]
-[[package]]
-name = "byteorder"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
-
[[package]]
name = "cc"
version = "1.2.42"
@@ -220,6 +214,17 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7f84e12ccf0a7ddc17a6c41c93326024c42920d7ee630d04950e6926645c0fe"
+[[package]]
+name = "erased-serde"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "259d404d09818dec19332e31d94558aeb442fea04c817006456c24b5460bbd4b"
+dependencies = [
+ "serde",
+ "serde_core",
+ "typeid",
+]
+
[[package]]
name = "errno"
version = "0.3.14"
@@ -240,58 +245,6 @@ dependencies = [
"once_cell",
]
-[[package]]
-name = "facet"
-version = "0.30.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f2eff8d6840932e1fbd7c4fc80a0521ab303323ea31ec341ea185384c3b1383"
-dependencies = [
- "facet-core",
- "facet-macros",
- "static_assertions",
-]
-
-[[package]]
-name = "facet-core"
-version = "0.30.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c80a6e22351f448828529adf1be52f3037c99ac831bcf3fb9a0df2d5c273df8a"
-dependencies = [
- "bitflags",
- "impls",
-]
-
-[[package]]
-name = "facet-macros"
-version = "0.30.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a8c1da45a93b10c5829601e19846c7f13d8cde6e0b65740fee5ea51f96d7d7e"
-dependencies = [
- "facet-core",
- "facet-macros-emit",
-]
-
-[[package]]
-name = "facet-macros-emit"
-version = "0.30.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "561cd90d2074ce22cb0ea0a4c4395779efd03f9b4d1a2712369b0a63ddd5cfbf"
-dependencies = [
- "facet-macros-parse",
- "quote",
-]
-
-[[package]]
-name = "facet-macros-parse"
-version = "0.30.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b88ddf668029af6fec4d3e3baaedc82f63667416a0e4b2487226212f70b53af9"
-dependencies = [
- "proc-macro2",
- "quote",
- "unsynn",
-]
-
[[package]]
name = "find-msvc-tools"
version = "0.1.4"
@@ -304,23 +257,14 @@ version = "0.1.0"
dependencies = [
"clap",
"color-eyre",
- "facet",
"mlua",
"regex",
+ "serde",
"thiserror",
"tracing",
"tracing-subscriber",
]
-[[package]]
-name = "fxhash"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
-dependencies = [
- "byteorder",
-]
-
[[package]]
name = "gimli"
version = "0.32.3"
@@ -333,12 +277,6 @@ version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
-[[package]]
-name = "impls"
-version = "1.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a46645bbd70538861a90d0f26c31537cdf1e44aae99a794fb75a664b70951bc"
-
[[package]]
name = "indenter"
version = "0.3.4"
@@ -426,11 +364,14 @@ checksum = "9be1c2bfc684b8a228fbaebf954af7a47a98ec27721986654a4cc2c40a20cc7e"
dependencies = [
"bstr",
"either",
+ "erased-serde",
"mlua-sys",
"num-traits",
"parking_lot",
"rustc-hash",
"rustversion",
+ "serde",
+ "serde-value",
]
[[package]]
@@ -446,12 +387,6 @@ dependencies = [
"pkg-config",
]
-[[package]]
-name = "mutants"
-version = "0.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc0287524726960e07b119cebd01678f852f147742ae0d925e6a520dca956126"
-
[[package]]
name = "nu-ansi-term"
version = "0.50.3"
@@ -491,6 +426,15 @@ version = "1.70.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
+[[package]]
+name = "ordered-float"
+version = "2.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c"
+dependencies = [
+ "num-traits",
+]
+
[[package]]
name = "owo-colors"
version = "4.2.3"
@@ -632,6 +576,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
dependencies = [
"serde_core",
+ "serde_derive",
+]
+
+[[package]]
+name = "serde-value"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"
+dependencies = [
+ "ordered-float",
+ "serde",
]
[[package]]
@@ -654,12 +609,6 @@ dependencies = [
"syn",
]
-[[package]]
-name = "shadow_counted"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "65da48d447333cebe1aadbdd3662f3ba56e76e67f53bc46f3dd5f67c74629d6b"
-
[[package]]
name = "sharded-slab"
version = "0.1.7"
@@ -681,12 +630,6 @@ version = "1.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
-[[package]]
-name = "static_assertions"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
-
[[package]]
name = "strsim"
version = "0.11.1"
@@ -801,22 +744,16 @@ dependencies = [
]
[[package]]
-name = "unicode-ident"
-version = "1.0.20"
+name = "typeid"
+version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "462eeb75aeb73aea900253ce739c8e18a67423fadf006037cd3ff27e82748a06"
+checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c"
[[package]]
-name = "unsynn"
-version = "0.1.1"
+name = "unicode-ident"
+version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7940603a9e25cf11211cc43b81f4fcad2b8ab4df291ca855f32c40e1ac22d5bc"
-dependencies = [
- "fxhash",
- "mutants",
- "proc-macro2",
- "shadow_counted",
-]
+checksum = "462eeb75aeb73aea900253ce739c8e18a67423fadf006037cd3ff27e82748a06"
[[package]]
name = "utf8parse"
diff --git a/Cargo.toml b/Cargo.toml
index 6ef52d3..4ce62ec 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -6,9 +6,9 @@ edition = "2024"
[dependencies]
color-eyre = "*"
clap = { version = "*", features = ["derive"] }
-facet = "*"
-mlua = { version = "*", features = ["lua54", "vendored"] }
+mlua = { version = "*", features = ["lua54", "serde", "vendored"] }
regex = "*"
+serde = { version = "*", features = ["derive"] }
thiserror = "*"
tracing = "*"
tracing-subscriber = "*"
diff --git a/src/main.rs b/src/main.rs
index 5a92277..031e202 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -2,6 +2,7 @@ use clap::{Parser, Subcommand};
use color_eyre::{Result, eyre::eyre};
use mlua::prelude::*;
use regex::Regex;
+use serde::Deserialize;
use std::cell::RefCell;
use std::collections::HashMap;
use std::env;
@@ -61,7 +62,7 @@ impl From<LuaError> for FrorkError {
}
}
-#[derive(Debug)]
+#[derive(Debug, Deserialize)]
struct Conflict {
expected: String,
actual: String,
@@ -69,10 +70,7 @@ struct Conflict {
impl FromLua for Conflict {
fn from_lua(value: LuaValue, lua: &Lua) -> LuaResult<Self> {
- let table = LuaTable::from_lua(value, lua)?;
- let expected: String = table.get("expected")?;
- let actual: String = table.get("actual")?;
- Ok(Conflict { expected, actual })
+ lua.from_value(value)
}
}