#!/bin/rc rfork en exercises=() session=() reps=() sets=() wdir=$home/lib/fitness today=`{date | awk '{print $3 tolower($2) $6}'} t0=`{date | awk '{split($4, hms, /:/); print hms[1]":"hms[2]}'} . <{<$wdir/exercises awk '/^[^ ]/ {print "exercises=($exercises ''"$0"'')"}'} fn isnumber{ ! ~ `{echo $1 | awk '/^[0-9]+$/'} '' } fn sanitize{ echo $1 | sed 's/[ ]#.*//g' } fn printexers{ for(i in `{seq 1 $#exercises}) echo $i':' $exercises($i) } fn printsession{ showreps=$1 showsets=$2 for(i in `{seq 1 $#session}){ echo -n $i':' $exercises($session($i)) if(~ $showreps 1 && ! ~ $#reps 0){ echo -n ' '[$reps($i)^x if(~ $showsets 1 && ! ~ $#sets 0) echo -n $sets($i) echo -n ] } echo } } fn plansession{ session=() e=() while(! ~ $e w){ echo program your workout session (a to add all, w to begin): printexers | mc e=`{read} e=`{sanitize $e} if(isnumber $e && test $e -ge 1 && test $e -le $#exercises) session=($session $e) if not if(~ $e a){ session=`{seq 1 $#exercises} e=w } } printsession | mc echo -n is this all right?' ' ready=`{read} if(~ $ready y) setupreps if not plansession } fn setupreps{ reps=() for(i in `{seq 1 $#session}){ r=() while(! isnumber $r){ echo -n how many reps for $exercises($session($i))?' ' r=`{read} r=`{sanitize $r} } reps=($reps $r) } printsession 1 | mc echo -n is this all right?' ' ready=`{read} if(~ $ready y) start if not setupreps } fn mkreport{ t1=`{date | awk '{split($4, hms, /:/); print hms[1]":"hms[2]}'} echo '#'exercise,reps,sets >$wdir/$today for(i in `{seq 1 $#session}) if(! ~ $sets($i) 0) echo $exercises($session($i))^,^$reps($i)^,^$sets($i) >>$wdir/$today echo '#' session ran from $t0 to $t1 >>$wdir/$today } fn start{ # initialize the set array for(i in `{seq 1 $#session}) sets=($sets 0) while(! ~ $e q){ if(~ $e t) echo session began at $t0 if not printsession 1 1 | mc echo -n '> ' e=`{read} e=`{sanitize $e} if(isnumber $e && test $e -ge 1 && test $e -le $#session){ lo=`{echo $e-1 | bc} hi=`{echo $e+1 | bc} sets=($sets(1-$lo) `{echo $sets($e)+1 | bc} $sets($hi-)) } } mkreport } plansession