#! /bin/sh

PWD=`pwd`
MNT="/tmp/mnt"
RPM_LIST="/tmp/isorpmlist"
CHANGE_LIST="$PWD/changelist"
SYS_REL="/etc/cs2c-release"

usage()
{
cat << EOF
Usage:
    ${0##*/} -d [ISO_PATH] -g -h -l -r 
    -d : input a iso path,ouput the difference of rpm 
         between in the system and in the iso
    -g : generate a tar file,it contain rpmlist and system release infomation
    -h : print help infomation
    -l : list all rpms installed in system 
    -r : print system release infomation
EOF
}

diff()
{
    iso=$1
    [ -d $MNT ] || mkdir $MNT
    mount -oloop $1 $MNT || exit
    cd $MNT/Packages
    ls *.rpm > $RPM_LIST
    cd $CUR
    umount $MNT || exit 
    for rpm in `rpm -qa`
    do
        sed 's/.rpm$//' $RPM_LIST |grep "^$rpm$" >> /dev/null  || echo $rpm >> $CHANGE_LIST
    done
    rm -rf $MNT
    rm $RPM_LIST
}

relinfo()
{
    if [ -f $SYS_REL ]
    then
        cat $SYS_REL
    else
        echo "no system release infomation,$SYS_REL is not exist" 
    fi
}

if [ $# == 0 ]
then 
   usage
   exit 1
fi

dflag=0
gflag=0
lflag=0
rflag=0
while getopts "d:ghlr" arg
do
    case $arg in
        d)
            dflag=1
            ISO_PATH=$OPTARG
            ;;
        g)
            gflag=1
            ;;
        h)
            usage
            ;;
        l)
            lflag=1
            ;;
        r)
            rflag=1
            ;;
        ?)
            usage
            exit 1
            ;;
    esac
done

if [ $OPTIND == 1 ]
then
    echo "Parameter ERROR!"
    usage
    exit 1
fi

if [ $dflag == 1 ]
then
    diff $ISO_PATH
fi

if [ $gflag == 1 ]
then
    rpm -qa > rpmlist
    relinfo > relinfo
    tar -czvf sysinfo.tar.gz rpmlist relinfo
    rm -rf rpmlist relinfo
fi

if [ $lflag == 1 ]
then
    rpm -qa
fi

if [ $rflag == 1 ]
then
    relinfo
fi

