#!/usr/bin/env bash

bdsm_development_setup()
{
  local _component _separator _string

  printf -v _separator '%*s' "${_columns:-${COLUMNS:-80}}"

  true "${projects_path:="$HOME/projects"}"

  log "\nBDSM development environment setup"

  log "\n=> configuration\n${_separator// /=}"

  if file_contains "$HOME/.bash_profile" "projects_path="
  then
    log "  * projects_path is already set in $HOME/.bash_profile."
  else
    write 'export projects_path="$HOME/projects"' \
      append to "$HOME/.bash_profile"

    log "  * Setting projects_path in $HOME/.bash_profile."
  fi

  if file_contains "$HOME/.bash_profile" "modules/bash/project/interactive"
  then
    log "  * project functions are setup in $HOME/.bash_profile."
  else
    log "  * project functions are now setup in $HOME/.bash_profile."

    write "[[ -s \"${modules_path}/shell/project/interactive\" ]] && source \"${modules_path}/shell/project/interactive\""  \
      append to "$HOME/.bash_profile"
  fi

  ensure_paths_exist "${projects_path}/bdsm"

  ensure_files_exist "${HOME}/.bdsmrc"

  enter "${projects_path}/bdsm"

  for _component in core extensions site
  do
    log "\n=> ${_component}\n${_separator// /=}"
    if file_contains "$HOME/.bdsmrc" "${_component}_development_path"
    then
      log "  * ${_component}_development_path is already set in .bdsmrc"
    else
      write "export ${_component}_development_path=\"${projects_path}/bdsm/${_component}\"" \
        append to "$HOME/.bdsmrc"
      log "Setting ${_component}_development_path in .bdsmrc"
    fi

    if path_exists "${_component}"
    then
      log "  * Repository already exists at $PWD/${_component}/"
    else
      log "  * Cloning Core repository into $PWD/${_component}/"
      case ${_component} in
        core)
          _url="https://github.com/wayneeseguin/bdsm"
          ;;
        *)
          _url="https://github.com/wayneeseguin/bdsm-${_component}"
          ;;
      esac

      if git clone ${_url} ${_component}
      then
        log "  * ${_component} repository successfully cloned into $PWD/${_component}/"
      else
        error "There was an error cloning ${_component} repository from ${_url} into ${PWD}/${_component}"
      fi
    fi
  done

  log "\nBDSM development environment setup has completed."
}

bdsm_development_update()
{
  NIY
}
