xref: /DragonOS/user/apps/user-manage/src/cmd/groupmod.rs (revision 03746da3d9f3ea616cecdb6e581414002075f866)
1*03746da3SJomo use crate::{
2*03746da3SJomo     check::check::GModCheck,
3*03746da3SJomo     error::error::{ErrorHandler, ExitStatus},
4*03746da3SJomo     executor::executor::GModExecutor,
5*03746da3SJomo     parser::parser::GroupParser,
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] groupname", args[0]),
33*03746da3SJomo             ExitStatus::InvalidCmdSyntax,
34*03746da3SJomo         );
35*03746da3SJomo     }
36*03746da3SJomo 
37*03746da3SJomo     let cmd = GroupParser::parse(args);
38*03746da3SJomo     if !cmd.options.is_empty() {
39*03746da3SJomo         let info = GModCheck::check(cmd);
40*03746da3SJomo         let groupname = info.groupname.clone();
41*03746da3SJomo         GModExecutor::execute(info);
42*03746da3SJomo         println!("Modify group [{}]  successfully!", groupname);
43*03746da3SJomo     }
44*03746da3SJomo 
45*03746da3SJomo     exit(ExitStatus::Success as i32);
46*03746da3SJomo }
47