forked from rojo-rbx/rojo
* Stub implementation * Flesh out feature and add tests. Other snapshots currently failing. * Blacklist .meta.json in JSON handler * Write to correct property (Source) instead of Value * Update changelog
93 lines
2.3 KiB
Rust
93 lines
2.3 KiB
Rust
use std::{io, path::PathBuf};
|
|
|
|
use thiserror::Error;
|
|
|
|
#[derive(Debug, Error)]
|
|
pub enum SnapshotError {
|
|
#[error("file name had malformed Unicode")]
|
|
FileNameBadUnicode { path: PathBuf },
|
|
|
|
#[error("file had malformed Unicode contents at path {}", .path.display())]
|
|
FileContentsBadUnicode {
|
|
source: std::str::Utf8Error,
|
|
path: PathBuf,
|
|
},
|
|
|
|
#[error("malformed project file at path {}", .path.display())]
|
|
MalformedProject {
|
|
source: serde_json::Error,
|
|
path: PathBuf,
|
|
},
|
|
|
|
#[error("malformed .model.json file at path {}", .path.display())]
|
|
MalformedModelJson {
|
|
source: serde_json::Error,
|
|
path: PathBuf,
|
|
},
|
|
|
|
#[error("malformed .meta.json file at path {}", .path.display())]
|
|
MalformedMetaJson {
|
|
source: serde_json::Error,
|
|
path: PathBuf,
|
|
},
|
|
|
|
#[error("malformed JSON at path {}", .path.display())]
|
|
MalformedJson {
|
|
source: serde_json::Error,
|
|
path: PathBuf,
|
|
},
|
|
|
|
#[error(transparent)]
|
|
Io {
|
|
#[from]
|
|
source: io::Error,
|
|
},
|
|
}
|
|
|
|
impl SnapshotError {
|
|
pub(crate) fn file_name_bad_unicode(path: impl Into<PathBuf>) -> Self {
|
|
Self::FileNameBadUnicode { path: path.into() }
|
|
}
|
|
|
|
pub(crate) fn file_contents_bad_unicode(
|
|
source: std::str::Utf8Error,
|
|
path: impl Into<PathBuf>,
|
|
) -> Self {
|
|
Self::FileContentsBadUnicode {
|
|
source,
|
|
path: path.into(),
|
|
}
|
|
}
|
|
|
|
pub(crate) fn malformed_project(source: serde_json::Error, path: impl Into<PathBuf>) -> Self {
|
|
Self::MalformedProject {
|
|
source,
|
|
path: path.into(),
|
|
}
|
|
}
|
|
|
|
pub(crate) fn malformed_model_json(
|
|
source: serde_json::Error,
|
|
path: impl Into<PathBuf>,
|
|
) -> Self {
|
|
Self::MalformedModelJson {
|
|
source,
|
|
path: path.into(),
|
|
}
|
|
}
|
|
|
|
pub(crate) fn malformed_meta_json(source: serde_json::Error, path: impl Into<PathBuf>) -> Self {
|
|
Self::MalformedMetaJson {
|
|
source,
|
|
path: path.into(),
|
|
}
|
|
}
|
|
|
|
pub(crate) fn malformed_json(source: serde_json::Error, path: impl Into<PathBuf>) -> Self {
|
|
Self::MalformedJson {
|
|
source,
|
|
path: path.into(),
|
|
}
|
|
}
|
|
}
|