#!/usr/local/bin/bash
#set -x
#export PS4='\e[90m+${LINENO} in ${#BASH_SOURCE[@]}>${FUNCNAME[0]}:${BASH_SOURCE[@]##*/} \e[0m'

config.start() 
{

  This=$(which $0)
  this=$(basename $This)
  basepath=$(dirname $(readlink -f $This))
  source $basepath/init

  if [ "$this" = "config" ]; then
    #echo "starting $0"
    case $CONFIG in
      '')
        config.init
        source call "$@"
        ;;
      *)
        source "$CONFIG"
        source call "$@"
  
        if [ -z "$1" ]; then
          #config.env
          #echo "$CONFIG"
          config.file
        fi
        ;;
    esac
  else
    #echo "sourcing $0"
    config.init
  fi


}

config.start1()
{
  This=$(which $0)
  this=$(basename $This)
  basepath=$(dirname $This)
}

config.init()
{
  export CONFIG=~/config/user.env
  echo $CONFIG
  if [ ! -d ~/config ]; then
    mkdir ~/config
    config.path
  #else
  #  source $CONFIG
  fi
}

config.path() 
{
  PATH=$(dirname $(readlink -f $0)):$PATH
  config.save
}


config.save()
{
  env | sed 's/\([^=]*\)=\(.*\)/export \1="\2"/' | grep -v "^export _" | grep -v "export PS" | grep -v "export BASH" | sort >$CONFIG
  #declare -a >>$CONFIG
}

config.file() 
{
  #user.log "$CONFIG"
  if [ -n "$1" ]; then
    export CONFIG="$1"
    config.save
  fi
  echo -e "\e[1;96m$CONFIG\e[0m"
}


config.edit() 
{
  vim config
}

config.env() 
{
  vim $CONFIG
}

config.list() 
{
  cat $CONFIG
}


config.get()
{
  cat $CONFIG | grep $1
  shift
}



config.start $@
