#!/bin/rc
#
# Copyright (c) 2014 by David L. Craig, all rights reserved
# and licensed under version 2 of the GPL.
# http://dlc.casita.net/~dlc       mailto:dlc.usa@gmail.com
#
# Display state of environment variables
~ $#* 1 && ~ $*(1) -h && { cat <<'EOD' ; exit help }
  Syntax: env [-dlcex | -h] [env] ...
  Output flags: d=debug l=ls c=cat e=echo x=xd
  Help flag: display this help (must be only argument)
  If no variable names are specified, all are displayed
  If no output flags are specified, lcex are set
EOD
# iota is the monadic APL operator that becomes an ordinal list up to the
# arg specified; e.g., iota 5 produces a list containing (1 2 3 4 5)
fn iota {</dev/null awk -v 'i='^$1 'END{for(j=1;j<i;j++)printf("%d ",j);print i}'}
#
env_o='-elcx' # set output flag defaults
# echo '$#*=<' ^$#* ^'>' ; ! ~ $#* 0 && echo '$*(1)=<' ^$*(1) ^'>'
! ~ $#* 0 && ~ $*(1) -* && { env_o=$*(1) ; shift } # extract specified flags
# echo 'env_o=<' ^$env_o ^'> $#*=<' ^$#* ^'>' ; ~ $#* 0 || echo '$*(' ^`{iota $#*} ^')=<' ^$* ^'>'
~ $env_o *d* && {
   echo '$env_o=<' ^$env_o ^'>'
   ~ $env_o *d* && echo 'Option d is true' || echo 'Option d is false'
   ~ $env_o *l* && echo 'Option l is true' || echo 'Option l is false'
   ~ $env_o *e* && echo 'Option e is true' || echo 'Option e is false'
   ~ $env_o *c* && echo 'Option c is true' || echo 'Option c is false'
   ~ $env_o *x* && echo 'Option x is true' || echo 'Option x is false'
}
# exit 'debugging'
env_g=0 ; env_h=0 ; env_i=0 ; env_j=0 ; env_k=0
~ $#* 0 && env_g=`{cd /env ; ls -Q} || env_g=`{echo $*}
~ $#env_g 0 && exit 'could not build input file list'
~ $env_o *d* && echo '$#env_g=<' ^$#env_g ^'>'
for ( env_i in ( `{ iota $#env_g } ) ) {
   ~ $env_i 0 || {
      ~ $env_o *d* && echo 'env_g(' ^$env_i ^')=<' ^$env_g($env_i) ^'>'
      env_h=$env_g($env_i) ; ~ $env_o *d* && echo 'env_h=<' ^$env_h ^'>'
      env_j=`{awk -v 'i='^$env_h 'END{sub("/env/","",i);printf("%s",i)}' </dev/null}
      echo $env_i^: $env_j
      ~ $env_o *e* && {
        ~ $#$env_j 0 \
        && echo null list \
        || echo $env_j ^'(' ^`{ iota $#$env_j } ^')=<' ^$$env_j ^'>'
      }
      test -f /env/$env_j \
         || echo no such file: /env/$env_j
         && {
            ~ $env_o *l* &&   ls -l /env/$env_j
            ~ $env_o *c* && { cat   /env/$env_j ; echo '' }
            ~ $env_o *x* &&   xd    /env/$env_j
         }
   }
~ $env_i $#env_g || \
   echo '---------------------------------------------------------'
}
cd /env ; rm env_g env_h env_i env_j env_k env_o
