Skip to content

Commit 0c62637

Browse files
committed
getting flavor from config to fix serverless output
1 parent d9ed256 commit 0c62637

File tree

5 files changed

+330
-333
lines changed

5 files changed

+330
-333
lines changed

compiler-rs/clients_schema_to_openapi/src/lib.rs

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ pub fn convert_expanded_schema(model: &IndexedModel, config: &Configuration) ->
103103
continue;
104104
}
105105
}
106-
paths::add_endpoint(endpoint, &mut tac, &mut openapi.paths)?;
106+
paths::add_endpoint(endpoint, &mut tac, &mut openapi.paths, &config.flavor)?;
107107
}
108108

109109
// // Sort maps to ensure output stability
@@ -149,34 +149,33 @@ fn info(model: &IndexedModel) -> openapiv3::Info {
149149
}
150150
}
151151

152-
pub fn availability_as_extensions(availabilities: &Option<Availabilities>) -> IndexMap<String, serde_json::Value> {
152+
pub fn availability_as_extensions(availabilities: &Option<Availabilities>, flavor: &Option<Flavor>) -> IndexMap<String, serde_json::Value> {
153153
let mut result = IndexMap::new();
154-
155154
if let Some(avails) = availabilities {
156-
// We may have several availabilities, but since generally exists only on stateful (stack)
157-
for (_, availability) in avails {
158-
if let Some(stability) = &availability.stability {
159-
let mut since_str = "".to_string();
160-
if let Some(since) = &availability.since {
161-
since_str = "; Added in ".to_string() + since;
162-
}
163-
match stability {
164-
Stability::Beta => {
165-
let beta_since = "Beta".to_string() + &since_str;
166-
result.insert("x-state".to_string(), serde_json::Value::String(beta_since));
155+
if let Some(flavor) = flavor {
156+
if let Some(availability) = avails.get(flavor) {
157+
if let Some(stability) = &availability.stability {
158+
let mut since_str = "".to_string();
159+
if let Some(since) = &availability.since {
160+
since_str = "; Added in ".to_string() + since;
167161
}
168-
Stability::Experimental => {
169-
let exp_since = "Technical preview".to_string() + &since_str;
170-
result.insert("x-state".to_string(), serde_json::Value::String(exp_since));
171-
}
172-
Stability::Stable => {
173-
let stable_since = "Generally available".to_string() + &since_str;
174-
result.insert("x-state".to_string(), serde_json::Value::String(stable_since));
162+
match stability {
163+
Stability::Beta => {
164+
let beta_since = "Beta".to_string() + &since_str;
165+
result.insert("x-state".to_string(), serde_json::Value::String(beta_since));
166+
}
167+
Stability::Experimental => {
168+
let exp_since = "Technical preview".to_string() + &since_str;
169+
result.insert("x-state".to_string(), serde_json::Value::String(exp_since));
170+
}
171+
Stability::Stable => {
172+
let stable_since = "Generally available".to_string() + &since_str;
173+
result.insert("x-state".to_string(), serde_json::Value::String(stable_since));
174+
}
175175
}
176176
}
177177
}
178178
}
179179
}
180-
181180
result
182181
}

compiler-rs/clients_schema_to_openapi/src/paths.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use std::collections::HashMap;
1919
use std::fmt::Write;
2020

2121
use anyhow::{anyhow, bail};
22-
use clients_schema::Property;
22+
use clients_schema::{Flavor, Property};
2323
use indexmap::IndexMap;
2424
use indexmap::indexmap;
2525
use icu_segmenter::SentenceSegmenter;
@@ -37,6 +37,7 @@ pub fn add_endpoint(
3737
endpoint: &clients_schema::Endpoint,
3838
tac: &mut TypesAndComponents,
3939
out: &mut Paths,
40+
flavor: &Option<Flavor>
4041
) -> anyhow::Result<()> {
4142
if endpoint.request.is_none() {
4243
// tracing::warn!("Endpoint {} is missing a request -- ignored", &endpoint.name);
@@ -274,7 +275,7 @@ pub fn add_endpoint(
274275
deprecated: endpoint.deprecation.is_some(),
275276
security: None,
276277
servers: vec![],
277-
extensions: crate::availability_as_extensions(&endpoint.availability),
278+
extensions: crate::availability_as_extensions(&endpoint.availability, flavor),
278279
};
279280

280281

compiler-rs/clients_schema_to_openapi/src/schemas.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,7 @@ impl<'a> TypesAndComponents<'a> {
469469
data.external_docs = self.convert_external_docs(prop);
470470
data.deprecated = prop.deprecation.is_some();
471471
data.description = self.property_description(prop)?;
472-
data.extensions = crate::availability_as_extensions(&prop.availability);
472+
data.extensions = crate::availability_as_extensions(&prop.availability, &self.config.flavor);
473473
// TODO: prop.aliases as extensions
474474
// TODO: prop.server_default as extension
475475
// TODO: prop.doc_id as extension (new representation of since and stability)
Binary file not shown.

0 commit comments

Comments
 (0)