Import some files from pbot-ng project and branding this project to hyperbot
This commit is contained in:
94
issue_tracker_change_detector
Executable file
94
issue_tracker_change_detector
Executable file
@@ -0,0 +1,94 @@
|
||||
#! /bin/bash
|
||||
|
||||
while true
|
||||
do
|
||||
source common_codez
|
||||
|
||||
log_file=bug_sums
|
||||
|
||||
temp_file=$( mktemp )
|
||||
|
||||
temp_changes=$( mktemp )
|
||||
|
||||
changes="/tmp/un-provoked-message-store"
|
||||
|
||||
for url in $( curl --compressed "https://issues.hyperbola.info/bugs/issue?@pagesize=99999" 2> /dev/null | grep -E 'href="issue[[:digit:]]+' | cut -d '"' -f 2 )
|
||||
do
|
||||
tfile="$( mktemp )"
|
||||
|
||||
try_count=1
|
||||
|
||||
# Get the URL and make sure it's not empty.
|
||||
until curl --compressed "https://issues.hyperbola.info/bugs/${url}" > "${tfile}" 2> /dev/null && (( $( wc -l "${tfile}" 2> /dev/null | cut -d ' ' -f 1 ) ))
|
||||
do
|
||||
# The time we sleep doubles each time up to a maximum of 512
|
||||
# seconds, before restarting the entire script.
|
||||
sleep "${try_count}"
|
||||
|
||||
if (( try_count < 512 ))
|
||||
then
|
||||
try_count=$(( try_count * 2 ))
|
||||
else
|
||||
continue 2
|
||||
fi
|
||||
done
|
||||
|
||||
echo "${url} $( md5sum < ${tfile} | cut -d ' ' -f 1 )" >> "${temp_file}"
|
||||
|
||||
rm "${tfile}"
|
||||
done
|
||||
|
||||
# Check that the log file is not empty as a sanity check. TODO record WHEN
|
||||
# it last checked the bug tracker for changes so we can also check if it was
|
||||
# too long ago.
|
||||
if (( $( wc -l "${log_file}" 2> /dev/null | cut -d ' ' -f 1 ) ))
|
||||
then
|
||||
cat "${temp_file}" |
|
||||
while read -r line
|
||||
do
|
||||
bug_number="${line%% *}"
|
||||
# If this bug is not in the log file then it must be new.
|
||||
if { ! grep "${bug_number}" "${log_file}" > /dev/null ; }
|
||||
then
|
||||
tdir="$( mktemp -d )"
|
||||
curl --compressed "https://issues.hyperbola.info/bugs/${bug_number}" 2> /dev/null | csplit -f "${tdir}/xx" - '%<title>%1'
|
||||
bug_title=$( head -1 ${tdir}/xx* | replace_wierd_html_chars )
|
||||
cat ${tdir}/xx* | csplit -f "${tdir}/gg" - '%<th class="required">Priority</th>%1'
|
||||
priority=$( head -1 ${tdir}/gg* )
|
||||
priority=${priority#*>}
|
||||
priority=${priority%<*}
|
||||
rm -r "${tdir}"
|
||||
echo "${bug_number} created: https://issues.hyperbola.info/bugs/${bug_number} (${bug_title% - Hyperbola\'s issue tracker} [${priority}])" >> "${temp_changes}"
|
||||
# It is in the log file so now we check if the entire line is there,
|
||||
# because if it's not then the md5sum must have changed.
|
||||
elif { ! grep "${line}" "${log_file}" > /dev/null ; }
|
||||
then
|
||||
tdir="$( mktemp -d )"
|
||||
curl --compressed "https://issues.hyperbola.info/bugs/${bug_number}" 2> /dev/null | csplit -f "${tdir}/xx" - '%<title>%1'
|
||||
bug_title=$( head -1 ${tdir}/xx* | replace_wierd_html_chars )
|
||||
cat ${tdir}/xx* | csplit -f "${tdir}/gg" - '%<th class="required">Priority</th>%1'
|
||||
priority=$( head -1 ${tdir}/gg* )
|
||||
priority=${priority#*>}
|
||||
priority=${priority%<*}
|
||||
rm -r "${tdir}"
|
||||
echo "${bug_number} changed: https://issues.hyperbola.info/bugs/${bug_number} (${bug_title% - Hyperbola\'s issue tracker} [${priority}])" >> "${temp_changes}"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if (( $( wc -l "${temp_changes}" 2> /dev/null | cut -d ' ' -f 1 ) > 12 ))
|
||||
then
|
||||
echo "More than 12 changes have been detected on the bug tracker. Ignoring." >> "${changes}"
|
||||
else
|
||||
while read line
|
||||
do
|
||||
echo "${line}" >> "${changes}"
|
||||
done < "${temp_changes}"
|
||||
fi
|
||||
|
||||
mv "${temp_file}" "${log_file}"
|
||||
|
||||
rm -f "${temp_changes}"
|
||||
|
||||
sleep 5m
|
||||
done
|
||||
Reference in New Issue
Block a user