mirror of
https://github.com/rojo-rbx/rojo.git
synced 2026-04-24 22:56:02 +00:00
Tighten up meta files a bit more
This commit is contained in:
@@ -111,11 +111,15 @@ pub enum SnapshotError {
|
|||||||
path: PathBuf,
|
path: PathBuf,
|
||||||
},
|
},
|
||||||
|
|
||||||
InvalidMetadataField {
|
InvalidMetadataModelField {
|
||||||
field_name: String,
|
field_name: String,
|
||||||
path: PathBuf,
|
path: PathBuf,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
MetadataClassNameNonInit {
|
||||||
|
path: PathBuf,
|
||||||
|
},
|
||||||
|
|
||||||
XmlModelDecodeError {
|
XmlModelDecodeError {
|
||||||
#[fail(cause)]
|
#[fail(cause)]
|
||||||
inner: rbx_xml::DecodeError,
|
inner: rbx_xml::DecodeError,
|
||||||
@@ -166,10 +170,14 @@ impl fmt::Display for SnapshotError {
|
|||||||
SnapshotError::ExtraMetadataError { inner, path } => {
|
SnapshotError::ExtraMetadataError { inner, path } => {
|
||||||
write!(output, "Malformed init.meta.json: {} in path {}", inner, path.display())
|
write!(output, "Malformed init.meta.json: {} in path {}", inner, path.display())
|
||||||
},
|
},
|
||||||
SnapshotError::InvalidMetadataField { field_name, path } => {
|
SnapshotError::InvalidMetadataModelField { field_name, path } => {
|
||||||
writeln!(output, "The field '{}' cannot be specified on .meta.json files attached to models.", field_name)?;
|
writeln!(output, "The field '{}' cannot be specified on .meta.json files attached to models.", field_name)?;
|
||||||
writeln!(output, "Model path: {}", path.display())
|
writeln!(output, "Model path: {}", path.display())
|
||||||
},
|
},
|
||||||
|
SnapshotError::MetadataClassNameNonInit { path } => {
|
||||||
|
writeln!(output, "The field 'className' cannot be specified on .meta.json files besides init.meta.json")?;
|
||||||
|
writeln!(output, "Model path: {}", path.display())
|
||||||
|
},
|
||||||
SnapshotError::XmlModelDecodeError { inner, path } => {
|
SnapshotError::XmlModelDecodeError { inner, path } => {
|
||||||
write!(output, "Malformed rbxmx model: {} in path {}", inner, path.display())
|
write!(output, "Malformed rbxmx model: {} in path {}", inner, path.display())
|
||||||
},
|
},
|
||||||
@@ -423,16 +431,26 @@ impl ExtraMetadata {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn validate_for_non_init(&self, path: &Path) -> Result<(), SnapshotError> {
|
||||||
|
if self.class_name.is_some() {
|
||||||
|
return Err(SnapshotError::MetadataClassNameNonInit {
|
||||||
|
path: path.to_owned(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
fn validate_for_model(&self, path: &Path) -> Result<(), SnapshotError> {
|
fn validate_for_model(&self, path: &Path) -> Result<(), SnapshotError> {
|
||||||
if self.class_name.is_some() {
|
if self.class_name.is_some() {
|
||||||
return Err(SnapshotError::InvalidMetadataField {
|
return Err(SnapshotError::InvalidMetadataModelField {
|
||||||
field_name: "className".to_owned(),
|
field_name: "className".to_owned(),
|
||||||
path: path.to_owned(),
|
path: path.to_owned(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if !self.properties.is_empty() {
|
if !self.properties.is_empty() {
|
||||||
return Err(SnapshotError::InvalidMetadataField {
|
return Err(SnapshotError::InvalidMetadataModelField {
|
||||||
field_name: "properties".to_owned(),
|
field_name: "properties".to_owned(),
|
||||||
path: path.to_owned(),
|
path: path.to_owned(),
|
||||||
});
|
});
|
||||||
@@ -536,6 +554,7 @@ fn snapshot_lua_file<'source>(
|
|||||||
};
|
};
|
||||||
|
|
||||||
if let Some(meta) = ExtraMetadata::locate(&imfs, &file.path.with_file_name(instance_name))? {
|
if let Some(meta) = ExtraMetadata::locate(&imfs, &file.path.with_file_name(instance_name))? {
|
||||||
|
meta.validate_for_non_init(&file.path)?;
|
||||||
meta.apply(&mut snapshot)?;
|
meta.apply(&mut snapshot)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -582,6 +601,7 @@ fn snapshot_txt_file<'source>(
|
|||||||
};
|
};
|
||||||
|
|
||||||
if let Some(meta) = ExtraMetadata::locate(&imfs, &file.path)? {
|
if let Some(meta) = ExtraMetadata::locate(&imfs, &file.path)? {
|
||||||
|
meta.validate_for_non_init(&file.path)?;
|
||||||
meta.apply(&mut snapshot)?;
|
meta.apply(&mut snapshot)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -694,6 +714,7 @@ fn snapshot_csv_file<'source>(
|
|||||||
};
|
};
|
||||||
|
|
||||||
if let Some(meta) = ExtraMetadata::locate(&imfs, &file.path)? {
|
if let Some(meta) = ExtraMetadata::locate(&imfs, &file.path)? {
|
||||||
|
meta.validate_for_non_init(&file.path)?;
|
||||||
meta.apply(&mut snapshot)?;
|
meta.apply(&mut snapshot)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user