hugoruscitti/pilas

View on GitHub
Makefile

Summary

Maintainability
Test Coverage
N=
V=

VERSION=1.4.12
VPS_HOST=162.243.50.192

all:
    @echo ""
    @echo "Comandos disponibles versión: (${VERSION})"
    @echo ""
    @echo "  $(V)actualizar$(N)  Actualiza pilas y los submodulos."
    @echo "  $(V)ejecutar$(N)    Ejecuta pilas sin instarlo."
    @echo "  $(V)utest$(N)       Lanza todos los test de unidad."
    @echo "  $(V)ui$(N)          Actualiza todas las interfaces de usuario."
    @echo "  $(V)manual$(N)      Actualiza el manual y lo copia a data/manual."
    @echo "  $(V)api$(N)         Actualiza la API y la copia a data/api."
    @echo "  $(V)rm_pyc$(N)      Borra todos los archivos .pyc del proyecto."
    @echo "  $(V)clean$(N)       Limpia los archivos temporales."
    @echo ""
    @echo "  $(V)log$(N)         Muestra los ultimos commits respecto del tag anterior."
    @echo "  $(V)version_p$(N)   (patch) Genera el changelog y la informacion de versión."
    @echo "  $(V)version_m$(N)   (minor) Genera el changelog y la informacion de versión."
    @echo "  $(V)version_M$(N)   (mayor) Genera el changelog y la informacion de versión."
    @echo "  $(V)ver_sync$(N)    Sube la nueva version al servidor."
    @echo "  $(V)ejemplos$(N)    Prueba los ejemplos uno a uno."
    @echo ""
    @echo "  $(V)dist$(N)        Genera todos los binarios (excepto .deb)"
    @echo "   $(V)distmac$(N)     Genera la versión compilada para macos."
    @echo "   $(V)distwin$(N)     Genera la versión compilada para windows."
    @echo ""
    @echo "  $(V)upload$(N)       Intenta subir los binarios de windows y mac a dropbox."
    @echo ""

actualizar:
    git pull
    git submodule update --init

ejecutar:
    python bin/pilasengine

test_mac:
    python bin/pilasengine

ejecutar_mac: test_mac

.PHONY: test ejemplos

version_p:
    @bumpversion --current-version ${VERSION} patch setup.py setup-mac.py pilasengine/__init__.py ./extras/actualizar_version.py ./extras/instalador.nsi Makefile --list
    make post_version

version_m:
    @bumpversion --current-version ${VERSION} minor setup.py setup-mac.py pilasengine/__init__.py ./extras/actualizar_version.py ./extras/instalador.nsi Makefile --list
    make post_version

version_M:
    @bumpversion --current-version ${VERSION} major setup.py setup-mac.py pilasengine/__init__.py ./extras/actualizar_version.py ./extras/instalador.nsi Makefile --list
    make post_version

post_version:
    @python extras/actualizar_version.py
    @echo "Es recomendable escribir el comando que genera los tags y sube todo a github:"
    @echo ""
    @echo "make ver_sync"

ver_sync:
    git commit -am 'release ${VERSION}'
    git tag '${VERSION}'
    git push
    git push --all
    git push --tags

utest:
    @python -m unittest discover pilasengine/tests '*.py'

