#!/bin/bash
#
# $Id$
#
# script to merge custom code into updated mib2c code
#
#----- example .mib2c-updaterc -----
#UPDATE_OID=ipAddressTable
#UPDATE_CONF=mib2c.mfd.conf
#UPDATE_MIB2C_OPTS=
#UPDATE_NOPROBE=1
#----- example .mib2c-updaterc -----

#----------------------------------------------------------------------
#
# defaults
#
UPDATE_CURR=$PWD
UPDATE_ORIG=$PWD/.orig
UPDATE_NEW=$PWD/.new
UPDATE_MERGED=$PWD/.merged
UPDATE_BACKUP=$PWD/.backup
UPDATE_PATCH=$PWD/.patch

#
# number of diff context lines / patch fuzz factor
#
FUZZ=5
FIRST_RUN=0

#----------------------------------------------------------------------
#
debug()
{
    if [ $UPDATE_DEBUG -ge 1 ]; then
        echo $1
    fi
}

error()
{
    echo "ERROR: $@" > /dev/stderr
}

die()
{
    error "$@"
    exit 99
}

safecd()
{
    cd $1
    if [ $? -ne 0 ]; then
        die "changing to directory $1 from $PWD failed!"
    fi
}

safecp()
{
    cp $@
    if [ $? -ne 0 ]; then
        die "'cp $@' failed!"
    fi
}

#----------------------------------------------------------------------
#
check_setup()
{
    rc=1
    for d in $UPDATE_CURR $UPDATE_ORIG $UPDATE_NEW $UPDATE_MERGED $UPDATE_PATCH $UPDATE_BACKUP $UPDATE_BACKUP/curr $UPDATE_BACKUP/orig
    do
        if [ ! -d $d ]; then
            echo "Creating missing directory $d"
            mkdir -p $d
            if [ $? -ne 0 ]; then
                error "Could not create directory $d"
                rc=0
            fi
        fi
    done

    if [ -z "$UPDATE_OID" ]; then
        error "Environment variable missing! Set UPDATE_OID in .mib2c-updaterc"
        rc=0
    fi

    if [ -z "$UPDATE_CONF" ]; then
        error "Environment variable missing! Set UPDATE_CONF in .mib2c-updaterc"
        rc=0
    fi

#    if [ -z "$UPDATE_" ]; then
#        error "Environment variable missing! Set UPDATE_ in .mib2c-updaterc"
#        rc=0
#    fi

    if [ $rc -eq 0 ] && [ $UPDATE_NOPROBE -ne 1 ]; then
        mib2c -c unknown  > /dev/null 2>&1
        if [ $? -eq 0 ]; then
            error "WARNING: mib2c returns 0 on error conditions!"
            rc=0
        fi
    fi

    return $rc
}

#----------------------------------------------------------------------
#
do_diff()
{
    DD_ORIG=$1
    DD_CURR=$2
    DD_OUTPUT=$3
    # u | c unified | context
    # r     recursive
    # b     ignore blank lines
    # w     ignore white space
    # p     Show which C function each change is in.
    # d     smaller changes
    #    --exclude='*Makefile' --unidirectional-new-file
    local rc=0
    local rcs=0
    safecd $DD_ORIG
    echo "  checking files in $1 ($PWD)"
    files=`ls *$UPDATE_OID* 2>/dev/null`
    if [ ! -z "$files" ]; then
        for f in $files; do
            diff -U $FUZZ -p -b -w --show-c-function \
                -I "$""Id:" $f $DD_CURR/$f >> $DD_OUTPUT
            rc=$?
            rcs=`expr $rcs + $rc`
            if [ $rc -eq 1 ]; then
                echo "   $f is different"
            fi
        done
    fi
    if [ $rcs -eq 0 ]; then
        rm -f $DD_OUTPUT
    fi
    safecd -
    return $rcs
}

#----------------------------------------------------------------------
#
do_cp()
{
    src=$1
    dest=$2
    if [ ! -d $dest ]; then
        die "dest $dest is not a directory"
    fi
    if [ ! -d $src ]; then
        die "src $src is not a directory"
    fi
    safecd $src
    files=`ls *$UPDATE_OID* 2>/dev/null| egrep "(file|onf|m2d|txt|\.c|\.h)$"`
    if [ -z "$files" ]; then
       echo "   no files to copy from $src"
    else
       safecp $files $dest
       if [ $? -ne 0 ]; then
           die "error while copying files from $src to $dest in $PWD"
       fi
    fi
    safecd -
}

#----------------------------------------------------------------------
#
save_diff()
{
    echo "Creating patch for your custom code"
    cnt=`ls $UPDATE_CURR/*$UPDATE_OID* 2>/dev/null | egrep "(file|onf|m2d|txt|\.c|\.h)$" | wc -l`
    if [ $cnt -eq 0 ]; then
        echo "   no custom code!"
        FIRST_RUN=1
        return
    fi

    do_diff $UPDATE_ORIG/ $UPDATE_CURR/ $UPDATE_PATCH/custom.$UPDATE_DATE
    if [ $? -eq 0 ]; then
        echo "   no custom code changes found."
    fi
}

