#!/bin/rc
# a simple net installer that loads my live system.
# netget resolves dependency among packages
# usage: netget [-t] [package ...]
# -i # blindly install packages
rfork e
usage='# usage: netget [-i] package ...
# -i # blindly install packages'



opt=()
switch($1){
case -i
  opt=$1
  shift
case -*
  echo $usage
  exit
}

if(~ $#* 0){
  echo $usage
  echo '# currently supported packages are:'
  #grep 'fn +get_' $0 | sed 's/fn +get_([^ {]+).*$/\1/g'
  grep '^case [^-*].*' $0 | sed 's/case (.*)$/\1/g'
  exit
}
weblib=http://plan9.aichi-u.ac.jp/netlib
#weblib=http://m9/netlib		# for my experiment
netlib=/usr/arisawa/netlib
loc=/usr/local	 # install location
pre=/tmp/netget 	# default install location prefix
rec=$loc/lib/receipt
rec1=$pre$rec
rec2=($rec $rec1)

if(! ~ $objtype 386){
  echo 'currently only 386 is supported'
  exit
}
if(~ $opt -i){
  pre=''
  rec1=$rec
  rec2=$rec
}

fn inst {
  g=() d=() m=() {
  if(~ $1 -m){
    shift
    m=$1
    shift
  }
  for(f in $*){
    g=$pre$f
    d =`{basename -d $g}
    if(! test -d $d)
      mkdir -p $d
    echo '# installing' $f
    hget $weblib$f > $g
    if(~ $m ?*)
      chmod $m $g
  }}
}

fn get_cgitools {
  ver=cgitools-1.0a
  if(! grep -s $ver $rec2){
    inst -m 755 /usr/web/bin/$objtype/^(formparse hfmt urldecode)
    inst $loc/man/8/^(formparse hfmt urldecode)
    echo $ver >> $rec1
  }
}

fn get_cpdir {
  ver=cpdir-1.8b
  if(! grep -s $ver $rec2){
    inst -m 755 $loc/bin/$objtype/cpdir
    inst $loc/man/1/cpdir
    echo $ver >> $rec1
  }
}

fn get_lib_mimetyep {
  ver=lib_mimetype-1.0
  if(! grep -s $ver $rec2){
    inst /sys/lib/mimetype
    echo $ver >> $rec1
  }
}

fn get_lr {
  ver=lr-1.4
  if(! grep -s $ver $rec2){
    inst -m 755 $loc/bin/$objtype/lr
    inst $loc/man/1/lr
    echo $ver >> $rec1
  }
}

fn get_lua {
  ver=lua-2014
  if(! grep -s $ver $rec2){
    inst -m 755 $loc/bin/$objtype/^(lua 9lua)
	inst $loc/lib/lua/5.2/*.lua
    echo $ver >> $rec1
  }
}

fn get_lua-app {
  ver=lua-app-2014
  if(! grep -s $ver $rec2){
    inst -m 755 $loc/bin/rc/ptt /usr/web/bin/rc/webdav
    inst $loc/man/1/ptt $loc/man/8/webdav
    echo $ver >> $rec1
  }
}

fn get_netget {
  # it will be better not to add marker to $rec
  inst -m 755 $loc/bin/rc/netget
  inst $loc/man/1/netget
}

fn get_mimetype {
  ver=mimetype-1.0
  if(! grep -s $ver $rec2){
    inst -m 755 $loc/bin/$objtype/mimetype
    inst $loc/man/1/mimetype
    echo $ver >> $rec1
  }
}

fn get_remoty {
  ver=remoty-3.1
  if(! grep -s $ver $rec2){
    inst -m 755 /usr/web/bin/rc/remoty
    inst $loc/man/8/remoty
    echo $ver >> $rec1
  }
}

fn get_rit {
  ver=rit-1.5a
  if(! grep -s $ver $rec2){
    inst -m 755 $loc/bin/$objtype/rit
    inst $loc/man/1/rit
    echo $ver >> $rec1
  }
}

fn require {
  for(x in $*)
    get_$x
}


if(! test -e /mnt/web/clone)
  webfs

for(f in $rec2){
  if(! test -e $f){
    d =`{basename -d $f} {
    if(! test -d $d)
        mkdir -p $d
    }
    touch $f
    chmod +a $f
  }
}

while(! ~ $#* 0){
switch($1){
case cgitools formparse hfmt urldecode
  require cgitools
case cpdir
  require cpdir
case netget
  require netget
case lr
  require lr
case lua 9lua
  require lua
case lua-app ptt webdav text2html html2text
  require lua-app lua
case remoty
  require remoty lua lua-app rit cpdir mimetype cgitools
case rit
  require rit
case *
  echo $1 'not supported'
}
shift
}

# check /sys/lib/mimetype
ifs='
' {a=`{grep '^\.jpg' /sys/lib/mimetype}}
if(! ~ $#a 1){
  echo '# your /sys/lib/mimetype is buggy'
  echo '# need fix so that Remoty works correctly'
  echo 'proceed? (y/n)'
  a=`{read}
  if(~ $a y)
    inst /sys/lib/mimetype
}

echo '# execute commands below to examine and install'
echo '# lr -l /tmp/netget'
echo '# cpdir -mv /tmp/netget /'
echo '# rm -rf /tmp/netget'

exit
