python_check_updates/
cli.rs

1use clap::Parser;
2use std::path::PathBuf;
3
4/// Check for outdated Python dependencies
5#[derive(Parser, Debug, Clone)]
6#[command(name = "python-check-updates")]
7#[command(author, version, about, long_about = None)]
8pub struct Args {
9    /// Path to project directory (defaults to current directory)
10    #[arg(value_name = "PATH", conflicts_with = "global")]
11    pub path: Option<PathBuf>,
12
13    /// Check globally installed packages (uv tools, pipx, pip --user)
14    #[arg(short, long)]
15    pub global: bool,
16
17    /// Apply updates to dependency files
18    #[arg(short, long)]
19    pub update: bool,
20
21    /// Upgrade pinned versions to latest minor (same major version)
22    #[arg(short, long)]
23    pub minor: bool,
24
25    /// Upgrade all dependencies to absolute latest (ignore version constraints)
26    #[arg(short, long)]
27    pub force_latest: bool,
28
29    /// Include pre-release versions
30    #[arg(short, long)]
31    pub pre_release: bool,
32}
33
34impl Args {
35    /// Get the project path, defaulting to current directory
36    pub fn project_path(&self) -> PathBuf {
37        self.path.clone().unwrap_or_else(|| PathBuf::from("."))
38    }
39}