53 lines
1.7 KiB
Makefile
53 lines
1.7 KiB
Makefile
##### 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)"
|