#!/bin/bash

item="${1}"
if [[ -z "${1}" ]]; then
  echo "must enter a file to organize"
  echo "$0 file.txt"
  echo "$0 file@*.txt"
  exit 1
fi

declare -a order1
declare -a order2
declare -a order3

order1=(alwaysHidden alwaysVisible setTitle setDescription setPos setRequiresParents drawDirectLines hideLines setAnnounceToChat setBackground setIcon setShowToast setRepeatTime)
order2=(addParent addRewardItem addRewardFunction)
order3=(criteria addCriteria custom //keep)


function sortfile () {
  for i in "${order1[@]}"; do
    grep -E "^${i}" "${thefile}"
  done

  echo

  for i in "${order2[@]}"; do
    grep -E "^${i}" "${thefile}"
  done

  regexlist=$(echo "${order3[@]}"|sed -e 's/ /|/g' -E -e 's/[|]+/|/g')
  grep -iE "^(${regexlist})" "${thefile}"|sed 's/criteria =/\ncriteria =/'

  echo

  echo '// list of unsorted items'
  regexlist=$(echo "${order1[@]}" "${order2[@]}" "${order3[@]}" "//"|sed -e 's/ /|/g' -E -e 's/[|]+/|/g')

  grep . "${thefile}"|grep -vE "^(${regexlist})"
}

for thefile in $(ls ${item}); do
  output=$(sortfile)
  echo "${output}" > "${thefile}"
done
