#!/bin/sh

# Quit if a valid configuration source doesn't exist
[ -f "$XDG_CONFIG_HOME/shortcutrc" ] && src="$XDG_CONFIG_HOME/shortcutrc" || exit 1

# If you do not want to create a specific file, replace it's variable with /dev/null
awk -v lf_filepath="${XDG_CONFIG_HOME:-$HOME/.config}/lf/shortcuts" \
    -v zsh_filepath="${XDG_CACHE_HOME:-$HOME/.cache}/zsh-shortcuts" \
    -v env_filepath="${XDG_CACHE_HOME:-$HOME/.cache}/env-shortcuts" \
'
BEGIN {
  FS=","
  OFS=","
}

# Function to remove whitespaces from a string
function remove_whitespace(str) {
  gsub(/[[:space:]]/, "", str)
  return str
}

{
  # Remove comments
  gsub(/#.*/, "")

  # Remove whitespaces from column 2
  $2 = remove_whitespace($2)

  # Remove leading and trailing whitespaces from column 3
  gsub(/^[[:space:]]+|[[:space:]]+$/, "", $3)

  # whenever a line contains only commas, replace it with an empty string
  # so that we can check if a line is empty or not
  gsub(/^,+$|^,+|,+$|,+,/, "", $0)

  # Check if line is empty or contains only whitespace
  if (NF) {

    # Convert column 2 to lowercase
    lc_col2 = tolower($2)

    # Convert column 2 to uppercase
    uc_col2 = toupper($2)

    # Write to $XDG_CONFIG_HOME/lf/shortcuts
    print "map g" lc_col2 " cd " $3 > lf_filepath

    # Write to $XDG_CACHE_HOME/zsh-shortcuts
    print "g" lc_col2 "() {cd " $3 "}" > zsh_filepath

    # Write to $XDG_CACHE_HOME/env-shortcuts
    print "export G" uc_col2 "=" $3 "" > env_filepath
  }
}
' "$src"