wasmer_cli/commands/app/deployments/
list.rs

1//! List volumes tied to an edge app.
2
3use super::super::util::AppIdentOpts;
4use crate::{commands::AsyncCliCommand, config::WasmerEnv, opts::ListFormatOpts};
5
6/// List the volumes of an app.
7#[derive(clap::Parser, Debug)]
8pub struct CmdAppDeploymentList {
9    #[clap(flatten)]
10    fmt: ListFormatOpts,
11
12    #[clap(flatten)]
13    env: WasmerEnv,
14
15    #[clap(flatten)]
16    ident: AppIdentOpts,
17
18    #[clap(long)]
19    offset: Option<u32>,
20
21    #[clap(long)]
22    limit: Option<u32>,
23}
24
25#[async_trait::async_trait]
26impl AsyncCliCommand for CmdAppDeploymentList {
27    type Output = ();
28
29    async fn run_async(self) -> Result<(), anyhow::Error> {
30        let client = self.env.client()?;
31
32        let (_ident, app) = self.ident.load_app(&client).await?;
33        let vars = wasmer_backend_api::types::GetAppDeploymentsVariables {
34            after: None,
35            first: self.limit.map(|x| x as i32),
36            name: app.name.clone(),
37            offset: self.offset.map(|x| x as i32),
38            owner: app.owner.global_name,
39        };
40        let items = wasmer_backend_api::query::app_deployments(&client, vars).await?;
41
42        if items.is_empty() {
43            eprintln!("App {} has no deployments!", app.name);
44        } else {
45            println!("{}", self.fmt.format.render(&items));
46        }
47
48        Ok(())
49    }
50}