44
55from halo import Halo
66
7- from .checker import check_environment , get_installed_packages
7+ from .checker import check_environment , get_installed_packages , parse_requirements_file
88
99
1010def main ():
@@ -14,12 +14,29 @@ def main():
1414 )
1515 p .add_argument ("target" , help = "Target Python version (e.g. 3.13)" )
1616 p .add_argument ("--packages" , "-p" , nargs = "+" , help = "Specific packages to check" )
17+ p .add_argument (
18+ "--requirements" , "-r" , help = "Path to requirements.txt file to check"
19+ )
1720 p .add_argument ("--json" , action = "store_true" , help = "Emit json output" )
1821 args = p .parse_args ()
1922
23+ # Handle mutually exclusive options
24+ if args .packages and args .requirements :
25+ p .error ("Cannot specify both --packages and --requirements" )
26+
27+ # Parse requirements file if provided
28+ packages_to_check = None
29+ if args .requirements :
30+ try :
31+ packages_to_check = parse_requirements_file (args .requirements )
32+ except FileNotFoundError as e :
33+ p .error (str (e ))
34+ elif args .packages :
35+ packages_to_check = args .packages
36+
2037 # Get package count for time estimation
21- if args . packages :
22- num_packages = len (args . packages )
38+ if packages_to_check :
39+ num_packages = len (packages_to_check )
2340 else :
2441 pkgs = get_installed_packages ()
2542 num_packages = len (pkgs )
@@ -43,7 +60,7 @@ def main():
4360 spinner .start ()
4461
4562 start_time = time .time ()
46- report = check_environment (args .target , args . packages )
63+ report = check_environment (args .target , packages_to_check )
4764 elapsed_time = time .time () - start_time
4865
4966 if spinner :
0 commit comments