86 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Makefile
		
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Makefile
		
	
	
	
SHELL = bash
 | 
						|
UNAME := $(shell uname)
 | 
						|
ifeq ($(UNAME), Linux)
 | 
						|
CPU_CORES = $(shell N=$$(nproc); echo $$(( $$N > 4 ? 4 : $$N )))
 | 
						|
else
 | 
						|
CPU_CORES = $(shell N=$$(sysctl -n hw.physicalcpu); echo $$(( $$N > 4 ? 4 : $$N )))
 | 
						|
endif
 | 
						|
 | 
						|
# Install
 | 
						|
VENV = .venv
 | 
						|
export POETRY_VIRTUALENVS_IN_PROJECT=true
 | 
						|
 | 
						|
$(VENV):
 | 
						|
	$(MAKE) install
 | 
						|
 | 
						|
install:
 | 
						|
	poetry install --no-root
 | 
						|
	poetry run pip install --no-deps --editable ../api
 | 
						|
 | 
						|
clean:
 | 
						|
	git clean -xdf .
 | 
						|
 | 
						|
# Sphinx
 | 
						|
SPHINX_OPTS = -j $(CPU_CORES)
 | 
						|
SOURCE_DIR = .
 | 
						|
BUILD_DIR = _build
 | 
						|
 | 
						|
$(BUILD_DIR):
 | 
						|
	mkdir -p $(BUILD_DIR)
 | 
						|
 | 
						|
# Dev
 | 
						|
dev: $(VENV)
 | 
						|
	poetry run sphinx-autobuild . /tmp/_build/ --host 0.0.0.0 --port 8001
 | 
						|
 | 
						|
# I18n
 | 
						|
LOCALES = en_GB en_US fr
 | 
						|
 | 
						|
locale-generate: $(VENV)
 | 
						|
	poetry run sphinx-build -b gettext $(SOURCE_DIR) locales/gettext $(SPHINX_OPTS)
 | 
						|
 | 
						|
locale-update: $(VENV)
 | 
						|
	poetry run sphinx-intl update -p locales/gettext $(foreach locale,$(LOCALES),-l $(locale))
 | 
						|
 | 
						|
locale-prune-untranslated: $(VENV)
 | 
						|
	poetry run _scripts/locale-prune-untranslated.py
 | 
						|
 | 
						|
# Swagger
 | 
						|
SWAGGER_VERSION = 5.1.2
 | 
						|
SWAGGER_RELEASE_URL = https://github.com/swagger-api/swagger-ui/archive/refs/tags/v$(SWAGGER_VERSION).tar.gz
 | 
						|
SWAGGER_BUILD_DIR = swagger
 | 
						|
 | 
						|
swagger:
 | 
						|
	mkdir "$(BUILD_DIR)/$(SWAGGER_BUILD_DIR)"
 | 
						|
	curl -sSL "$(SWAGGER_RELEASE_URL)" | \
 | 
						|
		tar --extract \
 | 
						|
			--gzip \
 | 
						|
			--directory="$(BUILD_DIR)/$(SWAGGER_BUILD_DIR)" \
 | 
						|
			--strip-components=2 \
 | 
						|
			"swagger-ui-$(SWAGGER_VERSION)/dist"
 | 
						|
 | 
						|
	sed -i \
 | 
						|
		"s#https://petstore.swagger.io/v2/swagger.json#schema.yml#g" \
 | 
						|
		"$(BUILD_DIR)/$(SWAGGER_BUILD_DIR)/swagger-initializer.js"
 | 
						|
 | 
						|
	cp schema.yml "$(BUILD_DIR)/$(SWAGGER_BUILD_DIR)/schema.yml"
 | 
						|
 | 
						|
# Releases
 | 
						|
$(BUILD_DIR)/releases.json: $(BUILD_DIR)
 | 
						|
	../scripts/releases.py > "$@"
 | 
						|
 | 
						|
$(BUILD_DIR)/latest.txt: $(BUILD_DIR)
 | 
						|
	../scripts/releases.py -r -q latest.id > "$@"
 | 
						|
 | 
						|
releases: $(BUILD_DIR)/releases.json $(BUILD_DIR)/latest.txt
 | 
						|
 | 
						|
# Build
 | 
						|
build: $(VENV)
 | 
						|
	poetry run sphinx-build $(SOURCE_DIR) $(BUILD_DIR) $(SPHINX_OPTS)
 | 
						|
 | 
						|
build-translated: $(VENV) locale-prune-untranslated
 | 
						|
	for locale in $(LOCALES); do \
 | 
						|
		poetry run sphinx-build $(SOURCE_DIR) $(BUILD_DIR)/$$locale $(SPHINX_OPTS) -D language=$$locale; \
 | 
						|
	done
 | 
						|
 | 
						|
build-all: build build-translated releases swagger
 |