Skip to content

Commit

Permalink
Polish.
Browse files Browse the repository at this point in the history
  • Loading branch information
milesj committed Jan 5, 2024
1 parent d0b7164 commit 1089d9b
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 17 deletions.
5 changes: 2 additions & 3 deletions crates/schematic/src/schema/renderers/jsonc_template.rs
Original file line number Diff line number Diff line change
Expand Up @@ -162,9 +162,8 @@ impl SchemaRenderer<String> for JsoncTemplateRenderer {
schemas: &IndexMap<String, SchemaType>,
_references: &HashSet<String>,
) -> RenderResult {
validat_schemas(schemas)?;

let mut template = self.render_schema(schemas.values().last().unwrap())?;
let root = validate_root(schemas)?;
let mut template = self.render_struct(&root)?;

// Inject the header and footer
if self.ctx.options.comments {
Expand Down
8 changes: 4 additions & 4 deletions crates/schematic/src/schema/renderers/template.rs
Original file line number Diff line number Diff line change
Expand Up @@ -348,16 +348,16 @@ pub fn render_unknown() -> RenderResult {
render_null()
}

pub fn validat_schemas(schemas: &IndexMap<String, SchemaType>) -> RenderResult {
pub fn validate_root(schemas: &IndexMap<String, SchemaType>) -> miette::Result<StructType> {
let Some(schema) = schemas.values().last() else {
return Err(miette!(
"At least 1 schema is required to generate a template."
));
};

if !schema.is_struct() {
let SchemaType::Struct(root) = schema else {
return Err(miette!("The last registered schema must be a struct type."));
}
};

Ok(String::new())
Ok(root.to_owned())
}
8 changes: 1 addition & 7 deletions crates/schematic/src/schema/renderers/toml_template.rs
Original file line number Diff line number Diff line change
Expand Up @@ -194,15 +194,9 @@ impl SchemaRenderer<String> for TomlTemplateRenderer {
schemas: &IndexMap<String, SchemaType>,
_references: &HashSet<String>,
) -> RenderResult {
validat_schemas(schemas)?;
let mut root = validate_root(schemas)?;

// Recursively extract all sections (arrays, objects)
let SchemaType::Struct(root) = schemas.values().last().unwrap() else {
unreachable!();
};

let mut root = root.to_owned();

self.extract_sections(&mut root);

// Then render each section accordingly
Expand Down
5 changes: 2 additions & 3 deletions crates/schematic/src/schema/renderers/yaml_template.rs
Original file line number Diff line number Diff line change
Expand Up @@ -166,9 +166,8 @@ impl SchemaRenderer<String> for YamlTemplateRenderer {
schemas: &IndexMap<String, SchemaType>,
_references: &HashSet<String>,
) -> RenderResult {
validat_schemas(schemas)?;

let mut template = self.render_schema(schemas.values().last().unwrap())?;
let root = validate_root(schemas)?;
let mut template = self.render_struct(&root)?;

// Inject the header and footer
template = format!(
Expand Down

0 comments on commit 1089d9b

Please sign in to comment.