#!/bin/bash

lista1=(minino-langpack-gl!minino-langpack-es!minino-langpack-pt-br!minino-utils!minino-desktop-settings!minino-system-settings!libreoffice-minino!minino-launchers!minino-keyring!minino-yamaha-firmware)
lista2=(0.1!0.2!0.3!0.4!0.5!0.6!0.7!0.8!0.9!0.10!0.11!0.12!0.13!0.14!0.15!0.16!0.17!0.18!0.19!0.20)

#cat <<EOF >/tmp/bajapublic
##!/bin/bash
#ssh minino@minino.galpon.org -p 10022 "cd /home/minino/www/;tar czf - public"|tar xzvf - -C .
#EOF

function publicBar(){
    yad --progress --pulsate --progress-text "   Descargando   " --auto-close \
        --title ""GeneraDeb"" --text "   Descarga del contenido de <b>Public</b>   " --no-buttons
}

function bajaPublic(){
    # BAJAMOS PUBLIC
    [ -d ./public ] & rm -Rf ./public ;
    ssh minino@minino.galpon.org -p 10022 "cd /home/minino/www/;tar czf - public"|tar xzvf - -C . | publicBar
}

yad --form --title "Descarga Public" --field "¿Quieres descargar la carpeta <b>Public</b>?":LBL \
    --button gtk-yes:1 --button gtk-no:2 --width 200 --height 100 --on-top --center
resultado=$?
[ $resultado == 1 ] && bajaPublic | exit 0

function creaCarpeta(){
    mkdir $NOMBRE_PAQUETE
    mkdir $NOMBRE_PAQUETE/DEBIAN
    cat <<EOF >$NOMBRE_PAQUETE/DEBIAN/control
Package: $NOMBRE_PAQUETE
Priority: extra
Section: minino
Installed-Size: 8
Maintainer: GALPon MiniNo Team minino@galpon.org
Depends: coreutils
Architecture: i386
Version: $VERSION
Description: $DESCRIPTION

EOF
}

function progressBar(){
    yad --progress --progress-text "  Generando el paquete  " --auto-close \
        --title ""GeneraDeb"" --text "  Generando:  \n\t<b>$NOMBRE_PAQUETE</b> versión <b>$VERSION</b>  " --no-buttons
}

function debianControl(){
    echo "Modificando el archivo de Control"
#    OLDVERSION=`cat $NOMBRE_PAQUETE/DEBIAN/control | grep "Version" | cut -d" " -f2`
#    rpl "Version: $OLDVERSION" "Version: $VERSION" $NOMBRE_PAQUETE/DEBIAN/control
    SIZE=`du -b -c $NOMBRE_PAQUETE | tail -n 1 | awk '{print $1}'`
#    OLDSIZE=`cat $NOMBRE_PAQUETE/DEBIAN/control | grep "Installed" | cut -d" " -f2`
#    rpl "Installed-Size: $OLDSIZE" "Installed-Size: $SIZE" $NOMBRE_PAQUETE/DEBIAN/control
    rpl "Installed-Size: 8" "Installed-Size: $SIZE" $NOMBRE_PAQUETE/DEBIAN/control
}

function forAll(){
    echo "60";sleep 1;echo "Actualizando archivo de control"
        debianControl

    echo "70";sleep 1;echo "Generando paquete"
        dpkg -b $NOMBRE_PAQUETE/;

    echo "80";sleep 1;echo "Renombrando a ${NOMBRE_PAQUETE}_${VERSION}_i386"
        mv $NOMBRE_PAQUETE.deb ${NOMBRE_PAQUETE}_${VERSION}_i386.deb

    echo "95";sleep 1;echo "Limpiamos"
        rm -rf $NOMBRE_PAQUETE
}

