mirror of
https://github.com/isocpp/CppCoreGuidelines.git
synced 2024-03-22 13:30:58 +08:00
66 lines
2.1 KiB
Makefile
66 lines
2.1 KiB
Makefile
|
# This Makefile is supposed to run on the Travis CI server and also locally
|
||
|
# it assumes the nodejs package managaer npm is installed
|
||
|
|
||
|
# make magic not needed
|
||
|
MAKEFLAGS += --no-builtin-rules
|
||
|
.SUFFIXES:
|
||
|
|
||
|
BUILD_DIR=build
|
||
|
SOURCEFILE = CppCoreGuidelines.md
|
||
|
SOURCEPATH = ../$(SOURCEFILE)
|
||
|
|
||
|
.PHONY: default
|
||
|
default: all
|
||
|
|
||
|
.PHONY: all
|
||
|
all: \
|
||
|
check-markdown \
|
||
|
check-references
|
||
|
|
||
|
|
||
|
$(BUILD_DIR):
|
||
|
mkdir -p $(BUILD_DIR)
|
||
|
|
||
|
#### clean: remove all files generated by the productive rules
|
||
|
.PHONY: clean
|
||
|
clean:
|
||
|
rm -rf $(BUILD_DIR)
|
||
|
|
||
|
#### distclean: remove all helper executables that may be downloaded by the Makefile
|
||
|
.PHONY: distclean
|
||
|
distclean:
|
||
|
rm -rf ./nodejs/node_modules
|
||
|
|
||
|
|
||
|
#### check markdown
|
||
|
|
||
|
## run remark markdown checker based on configuration in .remarkrc
|
||
|
.PHONY: check-markdown
|
||
|
check-markdown: nodejs/node_modules/remark nodejs/remark/.remarkrc $(SOURCEPATH) $(BUILD_DIR) Makefile
|
||
|
## run remark, paste output to temporary file
|
||
|
cd nodejs; ./node_modules/.bin/remark ../$(SOURCEPATH) --no-color -q --config-path ./remark/.remarkrc 1> ../$(BUILD_DIR)/$(SOURCEFILE).fixed --frail
|
||
|
|
||
|
## show a diff with changes remark suggests
|
||
|
.PHONY: show-diff
|
||
|
show-diff: nodejs/node_modules/remark nodejs/remark/.remarkrc $(SOURCEPATH) $(BUILD_DIR) Makefile
|
||
|
cd nodejs; ./node_modules/.bin/remark ../$(SOURCEPATH) --no-color -q --config-path ./remark/.remarkrc 1> ../$(BUILD_DIR)/$(SOURCEFILE).fixed
|
||
|
## compare temporary file to original, error and fail with message if differences exist
|
||
|
diff $(SOURCEPATH) $(BUILD_DIR)/$(SOURCEFILE).fixed -u3 || \
|
||
|
(echo "Error: remark found bad markdown syntax, see output above" && false)
|
||
|
|
||
|
|
||
|
.PHONY: check-references
|
||
|
check-references: $(SOURCEPATH) $(BUILD_DIR) Makefile
|
||
|
## check references unique
|
||
|
rm $(BUILD_DIR)/$(SOURCEFILE).uniq
|
||
|
grep -oP '(?<=<a name=")[^\"]+' $(SOURCEPATH) | uniq -d > $(BUILD_DIR)/$(SOURCEFILE).uniq
|
||
|
## check if output has data
|
||
|
if [ -s "build/CppCoreGuidelines.md.uniq" ]; then echo 'Found duplicate anchors:'; cat $(BUILD_DIR)/$(SOURCEFILE).uniq; false; fi
|
||
|
|
||
|
|
||
|
#### install npm modules
|
||
|
# install/update npm dependencies defined in file package.json
|
||
|
# requires npm (nodejs package manager)
|
||
|
nodejs/node_modules/%: nodejs/package.json
|
||
|
@cd nodejs; npm install
|