xref: /DragonOS/user/apps/user-manage/src/cmd/userdel.rs (revision 03746da3d9f3ea616cecdb6e581414002075f866)
1*03746da3SJomo use crate::{
2*03746da3SJomo     check::check::UDelCheck,
3*03746da3SJomo     error::error::{ErrorHandler, ExitStatus},
4*03746da3SJomo     executor::executor::UDelExecutor,
5*03746da3SJomo     parser::parser::UserParser,
6*03746da3SJomo };
7*03746da3SJomo use libc::geteuid;
8*03746da3SJomo use std::process::exit;
9*03746da3SJomo 
10*03746da3SJomo #[path = "../check/mod.rs"]
11*03746da3SJomo mod check;
12*03746da3SJomo #[path = "../error/mod.rs"]
13*03746da3SJomo mod error;
14*03746da3SJomo #[path = "../executor/mod.rs"]
15*03746da3SJomo mod executor;
16*03746da3SJomo #[path = "../parser/mod.rs"]
17*03746da3SJomo mod parser;
18*03746da3SJomo 
19*03746da3SJomo #[allow(dead_code)]
main()20*03746da3SJomo fn main() {
21*03746da3SJomo     let args = std::env::args().collect::<Vec<_>>();
22*03746da3SJomo 
23*03746da3SJomo     if unsafe { geteuid() } != 0 {
24*03746da3SJomo         ErrorHandler::error_handle(
25*03746da3SJomo             "permission denied (are you root?)".to_string(),
26*03746da3SJomo             ExitStatus::PermissionDenied,
27*03746da3SJomo         )
28*03746da3SJomo     }
29*03746da3SJomo 
30*03746da3SJomo     if args.len() < 2 {
31*03746da3SJomo         ErrorHandler::error_handle(
32*03746da3SJomo             format!("usage: {} [options] username", args[0]),
33*03746da3SJomo             ExitStatus::InvalidCmdSyntax,
34*03746da3SJomo         );
35*03746da3SJomo     }
36*03746da3SJomo 
37*03746da3SJomo     let cmd = UserParser::parse(args);
38*03746da3SJomo     let info = UDelCheck::check(cmd);
39*03746da3SJomo     let username = info.username.clone();
40*03746da3SJomo     UDelExecutor::execute(info);
41*03746da3SJomo     println!("Delete user[{}] successfully!", username);
42*03746da3SJomo 
43*03746da3SJomo     exit(ExitStatus::Success as i32);
44*03746da3SJomo }
45