#!/usr/bin/env bash

# shellcheck shell=bash

# ``````````````````````````````````````````````````````````````````````````````
# Function name: module_show()
#
# Description:
#   Show help in cli.
#
# Usage:
#   module_show
#
# Examples:
#   module_show
#

function module_show() {

  # shellcheck disable=SC2034
  local _FUNCTION_ID="module_show"
  local _STATE=0

  local _marg="$1"

  _count=0

  _cr="-35.35"

  # shellcheck disable=SC2034,SC2154
  _static_menu="${_tmp}/.static.menu"

  : >"${_static_menu}"

  if [[ -z "$_marg" ]] ; then

    printf "\\n    \\e[1;38m%-4.4s %${_cr}s %s\\e[m\\n    %-4.4s %${_cr}s %s\\n\\n" \
           "ID" \
           "Alias" \
           "Nmap Parameters" \
           "--" \
           "-----" \
           "---------------" >> "${_static_menu}"

  fi

  # shellcheck disable=SC2034,SC2154
  for _svar in "${_module_commands[@]}" ; do

    # shellcheck disable=SC2034
    _key_desc=$(echo "$_svar" | awk -v FS="(;|;)" '{print $1}')
    # shellcheck disable=SC2034
    _key_comm=$(echo "$_svar" | awk -v FS="(;|;)" '{print $2}')
    # shellcheck disable=SC2034
    _key_alias=$(echo "$_svar" | awk -v FS="(;|;)" '{print $3}')
    # shellcheck disable=SC2034
    _key_cmd=$(echo "$_svar" | awk -v FS="(;|;)" '{print $4}')
    # shellcheck disable=SC2034
    _key_arg=$(echo "$_svar" | awk -v FS="(;|;)" '{print $5}')

    # shellcheck disable=SC2034
    IFS="," read -r -a _script_args <<< "$(sed 's/,\s+/???/g' <<< "$_key_arg")"

    if [[ "$_key_alias" == "$_marg" ]] ; then

      printf "\\n    \\e[1;38m%-4.4s %${_cr}s %s\\e[m\\n    %-4.4s %${_cr}s %s\\n\\n" \
             "ID" \
             "Alias" \
             "Nmap Parameters" \
             "--" \
             "-----" \
             "---------------" >> "${_static_menu}"

      printf "    \\e[1;32m%-4.4s\\e[m \\e[1;34m%${_cr}s\\e[m %s\\n" \
             "$_count" \
             "$_key_alias" \
             "$_key_cmd" >> "${_static_menu}"

      if [[ ! "${#_script_args[@]}" -eq 0 ]] ; then

        printf "\\n  \\e[1;38m%s\\e[m:\\n\\n" "Script arguments" >> "${_static_menu}"

        for i in "${_script_args[@]}" ; do

          # shellcheck disable=SC2001
          _tmp_script_args=$(echo "${i}" | sed 's/^ *//g' | sed 's/???/\\n/g')

          if [[ "${_tmp_script_args}" == *"="* ]] ; then

            _a_arg=$(echo "${_tmp_script_args}" | tr -d '"' | cut -d "=" -f1)
            _b_arg=$(echo "${_tmp_script_args}" | tr -d '"' | cut -d "=" -f2)

            printf "    %s = '\\e[1;33m%s\\e[m'\\n" "${_a_arg}" "${_b_arg}" >> "${_static_menu}"

          else

            _a_arg=$(echo "${_tmp_script_args}" | tr -d '"')

            printf "    %s = ''\\n" "${_a_arg}" >> "${_static_menu}"

          fi

        done

      fi

    elif [[ -z "$_marg" ]] ; then

      printf "    \\e[1;32m%-4.4s\\e[m \\e[1;34m%${_cr}s\\e[m %s\\n" \
             "$_count" \
             "$_key_alias" \
             "$_key_cmd" >> "${_static_menu}"

    fi

    _count=$((_count + 1))

  done

  cat "${_static_menu}"

  echo

  : >"${_static_menu}"

  return $_STATE

}
