Support $schema in JSON structures (#974)

This commit is contained in:
Micah
2024-10-24 10:55:51 -07:00
committed by GitHub
parent 5ca1573e2e
commit d9ab0e7de8
4 changed files with 14 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
# Rojo Changelog # Rojo Changelog
## Unreleased Changes ## Unreleased Changes
* Support for a `$schema` field in all special JSON files (`.project.json`, `.model.json`, and `.meta.json`) ([#974])
* Projects may now manually link `Ref` properties together using `Attributes`. ([#843]) * Projects may now manually link `Ref` properties together using `Attributes`. ([#843])
This has two parts: using `id` or `$id` in JSON files or a `Rojo_Target` attribute, an Instance This has two parts: using `id` or `$id` in JSON files or a `Rojo_Target` attribute, an Instance
is given an ID. Then, that ID may be used elsewhere in the project to point to an Instance is given an ID. Then, that ID may be used elsewhere in the project to point to an Instance
@@ -85,6 +86,7 @@
[#886]: https://github.com/rojo-rbx/rojo/pull/886 [#886]: https://github.com/rojo-rbx/rojo/pull/886
[#911]: https://github.com/rojo-rbx/rojo/pull/911 [#911]: https://github.com/rojo-rbx/rojo/pull/911
[#915]: https://github.com/rojo-rbx/rojo/pull/915 [#915]: https://github.com/rojo-rbx/rojo/pull/915
[#974]: https://github.com/rojo-rbx/rojo/pull/974
## [7.4.3] - August 6th, 2024 ## [7.4.3] - August 6th, 2024
* Fixed issue with building binary files introduced in 7.4.2 * Fixed issue with building binary files introduced in 7.4.2

View File

@@ -51,6 +51,9 @@ enum Error {
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(deny_unknown_fields, rename_all = "camelCase")] #[serde(deny_unknown_fields, rename_all = "camelCase")]
pub struct Project { pub struct Project {
#[serde(rename = "$schema", skip_serializing_if = "Option::is_none")]
schema: Option<String>,
/// The name of the top-level instance described by the project. /// The name of the top-level instance described by the project.
pub name: Option<String>, pub name: Option<String>,

View File

@@ -61,6 +61,9 @@ pub fn snapshot_json_model(
#[derive(Debug, Deserialize)] #[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
struct JsonModel { struct JsonModel {
#[serde(rename = "$schema", skip_serializing_if = "Option::is_none")]
schema: Option<String>,
#[serde(alias = "Name")] #[serde(alias = "Name")]
name: Option<String>, name: Option<String>,

View File

@@ -13,6 +13,9 @@ use crate::{resolution::UnresolvedValue, snapshot::InstanceSnapshot, RojoRef};
#[derive(Debug, Serialize, Deserialize)] #[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct AdjacentMetadata { pub struct AdjacentMetadata {
#[serde(rename = "$schema", skip_serializing_if = "Option::is_none")]
schema: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>, pub id: Option<String>,
@@ -104,6 +107,9 @@ impl AdjacentMetadata {
#[derive(Debug, Serialize, Deserialize)] #[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct DirectoryMetadata { pub struct DirectoryMetadata {
#[serde(rename = "$schema", skip_serializing_if = "Option::is_none")]
schema: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>, pub id: Option<String>,