mirror of
https://github.com/onionshare/onionshare.git
synced 2024-12-26 07:49:48 -05:00
53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
|
#!/usr/bin/env python3
|
||
|
import toml
|
||
|
import click
|
||
|
|
||
|
|
||
|
def format_version(dep, version):
|
||
|
if version == "*":
|
||
|
return dep
|
||
|
# If it's a dictionary, assume it's in the format {extras = ["socks"], version = "*"}
|
||
|
elif isinstance(version, dict) and "version" in version:
|
||
|
version = version["version"]
|
||
|
if version == "*":
|
||
|
return dep
|
||
|
elif version.startswith("^"):
|
||
|
return f"{dep}>={version[1:]}.0"
|
||
|
elif version.startswith((">=", "<=", "!=", "==", "<", ">")):
|
||
|
return f"{dep}{version}"
|
||
|
else:
|
||
|
return f"{dep}=={version}"
|
||
|
elif version.startswith("^"):
|
||
|
return f"{dep}>={version[1:]}.0"
|
||
|
elif version.startswith((">=", "<=", "!=", "==", "<", ">")):
|
||
|
return f"{dep}{version}"
|
||
|
else:
|
||
|
return f"{dep}=={version}"
|
||
|
|
||
|
|
||
|
@click.command()
|
||
|
@click.argument("pyproject_filename")
|
||
|
def poetry_to_requirements(pyproject_filename):
|
||
|
"""Convert poetry dependencies in a pyproject.toml to requirements format."""
|
||
|
with open(pyproject_filename, "r") as f:
|
||
|
data = toml.load(f)
|
||
|
|
||
|
dependencies = data.get("tool", {}).get("poetry", {}).get("dependencies", {})
|
||
|
|
||
|
requirements = []
|
||
|
|
||
|
for dep, version in dependencies.items():
|
||
|
if dep == "python" or dep == "onionshare_cli":
|
||
|
continue
|
||
|
|
||
|
formatted = format_version(dep, version)
|
||
|
if formatted:
|
||
|
requirements.append(formatted)
|
||
|
|
||
|
for req in requirements:
|
||
|
print(req)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
poetry_to_requirements()
|