From fb1ef8683a1f25dc3fbca15d5ca5703deafe1894 Mon Sep 17 00:00:00 2001 From: bigeagle Date: Fri, 10 Jul 2015 20:40:32 +0800 Subject: [PATCH] hackage --- scripts/hackage.sh | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100755 scripts/hackage.sh diff --git a/scripts/hackage.sh b/scripts/hackage.sh new file mode 100755 index 0000000..b7ee68a --- /dev/null +++ b/scripts/hackage.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +function remove_broken() { + working_dir=$1 + cd $working_dir + mkdir -p package + filelist="/tmp/hackage_filelist_$$.txt" + brokenlist="/tmp/hackage_brokenlist_$$.txt" + ls > ${filelist} + touch $brokenlist + while read line; do echo $line ; tar -tzf $line >/dev/null || echo $line >>$brokenlist; done <$filelist + cat $brokenlist | xargs rm + + rm $brokenlist +} + +function hackage_mirror() { + working_dir=$1 + cd $working_dir + # echo "Cleaning up..." + # rm 00-index.tar.gz + mkdir -p package + echo "Downloading index..." + rm index.tar.gz + axel http://hdiff.luite.com/packages/archive/index.tar.gz -o index.tar.gz + for splitpk in `tar ztf index.tar.gz | cut -d/ -f 1,2 2>/dev/null`; do + pk=`echo $splitpk | sed 's|/|-|'` + name=$pk.tar.gz + if [[ ! -a package/$name ]]; then + axel http://hackage.haskell.org/package/$pk/$name -o package/$name + fi + done + rm package/preferred-versions.tar.gz + cp index.tar.gz 00-index.tar.gz +} + +remove_broken "${TUNASYNC_WORKING_DIR}/" +hackage_mirror "${TUNASYNC_WORKING_DIR}/"