diff --git a/Cargo.lock b/Cargo.lock index 8131d6d..b182277 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -181,8 +181,6 @@ dependencies = [ "magnus", "rb-sys", "rb-sys-env", - "serde", - "serde_magnus", ] [[package]] @@ -447,9 +445,9 @@ checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "magnus" -version = "0.8.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b36a5b126bbe97eb0d02d07acfeb327036c6319fd816139a49824a83b7f9012" +checksum = "40ef424404d166cbb71c8b8d19c9c589c748c4547c1afa1928c5504299f6c713" dependencies = [ "magnus-macros", "rb-sys", @@ -459,9 +457,9 @@ dependencies = [ [[package]] name = "magnus-macros" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47607461fd8e1513cb4f2076c197d8092d921a1ea75bd08af97398f593751892" +checksum = "9dafde2eeb66f090e0f326112323eb8324b12cb32b5d1210e541d3df6b0ce77e" dependencies = [ "proc-macro2", "quote", @@ -755,17 +753,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "serde_magnus" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ff64c88ddd26acdcad5a501f18bcc339927b77b69f4a03bfaf2a6fc5ba2ac4b" -dependencies = [ - "magnus", - "serde", - "tap", -] - [[package]] name = "serde_yaml" version = "0.9.34+deprecated" @@ -851,12 +838,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - [[package]] name = "tempfile" version = "3.23.0" diff --git a/ext/code_ownership/Cargo.toml b/ext/code_ownership/Cargo.toml index 80d5292..06f8ca8 100644 --- a/ext/code_ownership/Cargo.toml +++ b/ext/code_ownership/Cargo.toml @@ -14,9 +14,7 @@ rb-sys = { version = "0.9.111", features = [ "bindgen-deprecated-types", "stable-api-compiled-fallback", ] } -magnus = { version = "0.8" } -serde = { version = "1.0.219", features = ["derive"] } -serde_magnus = "0.11" +magnus = { version = "0.9" } codeowners = { git = "https://github.com/rubyatscale/codeowners-rs.git", tag = "v0.5.0" } [dev-dependencies] diff --git a/ext/code_ownership/src/lib.rs b/ext/code_ownership/src/lib.rs index da617ad..cf6af1e 100644 --- a/ext/code_ownership/src/lib.rs +++ b/ext/code_ownership/src/lib.rs @@ -1,17 +1,26 @@ use std::{collections::HashMap, env, path::PathBuf}; use codeowners::runner::{self, RunConfig}; -use magnus::{Error, Ruby, Value, function, prelude::*}; -use serde::{Deserialize, Serialize}; -use serde_magnus::serialize; +use magnus::{Error, IntoValue, Ruby, Value, function, prelude::*}; -#[derive(Clone, Debug, Serialize, Deserialize)] +#[derive(Clone, Debug)] pub struct Team { pub team_name: String, pub team_config_yml: String, pub reasons: Vec, } +impl IntoValue for Team { + fn into_value_with(self, ruby: &Ruby) -> Value { + ruby.hash_from_iter([ + (ruby.to_symbol("team_name"), self.team_name.into_value_with(ruby)), + (ruby.to_symbol("team_config_yml"), self.team_config_yml.into_value_with(ruby)), + (ruby.to_symbol("reasons"), self.reasons.into_value_with(ruby)), + ]) + .into_value_with(ruby) + } +} + fn for_team(ruby: &Ruby, team_name: String) -> Result { let run_config = build_run_config(); let team = runner::for_team(&run_config, &team_name); @@ -35,8 +44,7 @@ fn teams_for_files(ruby: &Ruby, file_paths: Vec) -> Result teams_map.insert(path, None); } } - let serialized: Value = serialize(ruby, &teams_map)?; - Ok(serialized) + Ok(ruby.hash_from_iter(teams_map).into_value_with(ruby)) } Err(e) => Err(Error::new(ruby.exception_runtime_error(), e.to_string())), } @@ -57,8 +65,7 @@ fn for_file(ruby: &Ruby, file_path: String) -> Result, Error> { .map(|source| source.to_string()) .collect(), }; - let serialized: Value = serialize(ruby, &team)?; - Ok(Some(serialized)) + Ok(Some(team.into_value_with(ruby))) } else { Ok(None) } @@ -111,8 +118,7 @@ fn validate_result(ruby: &Ruby, run_result: &runner::RunResult) -> Result RunConfig {