use std::path::PathBuf;
use std::{env, fs};

use anyhow::{Context, Result};
use clap::Parser;

/// 负责解析命令行参数
#[derive(Debug, Parser)]
// 这个宏定义命令行工具的信息，比如作者、版本和描述，用于帮助信息输出
#[command(author, version, about = "汇总文件或文件夹的元信息")]
pub struct Cli {
    /// 需要扫描的目标路径，默认当前工作目录
    pub path: Option<PathBuf>,
}

impl Cli {
    pub fn resolve_path(&self) -> Result<PathBuf> {
        let candidate = match &self.path {
            Some(p) => p.clone(),
            None => env::current_dir().context("无法获取当前工作目录")?,
        };

        fs::canonicalize(&candidate)
            .with_context(|| format!("无法解析路径: {}", candidate.display()))
    }
}