#----------------------------------------------------------------------
#
gen_code()
{
    copy_defaults . $UPDATE_NEW

    safecd $UPDATE_NEW
    files=`ls *$UPDATE_OID* 2>/dev/null | grep -v "^default"`
    if [ ! -z "$files" ]; then
       rm -f $files > /dev/null 2>&1 
    fi
    echo "mib2c $@ -c $UPDATE_CONF $UPDATE_MIB2C_OPTS $UPDATE_OID"
    mib2c $@ -c $UPDATE_CONF $UPDATE_MIB2C_OPTS $UPDATE_OID
    if [ $? -ne 0 ]; then
        die "bad rc $rc from mib2 while generation new code."
    fi
    safecd -
}

#----------------------------------------------------------------------
#
check_new()
{
    echo "Checking for updates to generated code"
    do_diff $UPDATE_ORIG/ $UPDATE_NEW/ $UPDATE_PATCH/generated.$UPDATE_DATE
    if [ $? -eq 0 ]; then
        echo "Generated code has not changed."
        safecd $UPDATE_PATCH
        files=`ls *.$UPDATE_DATE 2>/dev/null `
        if [ ! -z "$files" ]; then
           rm $files
        fi
        exit 0
    fi
}

#----------------------------------------------------------------------
#
merge_code()
{
    files=`ls $UPDATE_MERGED/* 2>/dev/null `
    if [ ! -z "$files" ]; then
       rm $UPDATE_MERGED/*
    fi
    do_cp $UPDATE_NEW $UPDATE_MERGED

    if [ -f $UPDATE_PATCH/custom.$UPDATE_DATE ]; then
       touch .M2C-UPDATE-MERGE-FAILED
       echo "Patching new generated code in $UPDATE_MERGED ($PWD)"
       # --forward = ignore already applied
       patch --forward -F $FUZZ -N -d $UPDATE_MERGED -i $UPDATE_PATCH/custom.$UPDATE_DATE
       if [ $? -ne 0 ]; then
           error "Could not apply custom code patch to new generated code"
           die   "You must fix the problem in $UPDATE_MERGED, and then re-run mib2c-update."
       fi
       rm .M2C-UPDATE-MERGE-FAILED
    fi
}

copy_defaults()
{
    SRC=$1
    DST=$2
    if [ -d $SRC/defaults ]; then
       safecp -a $SRC/defaults $DST
    else
        files=`ls $SRC/default-*.m2d 2>/dev/null `
        if [ ! -z "$files" ]; then
           safecp $files $DST
        fi
    fi

}

copy_merged()
{
    echo "Backing up current code to $UPDATE_BACKUP/curr"
    do_cp $UPDATE_CURR $UPDATE_BACKUP/curr/
    copy_defaults . $UPDATE_BACKUP/curr/

    echo "Copying merged code to $UPDATE_CURR"
    do_cp $UPDATE_MERGED $UPDATE_CURR/


    echo "Backing up original code to $UPDATE_BACKUP/orig"
    do_cp $UPDATE_ORIG $UPDATE_BACKUP/orig/
    echo "Saving new original code to $UPDATE_ORIG"
    do_cp $UPDATE_NEW $UPDATE_ORIG/
}

copy_new()
{
    echo "Copying code to $UPDATE_CURR"
    do_cp $UPDATE_NEW $UPDATE_CURR/
    # copy defaults back to current dir (which may not be UPDATE_CURR)
    copy_defaults $UPDATE_NEW .

    echo "Saving original code to $UPDATE_ORIG"
    do_cp $UPDATE_NEW $UPDATE_ORIG/
}

copy_code()
{
    if [ $FIRST_RUN -ne 1 ]; then
        copy_merged
    else
        copy_new
    fi

    # always get defaults from UPDATE_NEW, since those are what were used.
    copy_defaults $UPDATE_NEW .
}


#----------------------------------------------------------------------
UPDATE_NOPROBE=0

if [ -f $HOME/.mib2c-updaterc ]; then
    . $HOME/.mib2c-updaterc
fi

if [ -f .mib2c-updaterc ]; then
    . .mib2c-updaterc
fi

check_setup
if [ $? -ne 1 ]; then
    exit 1
fi

UPDATE_DATE=`date "+%F_%I.%M"`
echo "Starting regneration of $UPDATE_OID using $UPDATE_CONF at $UPDATE_DATE"

if [ -f .M2C-UPDATE-MERGE-FAILED ]; then
    echo "It appears that the last run of mib2c-update was not able to merge"
    echo "your changes automatically. Do you want to:"
    echo
    while : ; do
        echo "[c)opy merged files to $UPDATE_CURR]"
        echo "[r)e-run from scratch]"
        echo "[q)uit]"
        echo "(c|r|q) ?"
        read ans
        if [ "x$ans" = "xr" ]; then
            rm .M2C-UPDATE-MERGE-FAILED
            break
        elif [ "x$ans" = "xc" ]; then
            echo "Have you have manually merged all the"
            echo "changes into the merged directory?"
            echo "(y|n)"
            read ans
            if [ "x$ans" != "xy" ]; then
                echo "Ok. Try again after you've done that."
                exit 1
            fi
            rm .M2C-UPDATE-MERGE-FAILED
            copy_code
            exit 0
        fi
    done
fi

save_diff
gen_code $@
if [ $FIRST_RUN -ne 1 ]; then
    check_new
    merge_code
fi
copy_code
