summary refs log tree commit diff
path: root/pkgs/development/tools/poetry2nix/poetry2nix/bin/poetry2nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools/poetry2nix/poetry2nix/bin/poetry2nix')
-rwxr-xr-xpkgs/development/tools/poetry2nix/poetry2nix/bin/poetry2nix157
1 files changed, 0 insertions, 157 deletions
diff --git a/pkgs/development/tools/poetry2nix/poetry2nix/bin/poetry2nix b/pkgs/development/tools/poetry2nix/poetry2nix/bin/poetry2nix
deleted file mode 100755
index 559025f3ec4..00000000000
--- a/pkgs/development/tools/poetry2nix/poetry2nix/bin/poetry2nix
+++ /dev/null
@@ -1,157 +0,0 @@
-#!/usr/bin/env python
-from concurrent.futures import ThreadPoolExecutor
-import subprocess
-import textwrap
-import argparse
-import toml
-import json
-import sys
-
-from typing import Dict, Any, Tuple, List
-
-
-class Package:
-    def __init__(self, attrs: Dict[str, Any]) -> None:
-        self.attrs = attrs
-        self.name = attrs["name"]
-        self.source = self.attrs["source"]
-
-    def fetch(self) -> Tuple["Package", subprocess.CompletedProcess]:
-        raise NotImplementedError()
-
-    def expression(self, output: str) -> str:
-        raise NotImplementedError()
-
-
-class UrlPackage(Package):
-    def fetch(self) -> Tuple[Package, subprocess.CompletedProcess]:
-        return (
-            self,
-            subprocess.run(
-                [
-                    "nix-prefetch-url",
-                    "--unpack",
-                    self.source["url"],
-                ],
-                stdout=subprocess.PIPE,
-                stderr=subprocess.PIPE,
-                text=True
-            ),
-        )
-
-    def expression(self, output: str) -> str:
-        sha256 = output.rstrip()
-        return textwrap.dedent("""
-            %s = super.%s.overridePythonAttrs (
-              _: {
-                src = pkgs.fetchzip {
-                  url = "%s";
-                  sha256 = "%s";
-                };
-              }
-            );""" % (self.name, self.name, self.source["url"], sha256))
-
-
-class GitPackage(Package):
-    def fetch(self) -> Tuple[Package, subprocess.CompletedProcess]:
-        reference = self.source.get("resolved_reference", self.source["reference"])
-
-        return (
-            self,
-            subprocess.run(
-                [
-                    "nix-prefetch-git",
-                    "--fetch-submodules",
-                    "--url",
-                    self.source["url"],
-                    "--rev",
-                    reference,
-                ],
-                stdout=subprocess.PIPE,
-                stderr=subprocess.PIPE,
-                text=True
-            ),
-        )
-
-    def expression(self, output: str) -> str:
-        meta = json.loads(output)
-        return textwrap.dedent("""
-            %s = super.%s.overridePythonAttrs (
-              _: {
-                src = pkgs.fetchgit {
-                  url = "%s";
-                  rev = "%s";
-                  sha256 = "%s";
-                };
-              }
-            );""" % (self.name, self.name, meta["url"], meta["rev"], meta["sha256"]))
-
-
-def parse_args() -> argparse.Namespace:
-    argparser = argparse.ArgumentParser(description="Poetry2nix CLI")
-
-    subparsers = argparser.add_subparsers(dest="subcommand")
-    subparsers.required = True
-
-    parser_lock = subparsers.add_parser("lock", help="Generate overrides for git hashes",)
-    parser_lock.add_argument(
-        "--lock", default="poetry.lock", help="Path to input poetry.lock",
-    )
-    parser_lock.add_argument(
-        "--out", default="poetry-git-overlay.nix", help="Output file",
-    )
-    return argparser.parse_args()
-
-
-def indent(expr: str, spaces: int = 2) -> str:
-    i = " " * spaces
-    return "\n".join([(i if l != "" else "") + l for l in expr.split("\n")])
-
-
-def main() -> None:
-    args = parse_args()
-
-    with open(args.lock) as lockf:
-        lock = toml.load(lockf)
-
-    pkgs: List[Package] = []
-    for pkg in lock["package"]:
-        if "source" in pkg:
-            source_type = pkg["source"]["type"]
-            if source_type == "git":
-                pkgs.append(GitPackage(pkg))
-            elif source_type == "url":
-                pkgs.append(UrlPackage(pkg))
-
-    with ThreadPoolExecutor() as e:
-        futures = []
-
-        for pkg in pkgs:
-            futures.append(e.submit(pkg.fetch))
-
-        lines = [
-            "{ pkgs }:",
-            "self: super: {",
-        ]
-
-        for f in futures:
-            package, p = f.result()
-            if p.returncode != 0:
-                sys.stderr.write(p.stderr)
-                sys.stderr.flush()
-                exit(p.returncode)
-            expr = package.expression(p.stdout)
-            lines.append(indent(expr))
-
-        lines.extend(["", "}", ""])
-
-        expr = "\n".join(lines)
-
-    with open(args.out, "w") as fout:
-        fout.write(expr)
-
-    print(f"Wrote {args.out}")
-
-
-if __name__ == "__main__":
-    main()