#!/bin/bash

if [ -f /usr/share/lib/geth-utils/geth-utils.include.sh ]; then source /usr/share/lib/geth-utils/geth-utils.include.sh; fi
if [ -f /etc/geth-utils/geth.conf ]; then source /etc/geth-utils/geth.conf; fi
if [ "$1" = "-c" -o "$1" = "--chain" ]; then CMDLINECHAIN="$2";shift;shift; fi; _defineChain
if [ -n "$ONLYUSER" -a "`whoami`" != "$ONLYUSER" ]; then echo "Only to be called es user >$ONLYUSER<"; exit 17; fi
if [ "`whoami`" = "root" ]; then echo "Not to be called as user >root<"; exit 17; fi

GETH="geth --nousb --metrics --datadir $GETHDIR/$CHAIN -ipcpath $GETHDIR/$CHAIN/geth.ipc" # --signer=$HOME/.clef/clef.ipc"
LOGFILE=$GETHDIR/$CHAIN/eth.log


_usage () {
   echo "Usage: `basename $0` [ -c CHAIN | --chain CHAIN ] [ 'JSCOMMAND' ]"
   echo "Usage: `basename $0` [ -h | --help ]"
   echo "Usage: `basename $0` [ -v | --version ]"
}

_version () {
   echo "them-geth-utils Version $GVERSION"
}

if [ "$1" = "-h" -o "$1" = "--help" ]; then
   _usage
   exit 17
fi

if [ "$1" = "-v" -o "$1" == "--version" ]; then
   _version
   exit 17
fi

echo "Doing `basename $0` for Chain $CHAIN" >&2

HLP=/tmp/g.help.$$.js

_rcfile() {
echo "-- Executing: $1" >&2
# echo "     using d() for debug, p() for print" >&2
echo "-- Functions defined: ------------------------------" >&2
cat $1 | 
  egrep '^[ \t]*function[ \t]*\w\w*[ \t]*\(|^var\b' >&2
echo "-- Log: --------------------------------------------" >&2

echo "console.log(\"    from $1:\")" >> $HLP

cat $1 | 
  egrep '^[ \t]*function[ \t]*\w\w*[ \t]*\(' | \
   sed '1,$ s/"/\\"/g' | \
   awk -v RCF=$1 '{printf "console.log(\"%s\")\n",$0}' \
   >> $HLP
}

echo 'function help() {console.log("Selfdefined Functions:")' > $HLP

RCFILES="/usr/share/lib/geth-utils/js/gethrc.js:/etc/geth-utils/gethrc.js:$GETHDIR/gethrc.js:$GETHDIR/$CHAIN/gethrc.js:$HOME/gethrc.js"

RCLIST=/dev/null
for RCF in `echo $RCFILES | tr ':' ' '`; do
   if [ -f $RCF ]; then
      _rcfile $RCF
      RCLIST="$RCLIST,$RCF"
   fi
done

echo '}' >> $HLP

if [ -f $GETHDIR/$CHAIN/ethpasswd.js ]; then
    PWF=$GETHDIR/$CHAIN/ethpasswd.js
else
    PWF=/dev/null
fi

echo "Calling $GETH --preload $RCLIST,$HLP,$PWF --exec \"$*\" attach" >&2
              $GETH --preload $RCLIST,$HLP,$PWF --exec "$*" attach

rm $HLP
