about summary refs log tree commit diff
path: root/corepkgs/unpack-channel.sh
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2012-01-03T01·51+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2012-01-03T01·51+0000
commit39d45a6b090b5105423b22b8ef39c2a4a000a4a1 (patch)
tree945e102b1f482f8eb393fe1c597b8ea499b26bf3 /corepkgs/unpack-channel.sh
parentdadbb51d969517c1f2512015ab201dc99088d9a6 (diff)
* Add a test for nix-channel.
* Refactor the nix-channel unpacker a bit.

Diffstat (limited to 'corepkgs/unpack-channel.sh')
-rw-r--r--corepkgs/unpack-channel.sh30
1 files changed, 30 insertions, 0 deletions
diff --git a/corepkgs/unpack-channel.sh b/corepkgs/unpack-channel.sh
new file mode 100644
index 000000000000..7c244a6a8552
--- /dev/null
+++ b/corepkgs/unpack-channel.sh
@@ -0,0 +1,30 @@
+mkdir $out
+mkdir $out/tmp
+cd $out/tmp
+
+inputs=($inputs)
+for ((n = 0; n < ${#inputs[*]}; n += 2)); do
+    channelName=${inputs[n]}
+    channelTarball=${inputs[n+1]}
+    
+    echo "unpacking channel $channelName"
+    
+    $bzip2 -d < $channelTarball | $tar xf -
+
+    if test -e */channel-name; then
+        channelName="$(cat */channel-name)"
+    fi
+
+    nr=1
+    attrName=$(echo $channelName | $tr -- '- ' '__')
+    dirName=$attrName
+    while test -e ../$dirName; do
+        nr=$((nr+1))
+        dirName=$attrName-$nr
+    done
+
+    mv * ../$dirName # !!! hacky
+done
+
+cd ..
+rmdir tmp