ali@0: #!/bin/sh ali@0: if [ $# -ne 2 ]; then ali@0: echo "Usage: sf2bz .xml .xml" >&2 ali@0: exit 1 ali@0: fi ali@0: input=$1 ali@0: output=$2 ali@0: topdir=/home/ali/wk/slashem/web.scripts ali@0: cd $topdir ali@0: cache_dir=$topdir/cache ali@0: tagsoup=tagsoup/tagsoup-1.0.1.jar ali@0: #tmpdir=`mktemp -d /tmp/XXXXXXXX` || exit 1 ali@0: tmpdir=/tmp/sf2bz; rm -rf $tmpdir; mkdir $tmpdir ali@0: mkdir -p $cache_dir/sf/artifacts ali@0: # Sourceforge's export is pretty good, but misses a few things. ali@0: # Deal with one of these (descriptions for attached files) here. ali@0: echo '' > $tmpdir/descriptions.xml ali@0: echo '' \ ali@0: >> $tmpdir/descriptions.xml ali@0: ./get_attached_files $input | cut -s "-d " -f 1,2 | sort -n | uniq | \ ali@0: while read atid aid; do ali@0: mkdir -p $cache_dir/sf/artifacts/$atid ali@0: if [ ! -r $cache_dir/sf/artifacts/$atid/$aid.html ]; then ali@0: wget -q -O $cache_dir/sf/artifacts/$atid/$aid.html \ ali@0: "http://sourceforge.net/tracker/index.php?func=detail&aid=$aid&group_id=9746&atid=$atid" ali@0: fi ali@0: mkdir -p $cache_dir/artifacts/$atid ali@0: if [ ! -r $cache_dir/artifacts/$atid/$aid.xhtml ]; then ali@0: java -jar $tagsoup $cache_dir/sf/artifacts/$atid/$aid.html \ ali@0: > $cache_dir/artifacts/$atid/$aid.xhtml ali@0: fi ali@0: echo "" >> $tmpdir/descriptions.xml ali@0: done ali@0: echo '' >> $tmpdir/descriptions.xml ali@0: xsltproc --xinclude attachment_descs.xsl $tmpdir/descriptions.xml \ ali@0: > $tmpdir/attachment-descriptions.xml ali@0: # Some details of attachments are included in the project export. ali@0: xsltproc attachment_details.xsl $input > $tmpdir/attachment-details.xml ali@0: # Then convert the attachments to XML (as required by bugzilla) ali@0: # pulling in the various bits of information we have gathered. ali@0: mkdir -p $cache_dir/sf/attachments $cache_dir/attachments ali@0: mkdir -p $tmpdir/jail ali@0: ./get_attached_files artifacts.xml | while read atid aid file_id; do ali@0: if [ ! -r $cache_dir/sf/attachments/$file_id ]; then ali@0: wget -N -O $cache_dir/sf/attachments/$file_id "http://sourceforge.net/tracker/download.php?group_id=9746&atid=$atid&file_id=$file_id&aid=$aid" ali@0: fi ali@0: if [ ! -r $cache_dir/attachments/$file_id.xml ]; then ali@0: type=`file -bi $cache_dir/sf/attachments/$file_id | sed 's/;.*//'` ali@0: case "$type" in ali@0: text/*) ali@0: (cd $tmpdir/jail; patch --dry-run -s -f \ ali@0: < $cache_dir/sf/attachments/$file_id > /dev/null 2>&1) ali@0: if [ $? -lt 2 ]; then ali@0: pflag="-p" ali@0: else ali@0: pflag="" ali@0: fi ali@0: ;; ali@0: *) ali@0: pflag="" ali@0: ;; ali@0: esac ali@0: ./xml_attached_file $pflag -i $file_id -t $type \ ali@0: $cache_dir/sf/attachments/$file_id > $tmpdir/$file_id.1.xml ali@0: xsltproc attachment_gather.xsl $tmpdir/$file_id.1.xml \ ali@0: > $tmpdir/$file_id.2.xml ali@0: xsltproc --xinclude attachment_post.xsl $tmpdir/$file_id.2.xml \ ali@0: > $cache_dir/attachments/$file_id.xml ali@0: fi ali@0: done ali@0: # We can't get hold of descriptions of deleted attachments, so we ali@0: # keep a copy of the file in case we need it. Ideally, we'd make sure ali@0: # that we only add descriptions, but that's for another day. ali@0: cp $tmpdir/attachment-descriptions.xml $topdir ali@0: xsltproc get_users.xsl $input > $tmpdir/raw_users.xml ali@0: echo '' \ ali@0: >> $tmpdir/users.1.xml ali@0: for file in $cache_dir/artifacts/*/*.xhtml; do ali@0: echo "" >> $tmpdir/users.1.xml ali@0: done ali@0: echo "" >> $tmpdir/users.1.xml ali@0: echo '' >> $tmpdir/users.1.xml ali@0: xsltproc --xinclude user_names.xsl $tmpdir/users.1.xml > $tmpdir/users.2.xml ali@0: mkdir -p $cache_dir/sf/users $cache_dir/users ali@0: echo '' \ ali@0: >> $tmpdir/users.3.xml ali@0: xsltproc unknown_users.xsl $tmpdir/users.2.xml | while read user; do ali@0: case $user in ali@0: *@users.sourceforge.net) ali@0: user_id=`echo $user | sed 's/@users.sourceforge.net$//'` ali@0: if [ ! -r $cache_dir/sf/users/$user_id.html ]; then ali@0: wget -N -O $cache_dir/sf/users/$user_id.html \ ali@0: "http://sourceforge.net/users/$user_id/" ali@0: fi ali@0: if [ ! -r $cache_dir/users/$user_id.xhtml ]; then ali@0: java -jar $tagsoup $cache_dir/sf/users/$user_id.html \ ali@0: > $cache_dir/users/$user_id.xhtml ali@0: fi ali@0: echo "" \ ali@0: >> $tmpdir/users.3.xml ali@0: esac ali@0: done ali@0: echo "" >> $tmpdir/users.3.xml ali@0: echo '' >> $tmpdir/users.3.xml ali@0: xsltproc --xinclude user_names.xsl $tmpdir/users.3.xml > users.xml ali@0: ln -s $cache_dir/attachments $tmpdir ali@0: xsltproc bugzilla.xsl $input > artifacts.tmp.xml ali@0: xsltproc --xinclude bugzilla_post.xsl artifacts.tmp.xml > $output ali@0: #rm -rf $tmpdir artifacts.tmp.xml