podman_client/models/podman/system/
version.rs

1use core::fmt;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Deserialize, Serialize)]
6pub struct Version {
7    #[serde(rename = "Platform")]
8    pub platform: VersionPlatform,
9
10    #[serde(rename = "Components")]
11    pub components: Vec<VersionComponent>,
12
13    #[serde(rename = "Version")]
14    pub version: String,
15
16    #[serde(rename = "ApiVersion")]
17    pub api_version: String,
18
19    #[serde(rename = "MinAPIVersion")]
20    pub min_api_version: String,
21
22    #[serde(rename = "GitCommit")]
23    pub git_commit: String,
24
25    #[serde(rename = "GoVersion")]
26    pub go_version: String,
27
28    #[serde(rename = "Os")]
29    pub os: String,
30
31    #[serde(rename = "Arch")]
32    pub arch: String,
33
34    #[serde(rename = "KernelVersion")]
35    pub kernel_version: String,
36
37    #[serde(rename = "BuildTime")]
38    pub build_time: String,
39}
40
41impl fmt::Debug for Version {
42    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
43        let json = serde_json::to_string_pretty(self).map_err(|_| fmt::Error)?;
44        f.write_str(&json)
45    }
46}
47
48#[derive(Deserialize, Serialize)]
49#[serde(rename_all = "PascalCase")]
50pub struct VersionPlatform {
51    pub name: String,
52}
53
54#[derive(Deserialize, Serialize)]
55#[serde(rename_all = "PascalCase")]
56pub struct VersionComponent {
57    pub name: String,
58    pub version: String,
59    pub details: VersionComponentDetails,
60}
61
62#[derive(Deserialize, Serialize)]
63#[serde(untagged)]
64pub enum VersionComponentDetails {
65    PodmanEngine(VersionComponentDetailsPodmanEngine),
66    Else(VersionComponentDetailsElse),
67}
68
69#[derive(Deserialize, Serialize)]
70pub struct VersionComponentDetailsPodmanEngine {
71    #[serde(rename = "APIVersion")]
72    pub api_version: String,
73
74    #[serde(rename = "Arch")]
75    pub arch: String,
76
77    #[serde(rename = "BuildTime")]
78    pub build_time: String,
79
80    #[serde(rename = "Experimental")]
81    pub experimental: String,
82
83    #[serde(rename = "GitCommit")]
84    pub git_commit: String,
85
86    #[serde(rename = "GoVersion")]
87    pub go_version: String,
88
89    #[serde(rename = "KernelVersion")]
90    pub kernel_version: String,
91
92    #[serde(rename = "MinAPIVersion")]
93    pub min_api_version: String,
94
95    #[serde(rename = "Os")]
96    pub os: String,
97}
98
99#[derive(Deserialize, Serialize)]
100#[serde(rename_all = "PascalCase")]
101pub struct VersionComponentDetailsElse {
102    pub package: String,
103}