#!/usr/bin/env bash
#
# Script rozbali .zip subor, skovertuje cs/sk znaky a zbali ho do .7z
# alebo s prepinacom x rozbali .zip do aktualneho adresara
# potrebuje p7zip a convmv
#

# Su nainstalovane potrebne programy?
command -v 7z >/dev/null 2>&1 || { echo "Chyba program 7z (balik p7zip-full alebo p7zip)"; exit 1; }
command -v convmv >/dev/null 2>&1 || { echo "Chyba program convmv (balik convmv)"; exit 1; }

# spracovanie vstupnych parametrov
copy=false
if test $# -eq 0 -o $# -ge 2; then
   if test "$1" = x -a $# -le 2; then
      copy=true
      shift
   else
      echo -e "Pouzitie:"
      echo -e "zip27z subor.zip - zip sa skonvertuje do .7z"
      echo -e "zip27z x subor.zip - zip sa robali do aktualneho adresara"
      exit 1
   fi
fi

# existuje subor?
zipfile="$1"
name=${zipfile%.*}
if test ! -f "$zipfile"; then
   echo "Subor $zipfile neexistuje"
   exit 1
fi

# rozbal zip, koverzia znakov
tmpdir=$(mktemp -d)
LANG=C 7z x -bso0 -bsp0 "$zipfile" -o"$tmpdir"
if test $? -ne 0 ;then
   exit 1
fi
convmv -f CP852 -t UTF-8 -r --nfc --replace --notest "$tmpdir" \
   2>&1 >/dev/null | grep -v "Ready!"

# kopirovat alebo zbalit do .7z
if test $copy = true; then
   cp -r -i --preserve=timestamps "$tmpdir"/* .
else
   7z a -bso0 "$name".7z "$tmpdir"/*
fi

# mazanie
rm -r $tmpdir

exit 0
