36 lines
952 B
Python
36 lines
952 B
Python
import pathlib
|
|
import sys
|
|
|
|
from packaging import utils
|
|
|
|
|
|
def debug(msg: str):
|
|
print(f'::debug::{msg.title()}', file=sys.stderr)
|
|
|
|
|
|
def safe_parse_pkg_name(file_path: pathlib.Path) -> str | None:
|
|
if file_path.suffix == '.whl':
|
|
try:
|
|
return utils.parse_wheel_filename(file_path.name)[0]
|
|
except utils.InvalidWheelFilename:
|
|
debug(f'Invalid wheel filename: {file_path.name}')
|
|
return None
|
|
elif file_path.suffix == '.gz':
|
|
try:
|
|
return utils.parse_sdist_filename(file_path.name)[0]
|
|
except utils.InvalidSdistFilename:
|
|
debug(f'Invalid sdist filename: {file_path.name}')
|
|
return None
|
|
return None
|
|
|
|
|
|
packages_dir = pathlib.Path(sys.argv[1]).resolve()
|
|
|
|
pkg_names = {
|
|
pkg_name for file_path in packages_dir.iterdir() if
|
|
(pkg_name := safe_parse_pkg_name(file_path)) is not None
|
|
}
|
|
|
|
for package_name in sorted(pkg_names):
|
|
print(package_name)
|