podman_client/containers/
commit.rs

1use http_body_util::Empty;
2use hyper::body::Bytes;
3use url::form_urlencoded;
4
5use crate::{
6    client::Client,
7    models::{
8        connection::SendRequestOptions, lib::Error,
9        podman::containers::commit::ContainerCommitOptions,
10    },
11    utils::bool_to_str::bool_to_str,
12};
13
14impl Client {
15    pub async fn container_commit(&self, options: ContainerCommitOptions<'_>) -> Result<(), Error> {
16        let mut path = "/libpod/commit".to_owned();
17
18        let mut query = form_urlencoded::Serializer::new(String::new());
19        query.append_pair("container", options.container);
20        if let Some(author) = options.author {
21            query.append_pair("author", author);
22        }
23        if let Some(changes) = options.changes {
24            for change in changes {
25                query.append_pair("changes", change);
26            }
27        }
28        if let Some(comment) = options.comment {
29            query.append_pair("comment", comment);
30        }
31        if let Some(format) = options.format {
32            query.append_pair("format", format);
33        }
34        if let Some(pause) = options.pause {
35            query.append_pair("pause", bool_to_str(pause));
36        }
37        if let Some(repo) = options.repo {
38            query.append_pair("repo", repo);
39        }
40        if let Some(squash) = options.squash {
41            query.append_pair("squash", bool_to_str(squash));
42        }
43        if let Some(stream) = options.stream {
44            query.append_pair("stream", bool_to_str(stream));
45        }
46        if let Some(tag) = options.tag {
47            query.append_pair("tag", tag);
48        }
49        let query_string = query.finish();
50        if !query_string.is_empty() {
51            path += &["?", &query_string].concat();
52        }
53
54        let (_, data) = self
55            .send_request::<_, (), _>(SendRequestOptions {
56                method: "POST",
57                path: &path,
58                header: None,
59                body: Empty::<Bytes>::new(),
60            })
61            .await?;
62
63        Ok(data)
64    }
65}