From 6e4e71f8f0cd6b95a895134b0ffb3cd11e36a9ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20K=C3=A4stner?= Date: Tue, 17 Sep 2024 15:14:43 +0200 Subject: [PATCH] Remove proc-macro-error by removing getset (#379) * Remove getset dependency * Fix clippy lints --------- Co-authored-by: Oscar Gustafsson --- vergen-lib/Cargo.toml | 1 - vergen-lib/src/emitter.rs | 28 ++++++++++++++++++++++------ vergen-lib/src/entries.rs | 14 +++++++++++--- vergen/Cargo.toml | 3 +-- vergen/src/feature/cargo.rs | 26 ++++++++++++++++++++++---- 5 files changed, 56 insertions(+), 16 deletions(-) diff --git a/vergen-lib/Cargo.toml b/vergen-lib/Cargo.toml index 189c91db..1cfa282f 100644 --- a/vergen-lib/Cargo.toml +++ b/vergen-lib/Cargo.toml @@ -41,7 +41,6 @@ si = [] [dependencies] anyhow = "1.0.86" derive_builder = "0.20.0" -getset = "0.1.2" [build-dependencies] rustversion = "1.0.17" diff --git a/vergen-lib/src/emitter.rs b/vergen-lib/src/emitter.rs index e1f5a629..ba2c0d0c 100644 --- a/vergen-lib/src/emitter.rs +++ b/vergen-lib/src/emitter.rs @@ -8,7 +8,6 @@ use crate::{AddCustomEntries, AddEntries, CargoRustcEnvMap, DefaultConfig}; use anyhow::Result; -use getset::Getters; use std::{ collections::BTreeMap, env, @@ -17,22 +16,18 @@ use std::{ /// The `Emitter` will emit cargo instructions (i.e. cargo:rustc-env=NAME=VALUE) /// base on the configuration you enable. -#[derive(Clone, Debug, Getters, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub struct Emitter { idempotent: bool, fail_on_error: bool, quiet: bool, custom_buildrs: Option<&'static str>, - #[getset(get = "pub")] #[doc(hidden)] cargo_rustc_env_map: CargoRustcEnvMap, - #[getset(get = "pub")] #[doc(hidden)] cargo_rustc_env_map_custom: BTreeMap, - #[getset(get = "pub")] #[doc(hidden)] cargo_rerun_if_changed: Vec, - #[getset(get = "pub")] #[doc(hidden)] cargo_warning: Vec, } @@ -44,6 +39,27 @@ impl Default for Emitter { } impl Emitter { + #[doc(hidden)] + #[must_use] + pub fn cargo_rustc_env_map(&self) -> &CargoRustcEnvMap { + &self.cargo_rustc_env_map + } + #[doc(hidden)] + #[must_use] + pub fn cargo_rustc_env_map_custom(&self) -> &BTreeMap { + &self.cargo_rustc_env_map_custom + } + #[doc(hidden)] + #[must_use] + pub fn cargo_rerun_if_changed(&self) -> &Vec { + &self.cargo_rerun_if_changed + } + #[doc(hidden)] + #[must_use] + pub fn cargo_warning(&self) -> &Vec { + &self.cargo_warning + } + /// Instantiate the builder to configure the cargo instruction emits #[must_use] pub fn new() -> Self { diff --git a/vergen-lib/src/entries.rs b/vergen-lib/src/entries.rs index 45c94b06..620ee4ef 100644 --- a/vergen-lib/src/entries.rs +++ b/vergen-lib/src/entries.rs @@ -1,7 +1,6 @@ use crate::VergenKey; use anyhow::{Error, Result}; -use getset::Getters; use std::collections::BTreeMap; /// The map used to emit `cargo:rustc-env=NAME=VALUE` cargo instructions @@ -12,8 +11,7 @@ pub type CargoRerunIfChanged = Vec; pub type CargoWarning = Vec; /// The default configuration to use when an issue has occured generating instructions -#[derive(Debug, Getters)] -#[getset(get = "pub")] +#[derive(Debug)] pub struct DefaultConfig { /// Should we fail if an error occurs or output idempotent values on error? fail_on_error: bool, @@ -30,6 +28,16 @@ impl DefaultConfig { error, } } + /// Should we fail if an error occurs or output idempotent values on error? + #[must_use] + pub fn fail_on_error(&self) -> &bool { + &self.fail_on_error + } + /// The error that caused us to try default instruction output. + #[must_use] + pub fn error(&self) -> &Error { + &self.error + } } /// This trait should be implemented to allow the `vergen` emitter diff --git a/vergen/Cargo.toml b/vergen/Cargo.toml index 55eb6b19..6e1442c7 100644 --- a/vergen/Cargo.toml +++ b/vergen/Cargo.toml @@ -26,7 +26,7 @@ always_include = ["unstable"] [features] default = [] build = ["time", "vergen-lib/build"] -cargo = ["cargo_metadata", "getset", "regex", "vergen-lib/cargo"] +cargo = ["cargo_metadata", "regex", "vergen-lib/cargo"] rustc = ["rustc_version", "vergen-lib/rustc"] si = ["sysinfo", "vergen-lib/si"] unstable = ["vergen-lib/unstable"] @@ -36,7 +36,6 @@ emit_and_set = ["vergen-lib/emit_and_set"] anyhow = "1.0.86" cargo_metadata = { version = "0.18.1", optional = true } derive_builder = "0.20.0" -getset = { version = "0.1.2", optional = true } regex = { version = "1.10.5", optional = true } rustc_version = { version = "0.4.0", optional = true } sysinfo = { version = "0.30.13", optional = true, default-features = false } diff --git a/vergen/src/feature/cargo.rs b/vergen/src/feature/cargo.rs index 0a5672d3..f347dab5 100644 --- a/vergen/src/feature/cargo.rs +++ b/vergen/src/feature/cargo.rs @@ -9,7 +9,6 @@ use anyhow::{anyhow, Error, Result}; use cargo_metadata::{DepKindInfo, DependencyKind, MetadataCommand, Package, PackageId}; use derive_builder::Builder as DeriveBuilder; -use getset::Setters; use regex::Regex; use std::env; use vergen_lib::{ @@ -105,7 +104,7 @@ use vergen_lib::{ /// # } /// ``` /// -#[derive(Clone, Copy, Debug, DeriveBuilder, PartialEq, Setters)] +#[derive(Clone, Copy, Debug, DeriveBuilder, PartialEq)] #[allow(clippy::struct_excessive_bools)] pub struct Cargo { /// Emit the DEBUG value set by cargo @@ -155,7 +154,6 @@ pub struct Cargo { /// ``` /// #[builder(default = "None", setter(into))] - #[getset(set = "pub")] name_filter: Option<&'static str>, /// Add a [`DependencyKind`](cargo_metadata::DependencyKind) filter for cargo dependencies /// @@ -164,7 +162,6 @@ pub struct Cargo { /// ``` /// #[builder(default = "None", setter(into))] - #[getset(set = "pub")] dep_kind_filter: Option, } @@ -266,6 +263,27 @@ impl Cargo { .collect(); Ok(results.join(",")) } + + /// Add a name [`Regex`](regex::Regex) filter for cargo dependencies + /// + /// ```text + /// cargo:rustc-env=VERGEN_CARGO_DEPENDENCIES= + /// ``` + /// + pub fn set_name_filter(&mut self, val: Option<&'static str>) -> &mut Self { + self.name_filter = val; + self + } + /// Add a [`DependencyKind`](cargo_metadata::DependencyKind) filter for cargo dependencies + /// + /// ```text + /// cargo:rustc-env=VERGEN_CARGO_DEPENDENCIES= + /// ``` + /// + pub fn set_dep_kind_filter(&mut self, val: Option) -> &mut Self { + self.dep_kind_filter = val; + self + } } impl AddEntries for Cargo {