32 lines
937 B
Nix
32 lines
937 B
Nix
{
|
|
lib,
|
|
fetchurl,
|
|
}:
|
|
with builtins;
|
|
{
|
|
project,
|
|
id,
|
|
filename,
|
|
...
|
|
} @ args: let
|
|
# I think this is supposed to be some weak automation
|
|
# protection. This split "id" is simply part of the download URL.
|
|
#
|
|
# Note that if it's zero-prefixed we need to remove the zeroes. It's
|
|
# really an odd one...
|
|
a = head (match "0*([[:digit:]]+)" (substring 0 4 (toString id)));
|
|
b = head (match "0*([[:digit:]]+)" (substring 4 7 (toString id)));
|
|
encoded-filename = replaceStrings [" "] ["%20"] filename;
|
|
|
|
url = "https://media.forgecdn.net/files/${a}/${b}/${encoded-filename}";
|
|
otherArgs = removeAttrs args ["project" "project_id" "id" "filename"];
|
|
in
|
|
fetchurl (otherArgs
|
|
// {
|
|
inherit url;
|
|
# Rename files to avoid names incompatible with the nix store
|
|
name = "${project}.jar";
|
|
# Avoid accidental URL globbing
|
|
curlOpts = "--globoff";
|
|
})
|