Cybersecurity-Projects/PROJECTS/beginner/firewall-rule-engine/Justfile

86 lines
1.6 KiB
Makefile

# ©AngelaMos | 2026
# Justfile
set shell := ["bash", "-uc"]
project := "fwrule"
version := "1.0.0"
src := "src/"
bin := "bin/" + project
default:
@just --list --unsorted
[group('build')]
build:
v -o {{bin}} {{src}}
[group('build')]
release:
v -prod -o {{bin}} {{src}}
@ls -lh {{bin}}
[group('test')]
test:
v test {{src}}
[group('test')]
test-verbose:
v -stats test {{src}}
[group('dev')]
fmt:
v fmt -w {{src}}
[group('dev')]
fmt-check:
v fmt -verify {{src}}
[group('dev')]
run *ARGS:
v -o {{bin}} {{src}} && ./{{bin}} {{ARGS}}
[group('dev')]
load FILE:
@just run load {{FILE}}
[group('dev')]
analyze FILE:
@just run analyze {{FILE}}
[group('dev')]
harden *ARGS:
@just run harden {{ARGS}}
[group('dev')]
export FILE *ARGS:
@just run export {{FILE}} {{ARGS}}
[group('dev')]
diff F1 F2:
@just run diff {{F1}} {{F2}}
[group('util')]
clean:
rm -rf bin/
find . -name '*.tmp.c' -delete
[group('util')]
info:
@echo "{{project}} v{{version}}"
@echo "V compiler: $(v version)"
@echo "Platform: $(uname -s)/$(uname -m)"
[group('util')]
smoke: build
./{{bin}} version
./{{bin}} help
./{{bin}} load testdata/iptables_basic.rules
./{{bin}} load testdata/nftables_basic.rules
./{{bin}} analyze testdata/iptables_conflicts.rules
./{{bin}} harden -s ssh,http,https -f iptables
./{{bin}} harden -s ssh,http,https -f nftables
./{{bin}} export testdata/iptables_basic.rules -f nftables
./{{bin}} diff testdata/iptables_basic.rules testdata/nftables_basic.rules
@echo "All smoke tests passed"