foundry_config/
soldeer.rs

1//! Configuration specific to the `forge soldeer` command and the `forge_soldeer` package
2use serde::{Deserialize, Serialize};
3pub use soldeer_core::config::SoldeerConfig;
4use std::collections::BTreeMap;
5
6/// Soldeer dependencies config structure when it's defined as a map
7#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
8pub struct MapDependency {
9    /// The version of the dependency
10    pub version: String,
11
12    /// The url from where the dependency was retrieved
13    #[serde(default, skip_serializing_if = "Option::is_none")]
14    pub url: Option<String>,
15
16    /// The git URL for the source repo
17    #[serde(default, skip_serializing_if = "Option::is_none")]
18    pub git: Option<String>,
19
20    /// The commit in case git is used as dependency source
21    #[serde(default, skip_serializing_if = "Option::is_none")]
22    pub rev: Option<String>,
23
24    /// The branch in case git is used as dependency source
25    #[serde(default, skip_serializing_if = "Option::is_none")]
26    pub branch: Option<String>,
27
28    /// The git tag in case git is used as dependency source
29    #[serde(default, skip_serializing_if = "Option::is_none")]
30    pub tag: Option<String>,
31
32    /// An optional relative path to the project's root within the repository
33    #[serde(default, skip_serializing_if = "Option::is_none")]
34    pub project_root: Option<String>,
35}
36
37/// Type for Soldeer configs, under dependencies tag in the foundry.toml
38#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
39pub struct SoldeerDependencyConfig(pub BTreeMap<String, SoldeerDependencyValue>);
40
41impl AsRef<Self> for SoldeerDependencyConfig {
42    fn as_ref(&self) -> &Self {
43        self
44    }
45}
46
47/// Enum to cover both available formats for defining a dependency
48/// `dep = { version = "1.1", url = "https://my-dependency" }`
49/// or
50/// `dep = "1.1"`
51#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
52#[serde(untagged)]
53pub enum SoldeerDependencyValue {
54    Map(MapDependency),
55    Str(String),
56}