function mininoLangpackGL(){
    DESCRIPTION="Paquete adicional de traducciones a gallego para aplicaciones incluidas en GALPon MiniNo";
    creaCarpeta;

    echo "20";sleep 1;echo "Creando estructura de carpetas"
        mkdir -p minino-langpack-gl/usr/share/locale/gl/LC_MESSAGES/;
        mkdir -p minino-langpack-gl/usr/local/share/locale/gl/LC_MESSAGES/;
        mkdir -p minino-langpack-gl/usr/share/umplayer/translations/; 
        mkdir -p minino-langpack-gl/usr/share/FBReader/;
        mkdir -p minino-langpack-gl/usr/share/zlibrary/;

    echo "40";sleep 1;echo "Copiando archivos"
        cp -a public/usr/share/locale/gl/LC_MESSAGES/* minino-langpack-gl/usr/share/locale/gl/LC_MESSAGES/;
        cp -a public/usr/local/share/locale/gl/LC_MESSAGES/* minino-langpack-gl/usr/local/share/locale/gl/LC_MESSAGES/;
        rm minino-langpack-gl/usr/local/share/locale/gl/LC_MESSAGES/minino-login.mo;
        rm minino-langpack-gl/usr/local/share/locale/gl/LC_MESSAGES/mac-spoof.mo;
        cp -a public/usr/share/umplayer/translations/* minino-langpack-gl/usr/share/umplayer/translations/;
        cp -a public/usr/share/FBReader/* minino-langpack-gl/usr/share/FBReader/;
        cp -a public/usr/share/zlibrary/* minino-langpack-gl/usr/share/zlibrary/;

    forAll
}

function mininoLangpackES(){
    DESCRIPTION="Paquete adicional de traducciones a castellano de aplicaciones incluidas en GALPon MiniNo";
    creaCarpeta;

    echo "20";sleep 1;echo "Creando estructura de carpetas"
        mkdir -p minino-langpack-es/usr/share/locale/es/LC_MESSAGES/;
        mkdir -p minino-langpack-es/usr/local/share/locale/es/LC_MESSAGES/;
        mkdir -p minino-langpack-gl/usr/share/fotoxx/locales/es/; 

    echo "40";sleep 1;echo "Copiando archivos"
        cp -a public/usr/share/locale/es/LC_MESSAGES/* minino-langpack-es/usr/share/locale/es/LC_MESSAGES/;
        cp -a public/usr/local/share/locale/gl/LC_MESSAGES/* minino-langpack-es/usr/local/share/locale/es/LC_MESSAGES/;
        rm minino-langpack-es/usr/local/share/locale/es/LC_MESSAGES/minino-login.mo;
        rm minino-langpack-es/usr/local/share/locale/es/LC_MESSAGES/mac-spoof.mo;
        cp -a public/usr/share/fotoxx/locales/es/* minino-langpack-es/usr/share/fotoxx/locales/es/

    forAll
}

function mininoLangpackPTBR(){
    DESCRIPTION="Paquete adicional de traducciones al portugués de Brasil de aplicaciones incluidas en GALPon MiniNo";
    creaCarpeta;

    echo "20";sleep 1;echo "Creando estructura de carpetas"
        mkdir -p minino-langpack-pt-br/usr/share/locale/pt_BR/LC_MESSAGES/;
        mkdir -p minino-langpack-pt-br/usr/local/share/locale/pt_BR/LC_MESSAGES/;

    echo "40";sleep 1;echo "Copiando archivos"
        cp -a public/usr/share/locale/pt_BR/LC_MESSAGES/* minino-langpack-pt-br/usr/share/locale/pt_BR/LC_MESSAGES/;
        cp -a public/usr/local/share/locale/pt_BR/LC_MESSAGES/* minino-langpack-pt-br/usr/local/share/locale/pt_BR/LC_MESSAGES/;
        rm minino-langpack-pt-br/usr/local/share/locale/pt_BR/LC_MESSAGES/minino-login.mo;
        rm minino-langpack-pt-br/usr/local/share/locale/pt_BR/LC_MESSAGES/mac-spoof.mo;

    forAll
}

function mininoUtils(){
    DESCRIPTION="Pequeñas utilidades específicas de GALPon MiniNo";
    creaCarpeta;

    echo "20";sleep 1;echo "Creando estructura de carpetas"
        mkdir -p minino-utils/usr/local/share/locale/es/LC_MESSAGES/;
        mkdir -p minino-utils/usr/local/share/locale/gl/LC_MESSAGES/;
        mkdir -p minino-utils/usr/local/share/locale/pt_BR/LC_MESSAGES/;
        mkdir -p minino-utils/usr/local/bin/
        mkdir -p minino-utils/usr/local/share/applications/

    echo "40";sleep 1;echo "Copiando archivos"
        cp -a public/usr/local/share/locale/es/LC_MESSAGES/mac-spoof.mo minino-utils/usr/local/share/locale/es/LC_MESSAGES/;
        cp -a public/usr/local/share/locale/gl/LC_MESSAGES/mac-spoof.mo minino-utils/usr/local/share/locale/gl/LC_MESSAGES/;
        cp -a public/usr/local/share/locale/pt_BR/LC_MESSAGES/mac-spoof.mo minino-utils/usr/local/share/locale/pt_BR/LC_MESSAGES/;
        cp -a public/usr/local/share/locale/es/LC_MESSAGES/minino-login.mo minino-utils/usr/local/share/locale/es/LC_MESSAGES/;
        cp -a public/usr/local/share/locale/gl/LC_MESSAGES/minino-login.mo minino-utils/usr/local/share/locale/gl/LC_MESSAGES/;
        cp -a public/usr/local/share/locale/pt_BR/LC_MESSAGES/minino-login.mo minino-utils/usr/local/share/locale/pt_BR/LC_MESSAGES/;
        cp -a public/usr/local/bin/mac-spoof minino-utils/usr/local/bin/
        cp -a public/usr/local/share/applications/mac-spoof.desktop minino-utils/usr/local/share/applications/
        cp -a public/usr/local/bin/minino-login minino-utils/usr/local/bin/
        cp -a public/usr/local/share/applications/minino-login.desktop minino-utils/usr/local/share/applications/
        cp -a public/usr/local/bin/change-locale minino-utils/usr/local/bin/
        cp -a public/usr/local/share/applications/change-locale.desktop minino-utils/usr/local/share/applications/
        cp -a public/usr/local/bin/energy-display minino-utils/usr/local/bin/
        cp -a public/usr/local/share/applications/energy-display.desktop minino-utils/usr/local/share/applications/
        cp -a public/usr/local/bin/minino-myip minino-utils/usr/local/bin/
        cp -a public/usr/local/share/applications/minino-myip.desktop minino-utils/usr/local/share/applications/
        cp -a public/usr/local/bin/minino-toogle-network-applet minino-utils/usr/local/bin/
        cp -a public/usr/local/share/applications/minino-toogle-network-applet.desktop minino-utils/usr/local/share/applications/
        cp -a public/usr/local/bin/minino-style minino-utils/usr/local/bin/
        cp -a public/usr/local/share/applications/minino-style.desktop minino-utils/usr/local/share/applications/
        cp -a public/usr/local/share/applications/yad-color.desktop minino-utils/usr/local/share/applications/

    forAll
}

function mininoDesktopSettings(){
    DESCRIPTION="Tema de escritorio y de iconos de GALPon MiniNo 2.0";
    creaCarpeta;

    echo "20";sleep 1;echo "Creando estructura de carpetas"
        mkdir -p minino-desktop-settings/etc/lightdm/;
        mkdir -p minino-desktop-settings/etc/pam.d/;
        mkdir -p minino-desktop-settings/etc/skel/;
        mkdir -p minino-desktop-settings/usr/local/bin/;
        mkdir -p minino-desktop-settings/usr/local/share/desktop-directories/;
        mkdir -p minino-desktop-settings/usr/local/share/icons/
        mkdir -p minino-desktop-settings/usr/local/share/pixmaps/
        mkdir -p minino-desktop-settings/usr/share/icons/
        mkdir -p minino-desktop-settings/usr/share/lightdm-gtk-greeter/
        mkdir -p minino-desktop-settings/usr/share/lxde/
        mkdir -p minino-desktop-settings/usr/share/pixmaps/
        mkdir -p minino-desktop-settings/usr/share/profiles/
        mkdir -p minino-desktop-settings/usr/share/themes/
        mkdir -p minino-desktop-settings/usr/share/xsession/

    echo "40";sleep 1;echo "Copiando archivos"
        cp -a public/etc/lightdm/* minino-desktop-settings/etc/lightdm/
        cp -a public/etc/pam.d/* minino-desktop-settings/etc/pam.d/
        cp -a public/etc/skel minino-desktop-settings/etc/
        cp -a public/usr/local/bin/* minino-desktop-settings/usr/local/bin
        cp -a public/usr/local/share/desktop-directories/* minino-desktop-settings/usr/local/share/desktop-directories/
        cp -a public/usr/local/share/icons/* minino-desktop-settings/usr/local/share/icons/
        cp -a public/usr/local/share/pixmaps/* minino-desktop-settings/usr/local/share/pixmaps/
        cp -a public/usr/share/icons/* minino-desktop-settings/usr/share/icons/
        cp -a public/usr/share/lightdm-gtk-greeter/* minino-desktop-settings/usr/share/lightdm-greeter/
        cp -a public/usr/share/lxde/* minino-desktop-settings/usr/share/lxde/
        cp -a public/usr/share/pixmaps/* minino-desktop-settings/usr/share/pixmaps/
        cp -a public/usr/share/profiles/* minino-desktop-settings/usr/share/profiles/
        cp -a public/usr/share/themes/* minino-desktop-settings/usr/share/themes/
        cp -a public/usr/share/xsessions/* minino-desktop-settings/usr/share/xsessions/
        cp -a public/usr/local/share/applications/home.desktop minino-desktop-settings/usr/local/share/applications/
        cp -a public/usr/local/share/applications/network.desktop minino-desktop-settings/usr/local/share/applications/
        cp -a public/usr/local/share/applications/trash.desktop minino-desktop-settings/usr/local/share/applications/

    forAll
}

function mininoSystemSettings(){
    DESCRIPTION="Configuraciones de sistema de GALPon MiniNo";
    creaCarpeta;

    echo "20";sleep 1;echo "Creando estructura de carpetas"
        mkdir -p minino-system-settings/etc/;
        mkdir -p minino-system-settings/usr/local/share/dbus-1/;
        
    echo "40";sleep 1;echo "Copiando archivos"
        cp -a public/etc/* minino-system-settings/etc/
        rm -rf minino-system-settings/etc/lightdm;
        rm -rf minino-system-settings/etc/pam.d;
        cp -a public/usr/local/share/dbus-1/* minino-system-settings/usr/local/share/dbus-1/

    forAll
}

function libreOfficeMinino(){
    DESCRIPTION="Tema de iconos de LibreOffice para el escritorio predeterminado de GALPon MiniNo 2.0";
    creaCarpeta;


    echo "20";sleep 1;echo "Creando estructura de carpetas"
        mkdir -p libreoffice-minino/usr/share/libreoffice/;

    echo "40";sleep 1;echo "Copiando archivos"
        cp -a public/usr/share/libreoffice/* /libreoffice-minino/usr/share/libreoffice/

    forAll
}

function mininoKeyring(){
    DESCRIPTION="Llave GPG para el repositorio de GALPon MiniNo";
    creaCarpeta;

    echo "20";sleep 1;echo "Creando estructura de carpetas"
        mkdir -p minino-keyring/etc/apt/trusted.gpg.d/;

    echo "40";sleep 1;echo "Copiando archivos"
        cp -a public/etc/apt/trusted.gpg.d/* minino-keyring/etc/apt/trusted.gpg.d/

    forAll
}


function mininoLaunchers(){
    DESCRIPTION="Lanzadores .desktop para aplicaciones específicas de GALPon MiniNo";
    creaCarpeta;

    echo "20";sleep 1;echo "Creando estructura de carpetas"
        mkdir -p minino-launchers/usr/share/applications/;
        mkdir -p minino-launchers/usr/local/share/applications/;

    echo "40";sleep 1;echo "Copiando archivos"
        cp -a public/usr/share/applications/* minino-launchers/usr/share/applications/
        cp -a public/usr/local/share/applications/pysdm.desktop minino-launchers/usr/local/share/applications/

    forAll
}

function mininoYamahaFirmware(){
    DESCRIPTION="Firmware para el controlador de sonido YMF-744B [DS-1S Audio Controller]";
    creaCarpeta;

    echo "20";sleep 1;echo "Creando estructura de carpetas"
        mkdir -p minino-yamaha-firmware/lib/firmware/yamaha;

    echo "40";sleep 1;echo "Copiando archivos"
        cp -a public/lib/firmware/yamaha/* minino-yamaha-firmware/lib/firmware/yamaha/

    forAll
}


RET=$(yad --title "GeneraDeb" --text "¿Qué paquete queremos generar?"\
    --window-icon $DIRICO/tikal.png --image tikal \
    --form --field="Paquete:CB" "${lista1[@]}" --field="Versión:CB" "${lista2[@]}")

ret=$?
[ $ret != 0 ] && exit 0

# La salida tiene este formato: minino-langpack-gl|0.12|
# Extraer $NOMBRE_PAQUETE y $VERSION
NOMBRE_PAQUETE=`echo $RET | cut -d"|" -f1`
VERSION=`echo $RET | cut -d"|" -f2 `

case $RET in
    minino-langpack-gl*) mininoLangpackGL | progressBar ;;
    minino-langpack-es*) mininoLangpackES |progressBar;;
    minino-langpack-pt-br*) mininoLangpackPTBR | progressBar;;
    minino-utils*) mininoUtils | progressBar;;
    minino-desktop-settings*) mininoDesktopSettings | progressBar;;
    minino-system-settings*) mininoSystemSettings | progressBar;;
    libreoffice-minino*) libreOfficeMinino | progressBar;;
    minino-launchers*) mininoLaunchers | progressBar ;;
    minino-keyring*) mininoKeyring | progressBar ;;
    minino-yamaha-firmware*) mininoYamahaFirmware | progressBar ;;
esac

