winget_types/version/
mod.rs1use const_format::formatc;
2use serde::{Deserialize, Serialize};
3
4use crate::{
5 shared::{LanguageTag, ManifestType, ManifestVersion, PackageIdentifier, PackageVersion},
6 traits::Manifest,
7};
8
9#[derive(Serialize, Deserialize)]
10#[serde(rename_all = "PascalCase")]
11pub struct VersionManifest {
12 pub package_identifier: PackageIdentifier,
13 pub package_version: PackageVersion,
14 pub default_locale: LanguageTag,
15 pub manifest_type: ManifestType,
16 #[serde(default)]
17 pub manifest_version: ManifestVersion,
18}
19
20impl VersionManifest {
21 pub fn update(&mut self, package_version: &PackageVersion) {
22 self.package_version.clone_from(package_version);
23 self.manifest_type = ManifestType::Version;
24 self.manifest_version = ManifestVersion::default();
25 }
26}
27
28impl Manifest for VersionManifest {
29 const SCHEMA: &'static str = formatc!(
30 "https://aka.ms/winget-manifest.version.{}.schema.json",
31 ManifestVersion::DEFAULT
32 );
33
34 const TYPE: ManifestType = ManifestType::Version;
35}
36
37impl Default for VersionManifest {
38 fn default() -> Self {
39 Self {
40 package_identifier: PackageIdentifier::default(),
41 package_version: PackageVersion::default(),
42 default_locale: LanguageTag::default(),
43 manifest_type: ManifestType::Version,
44 manifest_version: ManifestVersion::default(),
45 }
46 }
47}