summary refs log tree commit diff
path: root/pkgs/games/ue4/generate-expr-from-cdn.sh
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/games/ue4/generate-expr-from-cdn.sh')
-rw-r--r--pkgs/games/ue4/generate-expr-from-cdn.sh37
1 files changed, 37 insertions, 0 deletions
diff --git a/pkgs/games/ue4/generate-expr-from-cdn.sh b/pkgs/games/ue4/generate-expr-from-cdn.sh
new file mode 100644
index 00000000000..91cab1ca32f
--- /dev/null
+++ b/pkgs/games/ue4/generate-expr-from-cdn.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+go() {
+    file="$1"
+
+    IFS=$'\n'
+    for pack in $(perl -n -e '/(<Pack .*\/>)/ && print "$1\n"' $file); do
+        remotepath=$(echo "$pack" | perl -n -e '/RemotePath="([^"]*)"/ && print $1')
+        hash=$(echo "$pack" | perl -n -e '/Hash="([^"]*)"/ && print $1')
+        url="http://cdn.unrealengine.com/dependencies/$remotepath/$hash"
+
+        until sha256=$(nix-prefetch-url $url --type sha256); do
+            true
+        done
+
+        cat <<EOF
+  "$hash" = fetchurl {
+    url = $url;
+    sha256 = "$sha256";
+  };
+EOF
+    done
+}
+
+
+cat <<EOF
+{ fetchurl }:
+
+{
+EOF
+
+go Engine/Build/Commit.gitdeps.xml
+go Engine/Build/Promoted.gitdeps.xml
+
+cat <<EOF
+}
+EOF