diff --git a/examples/_d2n-indexer/flake.nix b/examples/_d2n-indexer/flake.nix index e7bd82a8..0679e559 100644 --- a/examples/_d2n-indexer/flake.nix +++ b/examples/_d2n-indexer/flake.nix @@ -13,6 +13,10 @@ number = 5; }; crates-io = {}; + crates-io-simple = { + sortBy = "name"; + maxPages = 1; + }; }; packageOverrides = { "^.*$".disable-build = { diff --git a/src/indexers/crates-io-simple/default.nix b/src/indexers/crates-io-simple/default.nix index 2f4e41fd..ac59a89f 100644 --- a/src/indexers/crates-io-simple/default.nix +++ b/src/indexers/crates-io-simple/default.nix @@ -4,10 +4,11 @@ coreutils, curl, jq, + python3, ... }: utils.writePureShellScript - [coreutils curl jq] + [coreutils curl jq python3] '' input=''${1:?"please provide an input as a JSON file"} @@ -19,9 +20,8 @@ maxPages=$(jq '.maxPages' -c -r $input) for currentPage in $(seq 1 $maxPages); do - jqQuery="$(jq '.' -c -r "$tmpFile") + (.crates | map(\"crates-io:\" + .name + \"\/\" + .max_stable_version))" url="https://crates.io/api/v1/crates?page=$currentPage&per_page=100&sort=$sortBy" - curl -k "$url" | jq "$jqQuery" -r > "$tmpFile" + curl -k "$url" | python3 ${./process-result.py} > "$tmpFile" done mv "$tmpFile" "$(realpath $outFile)" diff --git a/src/indexers/crates-io-simple/process-result.py b/src/indexers/crates-io-simple/process-result.py new file mode 100644 index 00000000..448b47c2 --- /dev/null +++ b/src/indexers/crates-io-simple/process-result.py @@ -0,0 +1,13 @@ +import json +import sys + +input = json.load(sys.stdin) +projects = [] +for package in input['crates']: + projects.append(dict( + id=f"{package['name']}-{package['max_stable_version']}", + name=package['name'], + version=package['max_stable_version'], + translator='crates-io', + )) +print(json.dumps(projects, indent=2))