Unverified Commit cf0abbbc authored by Sandro Jäckel's avatar Sandro Jäckel Committed by GitHub
Browse files

Typst packages update 09/22/2025 (#445325)

parents 429b2d6b a71f0d5a
Loading
Loading
Loading
Loading
+25 −10
Original line number Diff line number Diff line
@@ -78,6 +78,13 @@ class TypstPackage:
            "nix-command",
        ]
        result = subprocess.run(cmd + [url], capture_output=True, text=True)
        # We currently rely on Typst Universe's github repository to
        # track package dependencies. However, there might be an
        # inconsistency between the registry and the repository. We
        # skip packages that cannot be fetched from the registry.
        if re.search(r"error: unable to download", result.stderr):
            return url, None
        else:
            hash = re.search(r"hash\s+\'(sha256-.{44})\'", result.stderr).groups()[0]
        return url, hash

@@ -86,10 +93,14 @@ class TypstPackage:

    def to_attrs(self):
        deps = set()
        excludes = list(map(
        excludes = list(
            map(
                lambda e: os.path.join(self.path, e),
            self.meta["package"]["exclude"] if "exclude" in self.meta["package"] else [],
        ))
                self.meta["package"]["exclude"]
                if "exclude" in self.meta["package"]
                else [],
            )
        )
        for root, _, files in os.walk(self.path):
            for file in filter(lambda f: f.split(".")[-1] == "typ", files):
                file_path = os.path.join(root, file)
@@ -110,6 +121,9 @@ class TypstPackage:
        )
        source_url, source_hash = self.source()

        if not source_hash:
            return None

        return dict(
            url=source_url,
            hash=source_hash,
@@ -152,11 +166,12 @@ def generate_typst_packages(preview_dir, output_file):
        def generate_package(pname, package_subtree):
            sorted_keys = sorted(package_subtree.keys(), key=Version, reverse=True)
            print(f"Generating metadata for {pname}")
            return {
                pname: OrderedDict(
                    (k, package_subtree[k].to_attrs()) for k in sorted_keys
            version_set = OrderedDict(
                (k, a)
                for k, a in [(k, package_subtree[k].to_attrs()) for k in sorted_keys]
                if a is not None
            )
            }
            return {pname: version_set} if len(version_set) > 0 else {}

        with concurrent.futures.ThreadPoolExecutor(max_workers=100) as executor:
            sorted_packages = sorted(package_tree.items(), key=lambda x: x[0])
+4954 −63

File changed.

Preview size limit exceeded, changes collapsed.