2 files changed
+47
-34
crates/cli/src/project/crud_delete.rs
new
+41
@@ -0,0 +1,41 @@
1
+use crate::{
2
+ cli::CommandResult,
3
+ ui::{fail_message, fail_symbol, succeed_message, succeed_symbol},
4
+};
5
+use anyhow::Result;
6
+use dialoguer::{theme::ColorfulTheme, Input};
7
+use smbcloud_networking::environment::Environment;
8
+use smbcloud_networking_project::delete_project;
9
+use spinners::Spinner;
10
+
11
+pub async fn process_project_delete(env: Environment, id: String) -> Result<CommandResult> {
12
+ let confirmation = Input::<String>::with_theme(&ColorfulTheme::default())
13
+ .with_prompt("Are you sure you want to delete this project? (y/n)")
14
+ .interact()
15
+ .unwrap();
16
+
17
+ let spinner = Spinner::new(
18
+ spinners::Spinners::SimpleDotsScrolling,
19
+ succeed_message("Deleting project"),
20
+ );
21
+
22
+ if confirmation != "y" {
23
+ return Ok(CommandResult {
24
+ spinner,
25
+ symbol: succeed_symbol(),
26
+ msg: succeed_message("Cancelled."),
27
+ });
28
+ }
29
+ match delete_project(env, id).await {
30
+ Ok(_) => Ok(CommandResult {
31
+ spinner,
32
+ symbol: succeed_symbol(),
33
+ msg: succeed_message("Done. Project has been deleted."),
34
+ }),
35
+ Err(e) => Ok(CommandResult {
36
+ spinner,
37
+ symbol: fail_symbol(),
38
+ msg: fail_message(&e.to_string()),
39
+ }),
40
+ }
41
+}
crates/cli/src/project/mod.rs
+6
-34
@@ -1,19 +1,21 @@
1
pub mod cli;
2
pub mod crud_create;
3
+pub mod crud_delete;
4
pub mod crud_read;
5
6
use self::cli::Commands;
7
use crate::{
8
cli::CommandResult,
8
- project::{crud_create::process_project_init, crud_read::process_project_list},
9
+ project::crud_create::process_project_init,
10
+ project::crud_delete::process_project_delete,
11
+ project::crud_read::process_project_list,
12
ui::{fail_message, fail_symbol, succeed_message, succeed_symbol},
13
};
14
use anyhow::{anyhow, Result};
12
-use dialoguer::{theme::ColorfulTheme, Input};
15
use log::debug;
16
use smbcloud_model::project::{Config, Project};
17
use smbcloud_networking::environment::Environment;
16
-use smbcloud_networking_project::{delete_project, get_project};
18
+use smbcloud_networking_project::get_project;
19
use spinners::Spinner;
20
use std::{fs::OpenOptions, io::Write};
21
use tabled::{Table, Tabled};
@@ -36,6 +38,7 @@ pub async fn process_project(env: Environment, commands: Commands) -> Result<Com
38
match commands {
39
Commands::New {} => process_project_init(env).await,
40
Commands::List {} => process_project_list(env).await,
41
+ Commands::Delete { id } => process_project_delete(env, id).await,
42
Commands::Show { id } => {
43
let mut spinner = Spinner::new(
44
spinners::Spinners::SimpleDotsScrolling,
@@ -62,37 +65,6 @@ pub async fn process_project(env: Environment, commands: Commands) -> Result<Com
65
}
66
}
67
}
65
- Commands::Delete { id } => {
66
- let confirmation = Input::<String>::with_theme(&ColorfulTheme::default())
67
- .with_prompt("Are you sure? (y/n)")
68
- .interact()
69
- .unwrap();
70
-
71
- let spinner = Spinner::new(
72
- spinners::Spinners::SimpleDotsScrolling,
73
- succeed_message("Deleting project"),
74
- );
75
-
76
- if confirmation != "y" {
77
- return Ok(CommandResult {
78
- spinner,
79
- symbol: succeed_symbol(),
80
- msg: succeed_message("Cancelled."),
81
- });
82
- }
83
- match delete_project(env, id).await {
84
- Ok(_) => Ok(CommandResult {
85
- spinner,
86
- symbol: succeed_symbol(),
87
- msg: succeed_message("Done. Project has been deleted."),
88
- }),
89
- Err(e) => Ok(CommandResult {
90
- spinner,
91
- symbol: fail_symbol(),
92
- msg: fail_message(&e.to_string()),
93
- }),
94
- }
95
- }
68
Commands::Use { id } => {
69
let project = get_project(env, id).await?;
70