groupmod.rs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. use crate::{
  2. check::check::GModCheck,
  3. error::error::{ErrorHandler, ExitStatus},
  4. executor::executor::GModExecutor,
  5. parser::parser::GroupParser,
  6. };
  7. use libc::geteuid;
  8. use std::process::exit;
  9. #[path = "../check/mod.rs"]
  10. mod check;
  11. #[path = "../error/mod.rs"]
  12. mod error;
  13. #[path = "../executor/mod.rs"]
  14. mod executor;
  15. #[path = "../parser/mod.rs"]
  16. mod parser;
  17. #[allow(dead_code)]
  18. fn main() {
  19. let args = std::env::args().collect::<Vec<_>>();
  20. if unsafe { geteuid() } != 0 {
  21. ErrorHandler::error_handle(
  22. "permission denied (are you root?)".to_string(),
  23. ExitStatus::PermissionDenied,
  24. )
  25. }
  26. if args.len() < 2 {
  27. ErrorHandler::error_handle(
  28. format!("usage: {} [options] groupname", args[0]),
  29. ExitStatus::InvalidCmdSyntax,
  30. );
  31. }
  32. let cmd = GroupParser::parse(args);
  33. if !cmd.options.is_empty() {
  34. let info = GModCheck::check(cmd);
  35. let groupname = info.groupname.clone();
  36. GModExecutor::execute(info);
  37. println!("Modify group [{}] successfully!", groupname);
  38. }
  39. exit(ExitStatus::Success as i32);
  40. }