##### Make runs with POSIX sh SHELL := /bin/sh .SHELLFLAGS := -ec # --- config (raw) --- CONTAINER_NAME_RAW ?= voka-player IMAGE_NAME_RAW ?= voka-player WORKDIR_RAW ?= /usr/voka # --- sanitized --- CONTAINER_NAME := $(strip $(CONTAINER_NAME_RAW)) IMAGE_NAME := $(strip $(IMAGE_NAME_RAW)) WORKDIR := $(strip $(WORKDIR_RAW)) # helper: exec if running, otherwise one-off run; force legacy eslint mode define run_in_container @if docker ps --format '{{.Names}}' | grep -q '^$(CONTAINER_NAME)$$'; then \ echo "→ Using running container: '$(CONTAINER_NAME)'"; \ echo "+ docker exec -w '$(WORKDIR)' '$(CONTAINER_NAME)' /bin/sh -lc 'export ESLINT_USE_FLAT_CONFIG=0; $(1)'"; \ docker exec -w "$(WORKDIR)" "$(CONTAINER_NAME)" /bin/sh -lc 'export ESLINT_USE_FLAT_CONFIG=0; $(1)'; \ else \ echo "→ Running one-off container from image: '$(IMAGE_NAME)'"; \ echo "+ docker run --rm -v '$$(pwd):$(WORKDIR)' -w '$(WORKDIR)' --entrypoint /bin/sh '$(IMAGE_NAME)' -lc 'export ESLINT_USE_FLAT_CONFIG=0; $(1)'"; \ docker run --rm \ -v "$$(pwd):$(WORKDIR)" \ -w "$(WORKDIR)" \ --entrypoint /bin/sh \ "$(IMAGE_NAME)" \ -lc 'export ESLINT_USE_FLAT_CONFIG=0; $(1)'; \ fi endef .PHONY: lint lint-fix format lint-staged ci-check vars-debug lint: $(call run_in_container,npx eslint --ext .ts,.tsx src) lint-fix: $(call run_in_container,npx eslint --ext .ts,.tsx src --fix) format: $(call run_in_container,npx prettier --write .) lint-staged: $(call run_in_container,npx lint-staged --debug) ci-check: $(call run_in_container,npx eslint --ext .ts,.tsx src) $(call run_in_container,npx prettier --check .) vars-debug: @printf "CONTAINER_NAME='%s'\nIMAGE_NAME='%s'\nWORKDIR='%s'\n" "$(CONTAINER_NAME)" "$(IMAGE_NAME)" "$(WORKDIR)"