################################################################################# # GLOBALS # ################################################################################# PROJECT_NAME = prompt-injection PYTHON_VERSION = 3.10 PYTHON_INTERPRETER = python ################################################################################# # COMMANDS # ################################################################################# ## Install Python Dependencies .PHONY: requirements requirements: $(PYTHON_INTERPRETER) -m pip install -U pip $(PYTHON_INTERPRETER) -m pip install -r requirements.txt ## Delete all compiled Python files .PHONY: clean clean: find . -type f -name "*.py[co]" -delete find . -type d -name "__pycache__" -delete ## Lint using flake8 and black (use `make format` to do formatting) .PHONY: lint lint: flake8 prompt_injection isort --check --diff --profile black prompt_injection black --check --config pyproject.toml prompt_injection ## Format source code with black .PHONY: format format: black --config pyproject.toml prompt_injection ## Set up python interpreter environment .PHONY: create_environment create_environment: conda create --name $(PROJECT_NAME) python=$(PYTHON_VERSION) -y @echo ">>> conda env created. Activate with:\nconda activate $(PROJECT_NAME)" ################################################################################# # PROJECT RULES # ################################################################################# ################################################################################# # Self Documenting Commands # ################################################################################# .DEFAULT_GOAL := help define PRINT_HELP_PYSCRIPT import re, sys; \ lines = '\n'.join([line for line in sys.stdin]); \ matches = re.findall(r'\n## (.*)\n[\s\S]+?\n([a-zA-Z_-]+):', lines); \ print('Available rules:\n'); \ print('\n'.join(['{:25}{}'.format(*reversed(match)) for match in matches])) endef export PRINT_HELP_PYSCRIPT help: @python -c "${PRINT_HELP_PYSCRIPT}" < $(MAKEFILE_LIST)