ad-user-creator/ad_user_creator/cli.py

37 lines
1.4 KiB
Python

from __future__ import annotations
import argparse
from pathlib import Path
def _validate_batch_input(value: str) -> str:
suffix = Path(value).suffix.lower()
if suffix not in {".csv", ".xlsx"}:
raise argparse.ArgumentTypeError("batch 输入文件仅支持 .csv 或 .xlsx")
return value
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(description="AD 用户自动化创建工具")
parser.add_argument("--config", default="config/config.yaml", help="yaml 配置文件路径")
subparsers = parser.add_subparsers(dest="command", required=True)
interactive_parser = subparsers.add_parser("interactive", help="交互式创建 AD 用户")
interactive_parser.add_argument("--dry-run", action="store_true", help="仅演练,不写入 LDAP")
batch_parser = subparsers.add_parser("batch", help="批量创建 AD 用户")
batch_parser.add_argument("--input", required=True, type=_validate_batch_input, help="输入文件(.csv/.xlsx)")
batch_parser.add_argument("--dry-run", action="store_true", help="仅演练,不写入 LDAP")
batch_parser.add_argument(
"--continue-on-error",
choices=["true", "false"],
default="true",
help="遇错是否继续处理后续行",
)
init_parser = subparsers.add_parser("init-state", help="初始化状态文件")
init_parser.add_argument("--dry-run", action="store_true", help="仅打印,不落盘")
return parser