| Crates.io | wp-conf-base |
| lib.rs | wp-conf-base |
| version | 0.1.1 |
| created_at | 2026-01-09 23:39:38.503779+00 |
| updated_at | 2026-01-09 23:39:38.503779+00 |
| description | Common configuration primitives, adapters, and validators shared by WarpParse connectors. |
| homepage | https://github.com/wp-labs/-wp-conf-base |
| repository | https://github.com/wp-labs/-wp-conf-base |
| max_upload_size | |
| id | 2033161 |
| size | 66,572 |
wp-conf-base 是 WarpParse 配置体系中的底层 crate,封装了通用的配置建模、解析与校验工具,供各个 connector 或上层配置仓库复用。核心能力包括:
ConnectorKindAdapter,用于描述连接器的默认参数、URL 解析逻辑与默认格式。ConfStdOperation/Validate,用于加载、初始化与校验配置文件。Protocol 等基础枚举/类型,确保配置值在解析阶段就能被校验。ConfParser<[String]> 实现并约束 key/value 的长度与字符集。de_bool_onoff,接受 on/off、true/false、1/0 以及 yes/no 等多种表达。在 Cargo.toml 中加入依赖:
[dependencies]
wp-conf-base = "0.7"
然后在代码中复用通用构件,例如自定义连接器 Kind:
use serde_json::json;
use wp_conf_base::connector::ConnectorKindAdapter;
use wp_connector_api::ParamMap;
struct MysqlAdapter;
impl ConnectorKindAdapter for MysqlAdapter {
fn kind(&self) -> &'static str { "mysql" }
fn defaults(&self) -> ParamMap {
let mut params = ParamMap::new();
params.insert("host".into(), json!("127.0.0.1"));
params.insert("port".into(), json!(3306));
params
}
}
或在配置结构中沿用 ConfStdOperation 与 de_bool_onoff:
use orion_variate::EnvDict;
use serde::Deserialize;
use wp_conf_base::structure::{ConfStdOperation, Validate};
use wp_conf_base::de_bool_onoff;
#[derive(Deserialize, Default)]
struct OutputConf {
path: String,
#[serde(default, deserialize_with = "de_bool_onoff")]
enabled: bool,
}
impl ConfStdOperation for OutputConf {
fn load(path: &str, dict: &EnvDict) -> orion_conf::error::OrionConfResult<Self> {
let raw = std::fs::read_to_string(path)?;
let hydrated = raw.env_eval(dict);
let conf: OutputConf = toml::from_str(&hydrated)?;
conf.validate()?;
Ok(conf)
}
fn init(_: &str) -> orion_conf::error::OrionConfResult<Self> {
Ok(OutputConf::default())
}
fn safe_clean(_: &str) -> orion_conf::error::OrionConfResult<()> {
Ok(())
}
}
impl Validate for OutputConf {}
Tags 构造/校验同样可以直接依赖 ConfParser 的实现:
use wp_conf_base::ConfParser;
use wp_connector_api::Tags;
let tags = Tags::from_parse(&vec!["env:prod".to_string(), "debug".to_string()]);
Tags::validate(&vec!["env:prod".to_string()])?;
# 运行单元测试
cargo test
测试涵盖协议解析、布尔兼容反序列化、tag 规则以及 ConfStdOperation::try_load 的基本行为,可作为扩展新功能时的回归保障。
本仓库遵循 Elastic License 2.0 (Elastic-2.0)。