wrap_manifest_schemas/
versions.rs

1use crate::error::Error;
2use crate::utils::sanitize_semver_version;
3use polywrap_schemafy::schemafy;
4use serde::{Deserialize, Serialize};
5/**
6 * This file was automatically generated by templates/versions.hbs.
7 * DO NOT MODIFY IT BY HAND. Instead, modify templates/versions.hbs,
8 * and run build script to regenerate this file.
9 */
10use serde_json::Value;
11
12schemafy!(
13  root: WrapManifest01
14  "schemas/0.1.json"
15);
16
17#[derive(Clone)]
18pub enum AnyManifest {
19    WrapManifest01(WrapManifest01),
20}
21
22impl AnyManifest {
23    pub fn version(&self) -> String {
24        match self {
25            AnyManifest::WrapManifest01(_) => sanitize_semver_version("0.1"),
26        }
27    }
28
29    pub fn from_json_value(value: Value) -> Result<Self, Error> {
30        match value["version"].as_str().unwrap() {
31            "0.1" => Ok(AnyManifest::WrapManifest01(serde_json::from_value(value)?)),
32            v => Err(Error::FromJSONError(format!(
33                "Invalid manifest version: {v}"
34            ))),
35        }
36    }
37
38    pub fn to_json_value(&self) -> Result<Value, Error> {
39        match self {
40            AnyManifest::WrapManifest01(manifest) => Ok(serde_json::to_value(manifest)?),
41        }
42    }
43
44    pub fn get_latest_version() -> String {
45        sanitize_semver_version("0.1")
46    }
47}
48
49pub type WrapManifest = WrapManifest01;
50pub type WrapManifestAbi = WrapManifest01Abi;