manual:
    mkdir -p data/manual
    cd ../pilas-manual; make generar;
    cp -R -f ../pilas-manual/site/* data/manual/
    git add data/manual
    git commit -m "actualizando manual."

api:
    mkdir -p data/api
    cd ../pilas-api; make compilar;
    cp -R -f ../pilas-api/build/html/* data/api/
    git add data/api
    git commit -m "actualizando api."

ui:
    pyuic4 -xo pilasengine/asistente/asistente_base.py pilasengine/asistente/asistente.ui
    pyuic4 -xo pilasengine/manual/manual_base.py pilasengine/manual/manual.ui
    pyuic4 -xo pilasengine/api/api_base.py pilasengine/api/api.ui
    pyuic4 -xo pilasengine/interprete/interprete_base.py pilasengine/interprete/interprete.ui
    pyuic4 -xo pilasengine/interprete/editor_ui.py pilasengine/interprete/editor.ui
    pyuic4 -xo pilasengine/interprete/lanas_ui.py pilasengine/interprete/lanas.ui
    pyuic4 -xo pilasengine/configuracion/configuracion_base.py pilasengine/configuracion/configuracion.ui
    @echo "Quitando la marca de fechas."
    @sed -i '' '/Created:/d' pilasengine/asistente/asistente_base.py
    @sed -i '' '/Created:/d' pilasengine/manual/manual_base.py
    @sed -i '' '/Created:/d' pilasengine/interprete/interprete_base.py
    @sed -i '' '/Created:/d' pilasengine/interprete/editor_ui.py
    @sed -i '' '/Created:/d' pilasengine/interprete/lanas_ui.py
    @sed -i '' '/Created:/d' pilasengine/configuracion/configuracion_base.py


clean:
    rm -r -f *.dmg
    rm -r -f dist build


directorio_dist:
    @echo "Limpiando el directorio dist."
    @rm -r -f dist
    @mkdir -p dist

dist: directorio_dist distmac distwin
    @echo "listo..."
    @echo ""
    @echo "$(V)Usa el comando 'make upload' para subir esta version a dropbox $(N)"
    @echo "$(V)y por ssh a static.pilas-engine.com.ar.$(N)"
    @echo ""

upload:
    mkdir -p ~/Dropbox/Public/releases/pilas-engine/${VERSION}
    cp dist/pilas-engine-${VERSION}.dmg ~/Dropbox/Public/releases/pilas-engine/${VERSION}/
    cp dist/pilas-engine_${VERSION}.exe ~/Dropbox/Public/releases/pilas-engine/${VERSION}/
    @echo ""
    @echo "$(V)Se están subiendo los archivos a dropbox y static.pilas-engine.com.ar$(N)"
    @echo ""
    @echo "$(V)Recordá que luego de subir estos archivos deberías actualizar la web.$(N)"
    @echo "$(V) (con el comando: make release, make deploy)$(N)"
    @echo ""
    make upload_to_vps

upload_to_vps:
    scp -r ~/Dropbox/Public/releases/pilas-engine/${VERSION} ${VPS_HOST}:/home/hugoruscitti/static.pilas-engine.com.ar/pilas-engine/

distmac:
    @mkdir -p tmp
    @echo "Limpiando escenario"
    @rm -r -f __MACOSX
    @rm -r -f pilas-engine.app
    @rm -r -f pilas-engine.app.zip
    @echo "Copiando plantilla de aplicación para osx desde dropbox"
    @cp ~/Dropbox/pilas-engine-bins/pilas-engine.app.zip ./
    @echo "Descomprimiendo..."
    @unzip pilas-engine.app.zip > tmp/log_unzip_pilas-engine.zip.log
    @echo "Actualizando contenido..."
    @rm pilas-engine.app.zip
    @rm -r -f pilas-engine.app/Contents/Resources/data
    @rm -r -f pilas-engine.app/Contents/Resources/lib/python2.7/pilasengine
    @rm -r -f pilas-engine.app/Contents/Resources/lib/python2.7/pilas
    @cp -r -f data pilas-engine.app/Contents/Resources/
    @cp -r -f pilasengine pilas-engine.app/Contents/Resources/lib/python2.7/
    @cp -r -f pilas pilas-engine.app/Contents/Resources/lib/python2.7/
    @rm -r -f dist/pilas-engine-${VERSION}.dmg
    @echo "Generando imagen dist/pilas-engine-${VERSION}.dmg (esto tarda un huevo, paciencia ...)"
    @mkdir -p dist
    #@hdiutil create -srcfolder pilas-engine.app dist/pilas-engine-${VERSION}.dmg > tmp/log_creacion_dmg.log
    @hdiutil create -srcfolder pilas-engine.app dist/pilas-engine-${VERSION}.dmg -size 400mb > tmp/log_creacion_dmg.log
    @rm -r -f __MACOSX
    @rm -r -f pilas-engine.app
    @rm -r -f pilas-engine.app.zip
    @echo "Todo OK!"
    @echo "Los archivos generados están en el directorio dist/"
    @echo "Se abre una ventana para mostrarlos."
    @open dist


distmac_anterior: clean
    python setup-mac.py py2app --no-strip > log_distmac.txt
    hdiutil create dist/pilas-engine-${VERSION}.dmg -srcfolder ./dist/pilas-engine.app -size 200mb
    @echo "Los archivos generados están en el directorio dist/"
    @echo "Se abre una ventana para mostrarlos."
    @open dist

rm_pyc: clean
    find . -name "*.pyc" -exec rm -rf {} \;

ejemplos:
    python extras/probar_ejemplos.py

distwin:
    @mkdir -p tmp
    @echo "Limpiando escenario"
    @rm -r -f tmp/pilas-engine
    @rm -r -f tmp/__MACOSX
    @echo "Copiando plantilla de aplicación para windows desde dropbox"
    @cp ~/Dropbox/pilas-engine-bins/pilas-engine-cargador-windows.zip ./tmp
    @echo "Descomprimiendo..."
    @unzip tmp/pilas-engine-cargador-windows.zip -d tmp/ > tmp/log_unzip_pilas-engine.zip.log
    @echo "Actualizando contenido..."
    @cp -r -f data tmp/pilas-engine/
    @cp -r -f pilasengine tmp/pilas-engine/
    @cp -r -f pilas tmp/pilas-engine/
    @cp extras/instalador.nsi tmp/pilas-engine
    @echo "Generando el instalador para windows..."
    @makensis tmp/pilas-engine/instalador.nsi > tmp/log_instalador.log
    @mv tmp/pilas-engine/pilas-engine_${VERSION}.exe dist/
    @echo "Todo OK!"
    @echo "Los archivos generados están en el directorio dist/"
    @echo "Se abre una ventana para mostrarlos."
    @open dist

log:
    git log ${VERSION}...HEAD --graph --oneline --decorate