Newer
Older
thu-learn-downloader-optimized / Makefile
NAME := thu-learn-downloader

ASSETS := assets
BUILD  := build
DIST   := dist

SYSTEM  != python -c 'import platform; print(platform.system().lower())'
MACHINE != python -c 'import platform; print(platform.machine().lower())'
EXE     := $(if $(filter windows,$(SYSTEM)),.exe)

DIST_TARGET := $(DIST)/$(NAME)-$(SYSTEM)-$(MACHINE)$(EXE)

all:

clean:
	@ $(RM) --recursive --verbose $(ASSETS)
	@ $(RM) --recursive --verbose $(BUILD)
	@ $(RM) --recursive --verbose $(DIST)
	@ $(RM) --verbose out.gif
	@ find . -type d -name '__pycache__' -exec $(RM) --recursive --verbose '{}' +
	@ find . -type f -name '*.spec' -delete

demo: $(ASSETS)/demo.png

demo-deploy: $(ASSETS)/demo.png scripts/deploy-gh-pages.sh
	bash scripts/deploy-gh-pages.sh $(ASSETS) assets

dist: $(DIST_TARGET)

docs: main.py
	typer $< utils docs

run: openssl.cnf
	OPENSSL_CONF=$< poetry run $(NAME)

setup:
	micromamba --yes --name=$(NAME) create libpython-static python=3.11
	micromamba --yes --name=$(NAME) run poetry install

###############
# Auxiliaries #
###############

$(ASSETS)/demo.png: demo.tape
	@ mkdir --parents --verbose $(@D)
	vhs $<

$(DIST_TARGET): main.py
	@ mkdir --parents --verbose $(@D)
ifneq ($(SYSTEM), windows)
	python -m nuitka --standalone --onefile --output-filename=$(@F) --output-dir=$(@D) --remove-output  $<
else
	pyinstaller --distpath=$(DIST) --workpath=$(BUILD) --onefile --name=$(NAME)-$(SYSTEM)-$(MACHINE) $<
endif