1*03746da3SJomo use crate::{
2*03746da3SJomo check::check::GAddCheck,
3*03746da3SJomo error::error::{ErrorHandler, ExitStatus},
4*03746da3SJomo executor::executor::GAddExecutor,
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 let info = GAddCheck::check(cmd);
39*03746da3SJomo let groupname = info.groupname.clone();
40*03746da3SJomo GAddExecutor::execute(info);
41*03746da3SJomo
42*03746da3SJomo println!("Add group [{}] successfully!", groupname);
43*03746da3SJomo
44*03746da3SJomo exit(ExitStatus::Success as i32);
45*03746da3SJomo }
46