mirror of
https://github.com/vale981/poetry2nix
synced 2025-03-04 08:41:42 -05:00
54 lines
1.3 KiB
Python
54 lines
1.3 KiB
Python
#!/usr/bin/env python
|
|
# Patch out special dependencies (git and path) from a pyproject.toml file
|
|
|
|
import argparse
|
|
import sys
|
|
|
|
import tomlkit
|
|
|
|
|
|
def main(input, output, fields_to_remove):
|
|
data = tomlkit.loads(input.read())
|
|
|
|
try:
|
|
deps = data["tool"]["poetry"]["dependencies"]
|
|
except KeyError:
|
|
pass
|
|
else:
|
|
for dep in deps.values():
|
|
if isinstance(dep, dict):
|
|
any_removed = False
|
|
for field in fields_to_remove:
|
|
any_removed |= dep.pop(field, None) is not None
|
|
if any_removed:
|
|
dep["version"] = "*"
|
|
dep.pop("develop", None)
|
|
|
|
output.write(tomlkit.dumps(data))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
p = argparse.ArgumentParser()
|
|
p.add_argument(
|
|
"-i",
|
|
"--input",
|
|
type=argparse.FileType("r"),
|
|
default=sys.stdin,
|
|
help="Location from which to read input TOML",
|
|
)
|
|
p.add_argument(
|
|
"-o",
|
|
"--output",
|
|
type=argparse.FileType("w"),
|
|
default=sys.stdout,
|
|
help="Location to write output TOML",
|
|
)
|
|
p.add_argument(
|
|
"-f",
|
|
"--fields-to-remove",
|
|
nargs="+",
|
|
help="The fields to remove from the dependency's TOML",
|
|
)
|
|
|
|
args = p.parse_args()
|
|
main(args.input, args.output, args.fields_to_remove)
|