smbcloud_cli/project/
crud_delete.rs1use crate::token::get_smb_token;
2use crate::{
3 account::lib::is_logged_in,
4 cli::CommandResult,
5 ui::{fail_message, fail_symbol, succeed_message, succeed_symbol},
6};
7use anyhow::{anyhow, Result};
8use dialoguer::{theme::ColorfulTheme, Input};
9use smbcloud_network::environment::Environment;
10use smbcloud_networking_project::crud_project_delete::delete_project;
11use spinners::Spinner;
12
13pub async fn process_project_delete(env: Environment, id: String) -> Result<CommandResult> {
14 if !is_logged_in(env) {
15 return Err(anyhow!(fail_message("Please log in with `smb init`.")));
16 }
17
18 let confirmation = Input::<String>::with_theme(&ColorfulTheme::default())
19 .with_prompt("Are you sure you want to delete this project? (y/n)")
20 .interact()
21 .unwrap();
22
23 let spinner = Spinner::new(
24 spinners::Spinners::SimpleDotsScrolling,
25 succeed_message("Deleting project"),
26 );
27
28 if confirmation != "y" {
29 return Ok(CommandResult {
30 spinner,
31 symbol: succeed_symbol(),
32 msg: succeed_message("Cancelled."),
33 });
34 }
35 let access_token = get_smb_token(env).await?;
36 match delete_project(env, access_token, id).await {
37 Ok(_) => Ok(CommandResult {
38 spinner,
39 symbol: succeed_symbol(),
40 msg: succeed_message("Done. Project has been deleted."),
41 }),
42 Err(e) => Ok(CommandResult {
43 spinner,
44 symbol: fail_symbol(),
45 msg: fail_message(&e.to_string()),
46 }),
47 }
48}