meta: switch to justfile for task organization
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: Ib4000ab597f94b2dd3dccf1e31fce3a76a6a6964
This commit is contained in:
parent
ae505188fc
commit
7584eb76e1
3 changed files with 101 additions and 0 deletions
|
|
@ -78,6 +78,7 @@ install(TARGETS nix-ir-plugin LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/n
|
||||||
add_executable(regression_test
|
add_executable(regression_test
|
||||||
tests/regression_test.cpp
|
tests/regression_test.cpp
|
||||||
src/irc/serializer.cpp
|
src/irc/serializer.cpp
|
||||||
|
src/irc/parser.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(regression_test PRIVATE
|
target_include_directories(regression_test PRIVATE
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,8 @@
|
||||||
ninja
|
ninja
|
||||||
bear
|
bear
|
||||||
clang-tools
|
clang-tools
|
||||||
|
just
|
||||||
|
entr
|
||||||
];
|
];
|
||||||
|
|
||||||
env.NIX_PLUGINABI = "0.2";
|
env.NIX_PLUGINABI = "0.2";
|
||||||
|
|
|
||||||
98
justfile
Normal file
98
justfile
Normal file
|
|
@ -0,0 +1,98 @@
|
||||||
|
# Default recipe, show available commands
|
||||||
|
default:
|
||||||
|
@just --list
|
||||||
|
|
||||||
|
# Build all targets
|
||||||
|
build:
|
||||||
|
cmake --build build
|
||||||
|
|
||||||
|
# Clean build artifacts
|
||||||
|
clean:
|
||||||
|
rm -rf build
|
||||||
|
find tests -name '*.nixir' -delete
|
||||||
|
|
||||||
|
# Configure and build from scratch
|
||||||
|
rebuild: clean
|
||||||
|
cmake -B build -G Ninja
|
||||||
|
cmake --build build
|
||||||
|
|
||||||
|
# Run unit tests
|
||||||
|
test-unit:
|
||||||
|
./build/regression_test
|
||||||
|
|
||||||
|
# Run compilation tests (do all fixtures compile?)
|
||||||
|
test-compile:
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
total=0
|
||||||
|
success=0
|
||||||
|
for f in tests/fixtures/*.nix; do
|
||||||
|
total=$((total+1))
|
||||||
|
if ./build/nix-irc "$f" "${f%.nix}.nixir" 2>&1 | grep -q "Done!"; then
|
||||||
|
success=$((success+1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "Compiled: $success/$total test files"
|
||||||
|
[ $success -eq $total ]
|
||||||
|
|
||||||
|
# Run integration tests
|
||||||
|
test-integration:
|
||||||
|
./tests/integration/run.sh
|
||||||
|
|
||||||
|
# Run all tests
|
||||||
|
test: test-unit test-compile test-integration
|
||||||
|
@echo "All tests passed"
|
||||||
|
|
||||||
|
# Run benchmarks
|
||||||
|
bench:
|
||||||
|
./tests/benchmark/run.sh
|
||||||
|
|
||||||
|
# Compile a single Nix file to IR
|
||||||
|
compile FILE OUTPUT="":
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
if [ -z "{{OUTPUT}}" ]; then
|
||||||
|
file="{{FILE}}"
|
||||||
|
output="${file%.nix}.nixir"
|
||||||
|
else
|
||||||
|
output="{{OUTPUT}}"
|
||||||
|
fi
|
||||||
|
./build/nix-irc "{{FILE}}" "$output"
|
||||||
|
|
||||||
|
# Load plugin and evaluate Nix expression
|
||||||
|
eval FILE:
|
||||||
|
nix-instantiate --plugin-files ./build/nix-ir-plugin.so --eval --strict "{{FILE}}"
|
||||||
|
|
||||||
|
# Format C++ code with clang-format
|
||||||
|
format:
|
||||||
|
find src tests -name '*.cpp' -o -name '*.h' | xargs clang-format -i
|
||||||
|
|
||||||
|
# Run clang-tidy on source files
|
||||||
|
lint:
|
||||||
|
find src -name '*.cpp' | xargs clang-tidy --fix
|
||||||
|
|
||||||
|
# Show project statistics
|
||||||
|
stats:
|
||||||
|
@echo "Lines of code:"
|
||||||
|
@find src -name '*.cpp' -o -name '*.h' | xargs wc -l | tail -1
|
||||||
|
@echo ""
|
||||||
|
@echo "Test files:"
|
||||||
|
@find tests/fixtures -name '*.nix' | wc -l
|
||||||
|
@echo ""
|
||||||
|
@echo "Build status:"
|
||||||
|
@ls -lh build/nix-irc build/nix-ir-plugin.so build/regression_test 2>/dev/null || echo "Not built"
|
||||||
|
|
||||||
|
# Run a quick smoke test
|
||||||
|
smoke:
|
||||||
|
./build/nix-irc tests/fixtures/simple.nix /tmp/smoke.nixir
|
||||||
|
nix-instantiate --plugin-files ./build/nix-ir-plugin.so --eval tests/integration/simple_eval.nix
|
||||||
|
|
||||||
|
# Generate IR from a Nix file and inspect it
|
||||||
|
inspect FILE:
|
||||||
|
./build/nix-irc "{{FILE}}" /tmp/inspect.nixir
|
||||||
|
@echo "IR bundle size:"
|
||||||
|
@ls -lh /tmp/inspect.nixir | awk '{print $5}'
|
||||||
|
@echo "Magic number:"
|
||||||
|
@xxd -l 4 /tmp/inspect.nixir
|
||||||
|
|
||||||
|
# Watch mode, rebuild on file changes
|
||||||
|
watch:
|
||||||
|
find src tests -name '*.cpp' -o -name '*.h' | entr -c just build test-unit
|
||||||
Loading…
Add table
Add a link
Reference in a new issue