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