| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- //! 姓名牌命令行入口(开发期对照用;镜像 Python CLI 参数)。
- //! cargo run -p toolbox-core --example nameplate_cli -- <名单.xlsx> [--班级 X] [--座右铭 M] [--模板 T] [--sheet S] [--输出目录 D] [--保留模板]
- use std::path::PathBuf;
- use toolbox_core::nameplate::{run_nameplate, NameplateInput, DEFAULT_MOTTO};
- fn main() {
- let args: Vec<String> = std::env::args().collect();
- if args.len() < 2 {
- eprintln!("用法: nameplate_cli <名单.xlsx> [--班级 X] [--座右铭 M] [--模板 T] [--sheet S] [--输出目录 D] [--保留模板]");
- std::process::exit(2);
- }
- let roster = PathBuf::from(&args[1]);
- let mut class_override: Option<String> = None;
- let mut motto: String = DEFAULT_MOTTO.to_string();
- let mut template: Option<PathBuf> = None;
- let mut sheet: Option<String> = None;
- let mut out_dir: Option<PathBuf> = None;
- let mut keep_template = false;
- let mut i = 2;
- while i < args.len() {
- match args[i].as_str() {
- "--班级" => {
- i += 1;
- class_override = Some(args[i].clone());
- }
- "--座右铭" => {
- i += 1;
- motto = args[i].clone();
- }
- "--模板" => {
- i += 1;
- template = Some(PathBuf::from(&args[i]));
- }
- "--sheet" => {
- i += 1;
- sheet = Some(args[i].clone());
- }
- "--输出目录" => {
- i += 1;
- out_dir = Some(PathBuf::from(&args[i]));
- }
- "--保留模板" => keep_template = true,
- _ => {
- eprintln!("未知参数: {}", args[i]);
- std::process::exit(2);
- }
- }
- i += 1;
- }
- let inp = NameplateInput {
- roster_path: roster,
- class_override,
- motto,
- template,
- auto_dirs: vec![std::env::current_dir().unwrap_or_default()],
- sheet,
- out_dir: out_dir.unwrap_or_else(|| {
- std::env::current_dir().unwrap_or_else(|_| PathBuf::from("."))
- }),
- keep_template,
- };
- match run_nameplate(&inp) {
- Ok(res) => {
- for l in &res.log {
- println!("{}", l);
- }
- }
- Err(e) => {
- eprintln!("{}", e);
- std::process::exit(1);
- }
- }
- }
|