dmd-readme-api
Version:
A jsdoc2md template plugin generating elegant, compact one-page APIs in markdown, suitable for embedding in a README.md.
108 lines (82 loc) • 2.79 kB
Plain Text
SRC:=.
DIST:=dist
QA:=qa
DRA_IGNORE_PATHS=-not -path "*/node_modules/*" -not -path "*/.git/*" -not -path "*/dist/*" -not -path "*/coverage/*"
DRA_DATA_SELECTOR=\( -path "*/test/data/*" -o -path "*/test/data-*/*" -o -path "*/test-data/*" \)
# all test data (cli and lib)
DRA_TEST_DATA_SRC:=$(shell find $(SRC) -type f $(DRA_DATA_SELECTOR) $(DRA_IGNORE_PATHS))
DRA_JS_SELECTOR=\( -name "*.js" -o -name "*.cjs" -o -name "*.mjs" -o -name "*.jsx" \)
DRA_TEST_SELECTOR=\( -name "*.test.*js" -o -path "*/test/*" \)
# all source, non-test files (cli and lib)
DRA_ALL_JS_FILES_SRC:=$(shell find $(SRC) $(DRA_JS_SELECTOR) -not $(DRA_DATA_SELECTOR) -type f $(DRA_IGNORE_PATHS))
DRA_ALL_NON_TEST_JS_FILES_SRC:=$(shell find $(SRC) -type f $(DRA_JS_SELECTOR) -not $(DRA_DATA_SELECTOR) -not $(DRA_TEST_SELECTOR) $(DRA_IGNORE_PATHS))
#####
# build rules
#####
build: # noop
#####
# test rules
#####
DRA_JEST:=npx jest
DRA_JEST_CONFIG:=$(shell npm explore @liquid-labs/sdlc-resource-jest -- pwd)/dist/jest.config.js
DRA_TEST_REPORT:=$(QA)/unit-test.txt
DRA_TEST_PASS_MARKER:=$(QA)/.unit-test.passed
DRA_COVERAGE_REPORTS:=$(QA)/coverage
TEST_TARGETS+=$(DRA_TEST_REPORT) $(DRA_TEST_PASS_MARKER) $(DRA_COVERAGE_REPORTS)
PRECIOUS_TARGETS+=$(DRA_TEST_REPORT)
$(DRA_TEST_PASS_MARKER) $(DRA_TEST_REPORT) ./coverage &: package.json $(DRA_ALL_JS_FILES_SRC) $(DRA_TEST_DATA_SRC)
mkdir -p $(dir $@)
echo -n 'Test git rev: ' > $(DRA_TEST_REPORT)
git rev-parse HEAD >> $(DRA_TEST_REPORT)
( set -e; set -o pipefail; \
( \
SRJ_CWD_REL_PACKAGE_DIR='.' \
$(DRA_JEST) \
--config=$(DRA_JEST_CONFIG) \
--runInBand \
$(TEST) 2>&1 \
) \
| tee -a $(DRA_TEST_REPORT); \
touch $(DRA_TEST_PASS_MARKER) )
$(DRA_COVERAGE_REPORTS): $(DRA_TEST_PASS_MARKER) ./coverage
rm -rf $(DRA_COVERAGE_REPORTS)
mkdir -p $(DRA_COVERAGE_REPORTS)
cp -r ./coverage/* $(DRA_COVERAGE_REPORTS)
test: $(TEST_TARGETS)
#####
# end test
#####
#####
# lint rules
#####
ESLINT:=npx eslint
LINT_REPORT:=$(QA)/lint.txt
LINT_PASS_MARKER:=$(QA)/.lint.passed
PRECIOUS_TARGETS+=$(LINT_REPORT)
LINT_TARGETS+=$(LINT_REPORT) $(LINT_PASS_MARKER)
LINT_IGNORE_PATTERNS:=--ignore-pattern '$(DIST)/**/*'
$(LINT_REPORT) $(LINT_PASS_MARKER) &: $(ALL_JS_FILES_SRC)
mkdir -p $(dir $@)
echo -n 'Test git rev: ' > $(LINT_REPORT)
git rev-parse HEAD >> $(LINT_REPORT)
( set -e; set -o pipefail; \
$(ESLINT) \
--ext .cjs,.js,.mjs,.cjs,.xjs \
$(LINT_IGNORE_PATTERNS) \
. \
| tee -a $(LINT_REPORT); \
touch $(LINT_PASS_MARKER) )
lint-fix:
@( set -e; set -o pipefail; \
$(ESLINT) \
--ext .js,.mjs,.cjs,.xjs \
$(LINT_IGNORE_PATTERNS) \
--fix . )
lint: $(LINT_TARGETS)
#####
# end lint
#####
qa: test lint
all: build
.DEFAULT_GOAL:=build