MastodonTootFollower/Makefile

51 lines
1.8 KiB
Makefile

.ONESHELL:
SHELL := bash
# https://github.com/JordanMartinez/purescript-cookbook/blob/master/makefile
# set -e = bash immediately exits if any command has a non-zero exit status.
# set -u = a reference to any shell variable you haven't previously
# defined -- with the exceptions of $* and $@ -- is an error, and causes
# the program to immediately exit with non-zero code.
# set -o pipefail = the first non-zero exit code emitted in one part of a
# pipeline (e.g. `cat file.txt | grep 'foo'`) will be used as the exit
# code for the entire pipeline. If all exit codes of a pipeline are zero,
# the pipeline will emit an exit code of 0.
.SHELLFLAGS := -eu -o pipefail -c
.PHONY: all
all: prod
.PHONY: prod
prod: requirements.txt ## Starts a production webserver.
source venv/bin/activate
export PYTHONPATH="${PYTHONPATH}:src"
python3 src/mastodon_toot_follower/server/waitress_server.py
.PHONY: dev
dev: requirements.txt ## Starts a development webserver.
source venv/bin/activate
export PYTHONPATH="${PYTHONPATH}:src"
python3 src/mastodon_toot_follower/server/flask_server.py
.PHONY: cli
cli: requirements.txt ## Runs the commandline version.
source venv/bin/activate
export PYTHONPATH="${PYTHONPATH}:src"
python3 src/mastodon_toot_follower/cli.py $(MASTODON_TOOT_URL)
.PHONY: requirements.txt
requirements.txt: ## Creates a virtual environment including the python dependencies.
if ! [ -d venv ]; then
python3 -m venv venv
source venv/bin/activate
python3 -m pip install -r requirements.txt
fi
.PHONY: clean
clean: ## Removes all created files.
rm -rf venv ~/.MastodonTootFollower
sudo rm -rf data
.PHONY: help
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'