#!/bin/bash INSTALL_LOGS="/var/log/sorcery/install" DATE=$(date +%Y%m%d) STATE=installed STATE_FILE=/var/log/packages.restore SPELLS_FILE=/var/log/spells.restore IGNORED_DIRS="/var /root /home /etc /tmp /dev" rm -f $SPELLS_FILE touch $SPELLS_FILE echo "Generating initial spell list" for ss in $(ls -1 /var/lib/sorcery/codex/); do echo "Parsing ${ss}/codex.index" for sss in $(cat /var/lib/sorcery/codex/${ss}/codex.index | awk '{ print $1 }'); do echo $sss >> $SPELLS_FILE done done echo "Done with inital spell list" function check_install_log() { local i echo -n "-" for i in $(cat ${INSTALL_LOGS}/${1}) do if ! grep -q "/var" <<< "$i" || ! grep -q "/root" <<< "$i" || ! grep -q "/home" <<< "$i" || ! grep -q "/etc" <<< "$i" || ! grep -q "/tmp" <<< "$i" || ! grep -q "/dev" <<< "$i" then if [[ -e "${i}" ]] then echo -e -n "\n${i}\n" echo -n "-" return 0 fi fi done echo -n "-" return 1 } function mark_possible_spell() { local i local version echo -n "." for i in $(cat $SPELLS_FILE) do if grep -q "$i" <<< "$1" then version="$(gaze -q version "$i" | tail -n2 | awk -F"|" '{ print $4 }')" if [[ -e ${INSTALL_LOGS}/${i}-${VERSION} ]] then echo -n -e "\n${i}:${DATE}:${STATE}:${version}\n" echo "${i}:${DATE}:${STATE}:${version}" > ${STATE_FILE} echo -n "*" fi fi done echo -n "." } function main() { local i local c ca=$(ls -1 *|wc -l) c=0 c1=0 cd ${INSTALL_LOGS} for i in $(ls -1 *) do echo -n "+" if check_install_log ${i} then mark_possible_spell ${i} let c1=$c1+1 echo -n -e "\n$c1\n" fi echo -n "+" let c=$c+1 echo -n -e "\n$c/$ca\n" done echo -n "***" } main