wasmer_cli/commands/app/regions/
list.rs

1use crate::{commands::AsyncCliCommand, config::WasmerEnv, opts::ListFormatOpts};
2use is_terminal::IsTerminal;
3
4/// List available Edge regions.
5#[derive(clap::Parser, Debug)]
6pub struct CmdAppRegionsList {
7    /* --- Common flags --- */
8    #[clap(flatten)]
9    pub env: WasmerEnv,
10
11    /// Don't print any message.
12    #[clap(long)]
13    pub quiet: bool,
14
15    /// Do not prompt for user input.
16    #[clap(long, default_value_t = !std::io::stdin().is_terminal())]
17    pub non_interactive: bool,
18
19    #[clap(flatten)]
20    pub fmt: ListFormatOpts,
21}
22
23#[async_trait::async_trait]
24impl AsyncCliCommand for CmdAppRegionsList {
25    type Output = ();
26
27    async fn run_async(self) -> Result<Self::Output, anyhow::Error> {
28        let client = self.env.client()?;
29        let regions = wasmer_backend_api::query::get_all_app_regions(&client).await?;
30
31        println!("{}", self.fmt.format.render(regions.as_slice()));
32
33        Ok(())
34    }
35}