clone
ssh://git@git.notashelf.dev:33/notashelf/nixir.gitCommit 13a38f707b97
tarballunverified3 files changed+101-0
@@ -78,6 +78,7 @@ install(TARGETS nix-ir-plugin LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/n add_executable(regression_test tests/regression_test.cpp src/irc/serializer.cpp+ src/irc/parser.cpp ) target_include_directories(regression_test PRIVATE@@ -30,6 +30,8 @@ ninja bear clang-tools+ just+ entr ]; env.NIX_PLUGINABI = "0.2";@@ -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