#!/bin/bash
# a megadott (útvonalú +) nevű xpi fájl helyesírásellenőrzése
# a szkript feltételezi, hogy nincsenek azonos nevű jar-fájlok az xpi-ben

convert_uxxxx()
{
sed "\
s/\\\\u00e1/á/ig;s/\\\\u00c1/Á/ig;\
s/\\\\u00e9/é/ig;s/\\\\u00c9/É/ig;\
s/\\\\u00ed/í/ig;s/\\\\u00cd/Í/ig;\
s/\\\\u00f3/ó/ig;s/\\\\u00d3/Ó/ig;\
s/\\\\u00f6/ö/ig;s/\\\\u00d6/Ö/ig;\
s/\\\\u0151/ő/ig;s/\\\\u0150/Ő/ig;\
s/\\\\u00fa/ú/ig;s/\\\\u00da/Ú/ig;\
s/\\\\u00fc/ü/ig;s/\\\\u00dc/Ü/ig;\
s/\\\\u0171/ű/ig;s/\\\\u0170/Ű/ig;\
s/\\\\u000a/ /g"
}

distill_dtd()
# többsoros kommentekre és azonos sorban levő több kommentre is jól működik
{
sed 's/<!--[^(-->)]*-->//g'|\
sed -e :a -e 's/<!--.*-->//g;/<!--/N;//ba'|\
sed 's/<!ENTITY[ 	]*[^ 	]*[ 	]*\([^>]*\)>/\1/g'
}

distill_properties()
{
sed ':a;/^[ 	]*#.*$/d;ta;s/^[^=]*=[ 	]*\(.*\)$/\1/g;s/\\n/ /g'
}

if [ "$1" = "" ]; then
 echo "Paraméterként megadandó az xpi fájl neve (esetleg útvonallal)"
 exit
fi

unzip -n -j "$1" *.jar

for fn in *.jar; do
 dirname="${fn:0:${#fn}-4}"
 mkdir "$dirname"
 unzip "$fn" -d "$dirname"
done

for filename in `find . -noleaf -type f`; do
  echo "$filename"|grep -E "\.dtd$|\.ent$" >/dev/null
  if [ $? -eq 0 ]; then
    echo "$filename"
    iconv -f UTF-8 -t ISO-8859-2 "$filename" >"$filename.conv"
    cat "$filename.conv"|distill_dtd >"$filename.conv2"
  else
    echo "$filename"|grep -E "\.properties$" >/dev/null
    if [ $? -eq 0 ]; then
      echo "$filename"
      cat "$filename"|convert_uxxxx >"$filename.conv"
      cat "$filename.conv"|distill_properties >"$filename.conv2"
    fi
  fi
done

for filename in `find . -type f -name "*.conv2" -noleaf`; do
  cat "$filename"; echo
done | hunspell -l | sort | uniq >"checkxpi_out_`date +"%Y.%m.%d_%H.%M.%S"`"
