docgen: dump string format (property strings)

This commit is contained in:
Dietmar Maurer 2021-02-21 15:52:38 +01:00
parent bc2358319b
commit 8616a4afe5
3 changed files with 34 additions and 5 deletions

View File

@ -48,7 +48,7 @@ percent-encoding = "2.1"
pin-utils = "0.1.0"
pin-project = "1.0"
pathpatterns = "0.1.2"
proxmox = { version = "0.10.5", features = [ "sortable-macro", "api-macro", "websocket" ] }
proxmox = { version = "0.10.6", features = [ "sortable-macro", "api-macro", "websocket" ] }
#proxmox = { git = "git://git.proxmox.com/git/proxmox", version = "0.1.2", features = [ "sortable-macro", "api-macro" ] }
#proxmox = { path = "../proxmox/proxmox", features = [ "sortable-macro", "api-macro", "websocket" ] }
proxmox-fuse = "0.1.1"

8
debian/control vendored
View File

@ -36,10 +36,10 @@ Build-Depends: debhelper (>= 11),
librust-percent-encoding-2+default-dev (>= 2.1-~~),
librust-pin-project-1+default-dev,
librust-pin-utils-0.1+default-dev,
librust-proxmox-0.10+api-macro-dev (>= 0.10.5-~~),
librust-proxmox-0.10+default-dev (>= 0.10.5-~~),
librust-proxmox-0.10+sortable-macro-dev (>= 0.10.5-~~),
librust-proxmox-0.10+websocket-dev (>= 0.10.5-~~),
librust-proxmox-0.10+api-macro-dev (>= 0.10.6-~~),
librust-proxmox-0.10+default-dev (>= 0.10.6-~~),
librust-proxmox-0.10+sortable-macro-dev (>= 0.10.6-~~),
librust-proxmox-0.10+websocket-dev (>= 0.10.6-~~),
librust-proxmox-fuse-0.1+default-dev (>= 0.1.1-~~),
librust-pxar-0.9+default-dev,
librust-pxar-0.9+tokio-io-dev,

View File

@ -7,10 +7,12 @@ use proxmox::{
Schema,
ObjectSchemaType,
SchemaPropertyEntry,
ApiStringFormat,
},
format::{
dump_enum_properties,
dump_section_config,
get_property_string_type_text,
},
ApiMethod,
ApiHandler,
@ -123,6 +125,30 @@ pub fn dump_schema(schema: &Schema) -> Value {
if let Some(type_text) = string_schema.type_text {
data["typetext"] = type_text.into();
}
match string_schema.format {
None | Some(ApiStringFormat::VerifyFn(_)) => { /* do nothing */ }
Some(ApiStringFormat::Pattern(const_regex)) => {
data["pattern"] = const_regex.regex_string.into();
}
Some(ApiStringFormat::Enum(variants)) => {
let variants: Vec<String> = variants
.iter()
.map(|e| e.value.to_string())
.collect();
data["enum"] = serde_json::to_value(variants).unwrap();
}
Some(ApiStringFormat::PropertyString(subschema)) => {
match subschema {
Schema::Object(_) | Schema::Array(_) => {
data["format"] = dump_schema(subschema);
data["typetext"] = get_property_string_type_text(subschema)
.into();
}
_ => { /* do nothing - shouldnot happen */ }
};
}
}
// fixme: dump format
}
Schema::Integer(integer_schema) => {
@ -158,6 +184,9 @@ pub fn dump_schema(schema: &Schema) -> Value {
Schema::Object(object_schema) => {
data = dump_property_schema(object_schema);
data["type"] = "object".into();
if let Some(default_key) = object_schema.default_key {
data["default_key"] = default_key.into();
}
}
Schema::Array(array_schema) => {
data = json!({