Skip to content

Makefile ⚒️

Nicolò Vescera edited this page Apr 1, 2023 · 2 revisions

Per automatizzare alcuni comandi utili per lo sviluppo di questa libreria è stato scritto un Makefile. Di seguito troverai i principali comandi implementati e una breve descrizione al loro utilizzo.

Se sei in dubbio prova con:

make

questo stamperà il menu con tutti i possibili comandi.

Targets

social-network-link-prediction Makefile guide.

Install commands:
       make install      : Install library in the system.

       make install-dev  : Create dev environment (virtualenv) and
                           install dev requirements.

       make install-doc  : Insitall requirement to generate documentation.
                           Needs the environment installed (run make install-dev)

       make install-test : Install requirements for the testing.
                           Needs the environment installed (run make install-dev)

Clean commands:
       make clean-env        : Removes all environment files.
       make clean-build      : Remove all build files.
       make clean-docstrings : Remove all docstrings (.patch) files.
       make clean-docs       : Remove all documentation files.
       make clean            : Runs all clean commands.

Auto-generation commands:
   code:
       make code-format : Format all python files (using yapf).
       make code-check  : Checks for warnings and errors. (using pylama linter).
       make code        : Runs -format and -check.

   documentation:
       make docstrings     : Generate docstring for all python files (need to manually apply patches).
       make docs  : Generate documentation from python docstrings.

   make build : Runs the build project process
   make tests : Runs the unit tests

Publish commands:
       make publish-release : Publish the library into the Pypi's release repo
       make publish-testing : Publish the library into the Pypi's testing repo

Install targets

Check

uso: make check

Controlla che i requirements (contenuti nella variabile REQUIREMENTS) siano soddisfatti. Utile per capire se alcuni comandi di installazione potranno o no avere successo.

install

uso: make install

Installa al libreria partendo dalla cartella attuale. La libreria viene installata all'interno del sistema e NON nell'ambiente virtuale.

install-dev

uso: make install-dev

Installa l'ambiente virtuale per lo sviluppo e tutte le dipendenze necessarie. Questo comando è necessario per poter anche installare i successivi -test e -doc. Viene eseguito prima il target check e solo se ha successo viene avviata l'installazione.

install-doc

uso: make install-doc

Installa all'interno dell'ambiente di sviluppo (deve essere stato installato precedentemente con make install-dev) le dipendenze necessarie per generare la documentazione del codice.

install-test

uso: make install-test

Installa all'interno dell'ambiente di sviluppo (deve essere stato installato precedentemente con make install-dev) le dipendenze necessarie per eseguire i test automatici del codice.

Clean targets

clean-docs

uso: make clean-docs

Rimuove tutti i file generati durante la creazione della documentazione.

clean-build

uso: make clean-build

Rimuove tutti i file generati durante la fase di building della libreria.

clean-env

uso: make clean-env

Rimuove l'ambiente di sviluppo con tutte le dipendenze installate.

clean-docstrings

uso: make clean-docstrings

Rimuove tutti i file generati durante la fase di creazione delle docstrings all'interno del codice.

clean

uso: make clean

Esegue tutti i target di pulizia.

Auto-generation targets

code-check

uso: make check
uso: make check -e CODE_IGNORE_LEVEL=["W"/"E"/"W,E"] ignora solo i warning, solo gli errori, sia i warning che gli errori

Controlla (tramite pylama) la presenza di warnings o errori (possono essere ignorati). Se sono presenti torna un errore.

code-format

uso: make code-format

In automatico formatta tutto il codice (utilizzando yapf).

code

uso: make code

Esegue nell'ordine i target code-format e code-check. Utile se si vuole formattare il codice e controllare comunque la presenza di warnings o errors.

docstrings

uso: make docstrings
uso: make docstrings -e DOCSTRINGS_FORMAT=["numpydoc"/"google"/"javadoc"/"reST"] specifica quale tipo di stile utilizzare per le docstrings.

Inserisce automaticamente le docstrings alle funzioni che non le hanno (tramite pyment).
Bisogna prestare un attimo di attenzione quando si utilizza questo comando: i file non vengono automaticamente modificati, ma vengono creati dei file .patch che serviranno per applicare le varie modifiche. Se si esegue l'applicazione delle patch e nuovamente il target, per via di un problema di pyment, le nuove docstrings verranno corrotte. Quindi è molto importante applicare le patch SOLO ai file che sappiamo non avere docstrings altrimenti si rischia di corrompere quelle già esistenti.

Per applicare una patch utilizzare il comando:

git apply filename.py.patch

documentation

uso: make docs
uso: make docs -e DOCS_FORMAT=[""/"--html"/"--pdf"] specifica in che formato produrre la documentazione. Se lasciato vuoto sarà in Markdown. uso: make docs -e DOCS_LATEX=True/False specifica se attivare o meno il rendering delle formule in LaTex.

Genera automaticamente la documentazione partendo dalle docstrings presenti nei file python.

build

uso: make build

Genera la build della libreria per poi essere pubblicata su Pypi.

Publish targets

publish-release

uso: make publish-release

Pubblica la build della libreria all'interno della repo di release di Pypi.

publish-testing

uso: make publish-testing

Pubblica la build della libreria all'interno della repo di testing di Pypi.