Skip to main content

tauri_plugin_ota_self_update/
models.rs

1use std::{collections::HashMap, path::PathBuf};
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, Deserialize, Serialize)]
6#[serde(rename_all = "camelCase")]
7pub enum ActivationPolicy {
8  NextLaunch,
9  SoftReload,
10}
11
12impl Default for ActivationPolicy {
13  fn default() -> Self {
14    Self::NextLaunch
15  }
16}
17
18#[derive(Debug, Clone, Copy, Deserialize, Serialize)]
19#[serde(rename_all = "camelCase")]
20pub enum ActivationStatus {
21  PendingRestart,
22  AppliedNow,
23}
24
25#[derive(Debug, Clone, Deserialize, Serialize)]
26#[serde(rename_all = "camelCase")]
27pub struct ManifestFile {
28  pub signature: String,
29  #[serde(default)]
30  pub sha256: Option<String>,
31}
32
33#[derive(Debug, Clone, Deserialize, Serialize)]
34#[serde(rename_all = "camelCase")]
35pub struct UpdateManifest {
36  pub version: String,
37  #[serde(default)]
38  pub notes: String,
39  #[serde(default)]
40  pub pub_date: Option<String>,
41  pub signature: String,
42  pub archive_url: String,
43  pub archive_signature: String,
44  #[serde(default)]
45  pub files: HashMap<PathBuf, ManifestFile>,
46}
47
48#[derive(Debug, Clone, Deserialize, Serialize)]
49#[serde(rename_all = "camelCase")]
50pub struct UpdateInfo {
51  pub version: String,
52  pub notes: String,
53  #[serde(default)]
54  pub pub_date: Option<String>,
55}
56
57#[derive(Debug, Clone, Deserialize, Serialize)]
58#[serde(rename_all = "camelCase")]
59pub struct CheckResult {
60  pub available: bool,
61  #[serde(default)]
62  pub update: Option<UpdateInfo>,
63}
64
65#[derive(Debug, Clone, Deserialize, Serialize)]
66#[serde(rename_all = "camelCase")]
67pub struct ApplyResult {
68  pub status: ActivationStatus,
69  pub version: String,
70  pub activation_policy: ActivationPolicy,
71}
72
73#[derive(Debug, Clone, Deserialize, Serialize)]
74#[serde(rename_all = "camelCase")]
75pub struct CurrentVersion {
76  pub native_version: String,
77  #[serde(default)]
78  pub ota_version: Option<String>,
79  pub effective_version: String,
80  pub source: String,
81}