#!/bin/bash

BUILDER="ntc"
SBHOME="/root/.nopkgtool"

RSYNCBIN="$(which rsync) -r -t -p -o -g --stats -h --ignore-existing -c -l -H -z"
WGETBIN="$(which wget) -nc"
INSTALLBIN="$(which upgradepkg) --install-new"
SLACKV=$(cat /etc/slackware-version | sed s/"Slackware "//g | cut -c 1-4)
SBMIRROR="rsync://rsync.slackbuilds.org/slackbuilds/$SLACKV"
SBUSER=$(whoami)
SBID=$RANDOM
SBTMPDIR="$SBHOME/.$SBID"
BOLD='\e[1m'
Z='\e[0m'

function sbupdate {
  echo -e "${BOLD}Synching $SLACKV branch...${Z}"
  mkdir -p $SBHOME
  $RSYNCBIN $SBMIRROR $SBHOME
  echo
}

function main {
  echo
  echo -e "${BOLD}nopkgtool${Z} - netico's own pkgtool"
  echo "Slackware Linux $SLACKV"
  echo
}

function sbbuild {
  cd $1
  $WGETBIN $(cat *info | grep DOWN | cut -d"=" -f2 | sed s/'"'/''/g)
  rm -f tmp.SlackBuild
  rm -f new.SlackBuild
  cat *.SlackBuild | sed s/'_SBo'/"$BUILDER"/g > tmp.SlackBuild
  cat tmp.SlackBuild | sed sx/tmpx"$SBTMPDIR"xg > new.SlackBuild
  chmod +x *.SlackBuild
  ./new.SlackBuild
  rm -f tmp.SlackBuild
  rm -f new.SlackBuild
  echo -e "${BOLD}Moving package...${Z}"
  cp -pvr $SBTMPDIR/*.tgz /root/
  echo
}

function sbinstall {
  sbbuild $1
  $INSTALLBIN "$SBTMPDIR/$2*$BUILDER.tgz"
}

if [ "$SBUSER" != "root" ]; then
    echo -e "Sorry,${BOLD} $SBUSER ${Z}is not allowed"
    exit 99
fi

if [ -t $1 ]; then
    echo "${BOLD}Usage${Z}: $0 package"
    exit 99
fi

main
sbupdate

for DIR in $(find "$SBHOME/$SLACKV/" -type d -iname "*$1*"); do

    if [ -f "$DIR/README" ]; then
      NEWPKG=$(basename $DIR)
      echo
      echo -e "${BOLD}$NEWPKG ${Z}"
      cat "$DIR/README" 
      echo
      echo -e "${BOLD}1${Z}. Build package${BOLD} $NEWPKG ${Z}"
      echo -e "${BOLD}2${Z}. Build and install package${BOLD} $NEWPKG ${Z}"
      echo -e "${BOLD}3${Z}. Quit"
      echo -e "${BOLD}4${Z}. Do nothing"
      echo
      read -p "Enter your choice [1-4] " INPUT1
      case $INPUT1 in
	1) sbbuild $DIR ;;
	2) sbinstall $DIR $NEWPKG ;;
	3) rm -fr $SBTMPDIR && exit 0 ;;
      esac
    fi
    rm -fr $SBTMPDIR
done