use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum Provider {
Aws,
Azure,
Oracle,
Oci,
Gcp,
Alibaba,
Huawei,
Ovhcloud,
Ionos,
Scaleway,
Hetzner,
Contabo,
Kubernetes,
Terraform,
MultiCloud,
Generic,
Frontend,
Dotnet,
Java,
Kotlin,
Hr,
Legal,
Salesforce,
Accounting,
Finance,
Netsuite,
Sap,
Argocd,
Backstage,
CertManager,
Cilium,
Claude,
Databricks,
Falco,
Fluxcd,
Istio,
Kyverno,
Marketing,
Microsoft,
Nvidia,
Opentelemetry,
Prometheus,
Sigstore,
Snowflake,
Velero,
Php,
Python,
}
impl std::fmt::Display for Provider {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let s = serde_json::to_value(self)
.ok()
.and_then(|v| v.as_str().map(|s| s.to_string()))
.unwrap_or_else(|| format!("{:?}", self).to_lowercase());
write!(f, "{}", s)
}
}