载入中...
搜索中...
未找到
EvaManifest.cpp
浏览该文件的文档.
17 DiagnosticCode::ParseError, "asset reference must be a string", path, {}, "asset.eva.manifest"));
21 DiagnosticCode::ParseError, "asset reference is not canonical", path, {}, "asset.eva.manifest"));
31 DiagnosticCode::ParseError, "required manifest field must be a string", path, {}, "asset.eva.manifest"));
45 DiagnosticCode::ParseError, "schema version must be a positive integer", path, {}, "asset.eva.manifest"));
46 return Result<SchemaVersion>::success(SchemaVersion(static_cast<std::uint64_t>(value->asInt())));
52 DiagnosticCode::ParseError, "dependency kind must be a string", path, {}, "asset.eva.manifest"));
54 if (text == "runtime-required") return Result<EvaDependencyKind>::success(EvaDependencyKind::RuntimeRequired);
55 if (text == "runtime-optional") return Result<EvaDependencyKind>::success(EvaDependencyKind::RuntimeOptional);
60 return Result<EvaDependencyKind>::failure(Diagnostic::error(DiagnosticCode::Unsupported, "unknown dependency kind",
75 if (separator == std::string_view::npos || separator == 0 || separator + 1 == type.size()) return false;
88 DiagnosticCode::InvalidArgument, "runtime-optional dependency requires an explicit fallback policy",
100 DiagnosticCode::ParseError, "fallback requires a supported behavior and non-empty observableCode",
145 DiagnosticCode::Unsupported, "unsupported manifest schema", "$.schema", {}, "asset.eva.manifest"));
180 return Result<EvaManifest>::failure(Diagnostic::error(DiagnosticCode::ParseError, "assets must be an array",
192 return Result<EvaManifest>::failure(Diagnostic::error(DiagnosticCode::ParseError, "asset field is required",
198 return Result<EvaManifest>::failure(Diagnostic::error(DiagnosticCode::Conflict, "duplicate asset identity",
218 DiagnosticCode::ParseError, "tags must be an array", prefix + "tags", {}, "asset.eva.manifest"));
236 DiagnosticCode::ParseError, "dependencies must be an array", "$.dependencies", {}, "asset.eva.manifest"));
249 DiagnosticCode::ParseError, "dependency requires from, to and kind", prefix, {}, "asset.eva.manifest"));
281 Diagnostic::error(DiagnosticCode::ParseError, "expectedType must be a canonical type/version pair",
308 DiagnosticCode::ParseError, "provenance must be an object", "$.provenance", {}, "asset.eva.manifest"));
360 for (const auto& [name, reference] : manifest.entrypoints) entrypoints[name] = assetRefValue(reference);
Canonical manifest model for EVEngine Asset Archive (.eva) version 1.
static Result< AssetRef > parse(std::string_view text)
Parse an asset://<canonical UUID> reference.
Definition ResourceRef.cpp:20
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
Result< std::string > toJson() const
Serialize this value as deterministic compact JSON.
Definition Value.cpp:67
const std::string & asString() const
Return the string payload; the caller must have checked the kind.
Definition Value.cpp:87
static Result< Value > fromJson(std::string_view json)
Parse one strict JSON value into an owning Value.
Definition Value.cpp:57
const T * getIf() const noexcept
Return a typed pointer, or nullptr when the kind differs.
Definition Value.h:180
std::string format() const
Formats the ID in lower-case canonical UUID text.
Definition Identity.h:173
static std::optional< Id128 > parse(std::string_view text) noexcept
Parses canonical UUID text.
Definition Identity.h:151
Definition AssetCooker.cpp:17
std::string_view evaDependencyKindName(EvaDependencyKind kind) noexcept
Return the stable manifest spelling for a dependency role.
Definition EvaManifest.cpp:120
Result< EvaManifest > parseEvaManifest(std::string_view json)
Parse and validate canonical .eva manifest JSON.
Definition EvaManifest.cpp:132
@ Platform
@ RuntimeOptional
@ RuntimeRequired
Result< std::string > serializeEvaManifest(const EvaManifest &manifest)
Serialize a validated manifest as deterministic compact JSON.
Definition EvaManifest.cpp:321
std::variant< std::monostate, std::int64_t, double, std::string, bool > Value
Definition Database.h:26
@ InvalidArgument
@ UnknownVersion
@ Unsupported
@ ParseError
@ Conflict
detail::StrongUint64< detail::SchemaVersionTag > SchemaVersion
Persistent data-format version; not a runtime replacement generation.
Definition SchemaVersion.h:13
One directed dependency between stable asset identities.
Definition EvaManifest.h:44
std::vector< EvaDependency > dependencies
Definition EvaManifest.h:70
static constexpr std::string_view kSchema
Definition EvaManifest.h:63
std::map< std::string, AssetRef > entrypoints
Definition EvaManifest.h:71