use super::defaults::*;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use std::collections::{BTreeMap, HashMap};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "lowercase")]
pub enum DependencyMode {
#[default]
Local,
Registry,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
pub struct RegistryConfig {
#[serde(default = "default_test_apps_dir")]
pub output: String,
#[serde(default)]
pub packages: HashMap<String, PackageRef>,
#[serde(default)]
pub categories: Vec<String>,
#[serde(default)]
pub github_repo: Option<String>,
#[serde(default)]
pub run: HashMap<String, crate::core::config::output::TestAppRunConfig>,
}
impl Default for RegistryConfig {
fn default() -> Self {
Self {
output: default_test_apps_dir(),
packages: HashMap::new(),
categories: Vec::new(),
github_repo: None,
run: HashMap::new(),
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
pub struct HomebrewCliTest {
pub name: String,
pub command: String,
#[serde(default)]
pub expect_contains: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, JsonSchema)]
pub struct PackageRef {
#[serde(default)]
pub name: Option<String>,
#[serde(default)]
pub path: Option<String>,
#[serde(default)]
pub module: Option<String>,
#[serde(default)]
pub version: Option<String>,
#[serde(default)]
pub hash: Option<String>,
#[serde(default)]
pub platform_hashes: BTreeMap<String, String>,
#[serde(default)]
pub tap: Option<String>,
#[serde(default)]
pub cli_formula: Option<String>,
#[serde(default)]
pub ffi_formula: Option<String>,
#[serde(default)]
pub cli_tests: Vec<HomebrewCliTest>,
}