FixingParticipantLinks
Jump to navigation
Jump to search
Unfortunately, links to bots' jar files became rotten. Sometimes the hosting website goes down, sometimes API is changed. Luckily we have archive. To fix a link to a workable one, just replace the bad link to the archived one. You can do it by hand for your favorite bot or you can run the script below
#!/bin/sh
# Check rumble page for bots with rotten links.
# If possible replace the bad link with the one pointing to archive
# http://robocode-archive.strangeautomata.com/robots/
archiveURL="http://robocode-archive.strangeautomata.com/robots"
archiveRegEx="robocode-archive.strangeautomata.com"
logFile="changes.log"
PARTICIPANTSURL="http://robowiki.net/wiki/RoboRumble/Participants?action=raw"
TAGbegin="<pre>"
TAGend="<\/pre>"
goodJarRegEx="\(Java archive data (JAR)\)\|\(Zip\)"
# mw extension stands for MediaWiki
wikiPageFileWeb=Participants.Web.mw
wikiPageFileFixed=Participants.Fixed.mw
function getParticipantsPage () {
curl --silent --max-time 10 "$1" > "$wikiPageFileWeb" || { echo "ERROR: cannot download participant Wiki Page at $1"; exit 1; }
}
function getBotsList () {
cat "$1" | sed -e 0,/$TAGbegin/d -e /"$TAGend"/,\$d
}
function getHeader () {
cat "$1" | sed -ne 0,/$TAGbegin/p
}
function getFooter () {
cat "$1" | sed -ne /$TAGend/,\$p
}
function isUrlValidJar () {
# url pointing to archive are assumed good
echo "$1" | grep -q -i "$archiveRegEx" && return 0
# we need about 100 bytes to see if URL is JAR
curl --silent --location --max-time 10 --range 0-100 "$1" \
| file --brief - | grep -q "$goodJarRegEx"
}
function makeArchiveURLforBotName () {
echo "$archiveURL"/"$1".jar|sed -e s'/ \+/_/g'
}
function fixParticipantsLinks () {
#reads stdin
inRobotsList=0
while read ln
do
botName=`echo "$ln" | cut -d , -f 1`
botURL=`echo "$ln" | cut -d , -f 2`
if (isUrlValidJar "$botURL")
then
#echo url is good
echo $ln
else
# echo url is rotten
# making archive url
# replacing white spaces with one underscore
newUrl=`makeArchiveURLforBotName "$botName"`
# checking that archive has this bot jar
if (isUrlValidJar "$newUrl")
then
echo $botName,$newUrl
echo "Replacing link for $botName with achieved one" >> "$logFile"
echo " old rotten link was" >> "$logFile"
echo " $botURL" >> "$logFile"
echo " new link is" >> "$logFile"
echo " $newUrl" >> "$logFile"
else
echo "Removing all records for $botName. The link is rotten and no archived Jar file" >> "$logFile"
echo " old record was" >> $logFile
echo " $ln" >> "$logFile"
fi
fi
done
}
getParticipantsPage "$PARTICIPANTSURL"
echo "=============================================" >> "$logFile"
date >> "$logFile"
echo "=============================================" >> "$logFile"
getHeader "$wikiPageFileWeb" > "$wikiPageFileFixed"
getBotsList "$wikiPageFileWeb" | fixParticipantsLinks >> "$wikiPageFileFixed"
getFooter "$wikiPageFileWeb" >> "$wikiPageFileFixed"
echo Ready to upload Wiki page with fixed links is in the file "$wikiPageFileFixed"
echo Below are the changes done to its originanl stored in "$wikiPageFileWeb"
diff -u "$wikiPageFileWeb" "$wikiPageFileFixed"