93 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
SHELL:=/usr/bin/env bash
 | 
						|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
# Makefile
 | 
						|
# NOTE: Do not change the contents of this file!
 | 
						|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
include .env
 | 
						|
 | 
						|
################################
 | 
						|
# VARIABLES
 | 
						|
################################
 | 
						|
 | 
						|
ARTEFACT_NAME:=${APPNAME}
 | 
						|
PYTHON:=python3
 | 
						|
ifeq ($(OS),Windows_NT)
 | 
						|
ARTEFACT_NAME:=${APPNAME}.exe
 | 
						|
PYTHON=py -3
 | 
						|
endif
 | 
						|
 | 
						|
################################
 | 
						|
# Macros
 | 
						|
################################
 | 
						|
 | 
						|
define create_folder_if_not_exists
 | 
						|
	@if ! [ -d "$(1)" ]; then mkdir "$(1)"; fi
 | 
						|
endef
 | 
						|
 | 
						|
define create_folder_if_not_exists
 | 
						|
	@touch "$(1)";
 | 
						|
endef
 | 
						|
 | 
						|
define delete_if_file_exists
 | 
						|
	@if [ -f "$(1)" ]; then rm "$(1)"; fi
 | 
						|
endef
 | 
						|
 | 
						|
define delete_if_folder_exists
 | 
						|
	@if [ -d "$(1)" ]; then rm -rf "$(1)"; fi
 | 
						|
endef
 | 
						|
 | 
						|
define clean_all_files
 | 
						|
	@find . -type f -name "$(1)" -exec basename {} \;
 | 
						|
	@find . -type f -name "$(1)" -exec rm {} \; 2> /dev/null
 | 
						|
endef
 | 
						|
 | 
						|
define clean_all_folders
 | 
						|
	@find . -type d -name "$(1)" -exec basename {} \;
 | 
						|
	@find . -type d -name "$(1)" -exec rm -rf {} \; 2> /dev/null
 | 
						|
endef
 | 
						|
 | 
						|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
# TARGETS
 | 
						|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
################################
 | 
						|
# BASIC TARGETS: setup, build, run
 | 
						|
################################
 | 
						|
setup: check-system-requirements setup-no-checks
 | 
						|
setup-no-checks:
 | 
						|
	@${PYTHON} -m pip install -r "requirements"
 | 
						|
run:
 | 
						|
	@${PYTHON} src/main.py;
 | 
						|
all: setup run
 | 
						|
################################
 | 
						|
# TARGETS: testing
 | 
						|
################################
 | 
						|
unit-test: unit-tests
 | 
						|
unit-tests:
 | 
						|
	@cd tests && \
 | 
						|
		${PYTHON} -m unittest discover -v \
 | 
						|
			--start-directory "." \
 | 
						|
			--top-level-directory ".." \
 | 
						|
			--pattern "test_*.py"
 | 
						|
################################
 | 
						|
# AUXILIARY (INTERNAL TARGETS)
 | 
						|
################################
 | 
						|
check-system-requirements:
 | 
						|
	@if ! ( ${PYTHON} --version >> /dev/null 2> /dev/null ); then \
 | 
						|
		echo "Install Python 3.10.x first!"; \
 | 
						|
		exit 1; \
 | 
						|
	fi
 | 
						|
	@${PYTHON} --version
 | 
						|
################################
 | 
						|
# TARGETS: clean
 | 
						|
################################
 | 
						|
clean:
 | 
						|
	@echo "All system artefacts will be force removed."
 | 
						|
	@$(call clean_all_files,.DS_Store)
 | 
						|
	@echo "All build artefacts will be force removed."
 | 
						|
	@$(call clean_all_folders,__pycache__)
 | 
						|
	@$(call clean_all_folders,.pytest_cache)
 | 
						|
	@$(call delete_if_file_exists,dist/${ARTEFACT_NAME})
 | 
						|
	@exit 0
 |