mirror of
https://github.com/wassname/pip-package-list.git
synced 2026-09-10 12:36:52 +08:00
68 lines
1.6 KiB
Python
68 lines
1.6 KiB
Python
import argparse
|
|
import sys
|
|
|
|
from .entry import RequirementsEditableEntry
|
|
from .list_packages_from_files import list_packages_from_files
|
|
|
|
|
|
def main() -> int:
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument(
|
|
"--recurse-recursive",
|
|
default=False,
|
|
help="recurse into -r entries",
|
|
action="store_true",
|
|
)
|
|
parser.add_argument(
|
|
"--recurse-editable",
|
|
default=False,
|
|
help="recurse into -e entries",
|
|
action="store_true",
|
|
)
|
|
parser.add_argument(
|
|
"--dedupe",
|
|
default=False,
|
|
help="de-duplicate the resulting list",
|
|
action="store_true",
|
|
)
|
|
parser.add_argument(
|
|
"--remove-editable",
|
|
default=False,
|
|
help="remove editable requirements from the final list",
|
|
action="store_true",
|
|
)
|
|
parser.add_argument(
|
|
"file_paths",
|
|
nargs="+",
|
|
help="list of requirements.txt or setup.py files",
|
|
)
|
|
|
|
args = parser.parse_args()
|
|
|
|
reqs = list_packages_from_files(
|
|
args.file_paths,
|
|
recurse_recursive=args.recurse_recursive,
|
|
recurse_editable=args.recurse_editable,
|
|
)
|
|
|
|
if args.remove_editable:
|
|
reqs = [
|
|
requirement
|
|
for requirement in reqs
|
|
if not isinstance(requirement, RequirementsEditableEntry)
|
|
]
|
|
|
|
if args.dedupe:
|
|
deduped_reqs = list(set([str(requirement) for requirement in reqs]))
|
|
for requirement in deduped_reqs:
|
|
print(requirement)
|
|
else:
|
|
for requirement in reqs:
|
|
print(requirement)
|
|
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|