@ECHO OFF
:: --------------------------------------------------------------------------------------------------------------------------------------
:: project: GarageCalc1 Window-Exe Generator
:: summary: create a GarageCalc1-executable for Windows (version with no-console-windows as well as version with console windows for traces)
:: file: pyinstaller.cmd
:: date:         version    author
:: 2021-06-27    1          paul salajean               
:: --------------------------------------------------------------------------------------------------------------------------------------
SET version="v0.1"
SET release_dir="D:\Temp\Prog\ownCloud\profp@uberspace\transfer"

SET prev_dir=%cd%
SET reinstall_venv="true"
SET do_zip="false"

CD ..

ECHO Creating GarageCalc1 Windows.exe-version in folder %cd%\dist
PAUSE
REM pyinstaller --noconfirm --log-level=ERROR ^
REM     --onedir --nowindow ^
REM     --add-data="README;." ^
REM     --add-data="image1.png;img" ^
REM     --add-data="img;doc;ui" ^
REM     --add-data="LICENSE.txt;changelog.md;GarageCalc1.bat" ^
REM     --add-binary="libfoo.so;lib" ^
REM     --hidden-import=secret1 ^
REM     --hidden-import=secret2 ^
REM     --icon=.\img\GarageCalc1.ico ^
REM     --debug=imports ^
REM     --key=N0T1me40pp0ssum5
REM     --paths=.\src ^
REM     GarageCalc1.spec
REM The key-string is a string of 16 characters which is used to encrypt each file of Python byte-code before it is stored in the archive inside the executable file.
REM This feature uses the "tinyaes" module internally for the encryption.
REM

::one dir:
ECHO ...Running...

RMDIR /S /Q .\dist>nul 
RMDIR /S /Q .\build>nul

::Use Virtual env
IF %reinstall_venv%=="false" GOTO PYINSTALL
ECHO Installing virtual env as ".\env2"...
RMDIR /S /Q .\env2>NUL
python -m venv env2
CALL .\env2\Scripts\activate.bat

ECHO Installing necessary python packages...
python -m pip install --upgrade pip
python -m pip install -r requirements.txt

:PYINSTALL
IF %reinstall_venv%=="false" CALL .\env2\Scripts\activate.bat
ECHO Running "pyinstaller"...
REM pyinstaller .\main.py --name=GarageCalc1 --noconfirm --console --clean --onedir --log-level=ERROR --hidden-import=PySide2.QtXml --icon=.\img\GarageCalc1.ico --add-data="LICENSE;." --add-data="README.md;." --add-data="changelog.md;." --add-data="*.ui;." --add-data="img;.\img"
pyinstaller .\src\main.py --name=GarageCalc1 --noconfirm --windowed --clean --onefile --log-level=ERROR --hidden-import=PySide2.QtXml ^
    --icon=.\img\icons8-garage-32.ico ^
    --add-data="LICENSE.txt;." ^
    --add-data="README.md;." ^
    --add-data="changelog.md;." ^
    --add-data="requirements.txt;." ^
    --add-data=".\src\*.ui;." ^
    --add-data="img;.\img"

::MOVE .\dist\GarageCalc1\*.md .\dist\
::MOVE .\dist\GarageCalc1\LICENSE .\dist\

::clean-up img-folder
::MOVE .\dist\GarageCalc1\img .\dist\img>NUL

::Remove temp dir and files
DEL /Q *.spec>NUL
RMDIR /S /Q .\build

::Create self extracting archive
IF %do_zip%=="false" GOTO END
::-mx0 = Don't compress at all - just copy the contents to archive.
::-mx1 = Consumes least time, but compression is low.
::-mx3 = Better than -mx1.
::-mx5 = This is default (compression is normal).
::-mx7 = Maximum compression.
::-mx9 = Ultra compression.
"C:\Program Files\7-zip\7z.exe" a %release_dir%\GarageCalc1_%version%_portable.exe -mx9 -sfx7z.sfx .\dist\*

::Disable Virtual env
CALL .\env2\Scripts\deactivate.bat

:END
CD %prev_dir%

ECHO Done. Check %prev_dir%\..\dist
IF %do_zip%=="true" ECHO Done. Check %release_dir%

PAUSE