|
# Validatrix - Universal Source Code Validation Framework
|
|
# Makefile
|
|
|
|
NIMC = nim c
|
|
NIMC_MACROS =
|
|
SRC_DIR = src
|
|
TEST_DIR = tests
|
|
BIN_DIR = bin
|
|
|
|
.PHONY: all build test test-all test-nim test-python test-bash test-js test-php
|
|
.PHONY: test-html test-jinja test-json test-yaml test-toml test-mixed
|
|
.PHONY: debug lint clean rebuild coverage validate inspect help
|
|
|
|
all: build
|
|
|
|
# --- Build targets ---
|
|
|
|
build:
|
|
@mkdir -p $(BIN_DIR)
|
|
$(NIMC) $(NIMC_MACROS) --outdir:$(BIN_DIR) $(SRC_DIR)/validatrix.nim
|
|
|
|
build-debug:
|
|
@mkdir -p $(BIN_DIR)
|
|
$(NIMC) -d:validatrixDebug --outdir:$(BIN_DIR) $(SRC_DIR)/validatrix.nim
|
|
|
|
# --- Test targets ---
|
|
|
|
test: test-all
|
|
|
|
test-all:
|
|
$(NIMC) -r $(TEST_DIR)/test_all.nim
|
|
|
|
test-nim:
|
|
$(NIMC) -r $(TEST_DIR)/test_nim.nim
|
|
|
|
test-python:
|
|
$(NIMC) -r $(TEST_DIR)/test_python.nim
|
|
|
|
test-bash:
|
|
$(NIMC) -r $(TEST_DIR)/test_bash.nim
|
|
|
|
test-js:
|
|
$(NIMC) -r $(TEST_DIR)/test_javascript.nim
|
|
|
|
test-php:
|
|
$(NIMC) -r $(TEST_DIR)/test_php.nim
|
|
|
|
test-html:
|
|
$(NIMC) -r $(TEST_DIR)/test_html.nim
|
|
|
|
test-jinja:
|
|
$(NIMC) -r $(TEST_DIR)/test_jinja.nim
|
|
|
|
test-json:
|
|
$(NIMC) -r $(TEST_DIR)/test_json.nim
|
|
|
|
test-yaml:
|
|
$(NIMC) -r $(TEST_DIR)/test_yaml.nim
|
|
|
|
test-toml:
|
|
$(NIMC) -r $(TEST_DIR)/test_toml.nim
|
|
|
|
test-mixed:
|
|
$(NIMC) -r $(TEST_DIR)/test_mixed.nim
|
|
|
|
# --- Debug mode ---
|
|
|
|
debug: build-debug
|
|
$(NIMC) -d:validatrixDebug -r $(TEST_DIR)/test_all.nim
|
|
|
|
# --- Lint / static analysis ---
|
|
|
|
lint:
|
|
$(NIMC) --hints:on --warnings:on $(SRC_DIR)/validatrix.nim
|
|
|
|
# --- Cleanup ---
|
|
|
|
clean:
|
|
rm -rf $(BIN_DIR)
|
|
rm -f $(SRC_DIR)/*.exe
|
|
rm -f $(SRC_DIR)/*.o
|
|
rm -f $(TEST_DIR)/*.exe
|
|
rm -f $(TEST_DIR)/*.o
|
|
find . -name '*.exe' -delete
|
|
find . -name '*.o' -delete
|
|
|
|
rebuild: clean build
|
|
|
|
# --- Coverage (requires nim-coverage) ---
|
|
|
|
coverage:
|
|
$(NIMC) -d:validatrixCoverage -r $(TEST_DIR)/test_all.nim
|
|
|
|
# --- Validation command-line tool ---
|
|
|
|
validate: build
|
|
@echo "Usage: echo '<source>' | $(BIN_DIR)/validatrix validate --flavor=<lang>"
|
|
@echo " $(BIN_DIR)/validatrix validate --file=<path> [--flavor=<lang>]"
|
|
|
|
inspect: build
|
|
@echo "Usage: $(BIN_DIR)/validatrix inspect --file=<path> [--flavor=<lang>]"
|
|
@echo " $(BIN_DIR)/validatrix inspect --source=<code> --flavor=<lang>"
|
|
|
|
# --- Help ---
|
|
|
|
help:
|
|
@echo "Validatrix - Universal Source Code Validation Framework"
|
|
@echo ""
|
|
@echo "Targets:"
|
|
@echo " build - Compile the library"
|
|
@echo " build-debug - Compile with debug mode"
|
|
@echo " test - Run all tests (alias for test-all)"
|
|
@echo " test-all - Run all tests"
|
|
@echo " test-nim - Run Nim-specific tests"
|
|
@echo " test-python - Run Python-specific tests"
|
|
@echo " test-bash - Run Bash-specific tests"
|
|
@echo " test-js - Run JavaScript-specific tests"
|
|
@echo " test-php - Run PHP-specific tests"
|
|
@echo " test-html - Run HTML-specific tests"
|
|
@echo " test-jinja - Run Jinja-specific tests"
|
|
@echo " test-json - Run JSON-specific tests"
|
|
@echo " test-yaml - Run YAML-specific tests"
|
|
@echo " test-toml - Run TOML-specific tests"
|
|
@echo " test-mixed - Run mixed file tests"
|
|
@echo " debug - Run all tests in debug mode"
|
|
@echo " lint - Compile with full hints/warnings"
|
|
@echo " clean - Remove build artifacts"
|
|
@echo " rebuild - Clean and rebuild"
|
|
@echo " coverage - Run tests with coverage instrumentation"
|
|
@echo " validate - Validate source files"
|
|
@echo " inspect - Inspect source structure as JSON"
|
|
@echo " help - Show this help message"
|