Cybersecurity-Projects/PROJECTS/intermediate/credential-enumeration/Justfile

125 lines
3.5 KiB
Makefile

# =============================================================================
# ©AngelaMos | 2026
# Justfile
# =============================================================================
# credenum — Post-access credential exposure detection for Linux systems
# =============================================================================
set export
set shell := ["bash", "-uc"]
bin := "bin/credenum"
src := "src/harvester.nim"
version := `git describe --tags --always 2>/dev/null || echo "dev"`
# =============================================================================
# Default
# =============================================================================
default:
@just --list --unsorted
# =============================================================================
# Development
# =============================================================================
[group('dev')]
build:
@mkdir -p bin
nim c -o:{{bin}} {{src}}
@echo "Built: {{bin}} ($(du -h {{bin}} | cut -f1))"
[group('dev')]
run *ARGS: build
./{{bin}} {{ARGS}}
[group('dev')]
scan *ARGS: build
./{{bin}} --target $HOME {{ARGS}}
[group('dev')]
check:
nim check {{src}}
# =============================================================================
# Build (Production)
# =============================================================================
[group('prod')]
release:
@mkdir -p bin
nim c -d:release -d:lto --opt:size -o:{{bin}} {{src}}
strip -s {{bin}} 2>/dev/null || true
@echo "Release: {{bin}} ($(du -h {{bin}} | cut -f1))"
[group('prod')]
release-static:
@mkdir -p bin
nim c -d:release -d:musl -d:lto --opt:size -o:{{bin}} {{src}}
strip -s {{bin}} 2>/dev/null || true
@echo "Static release: {{bin}} ($(du -h {{bin}} | cut -f1))"
[group('prod')]
release-small: release-static
upx --best {{bin}}
@echo "Compressed: {{bin}} ($(du -h {{bin}} | cut -f1))"
[group('prod')]
build-x86:
@mkdir -p bin
nim c -d:release -d:zigcc -d:crossX86 -d:lto --opt:size -o:bin/credenum-x86_64 {{src}}
@echo "Cross-compiled: bin/credenum-x86_64"
[group('prod')]
build-arm64:
@mkdir -p bin
nim c -d:release -d:zigcc -d:crossArm64 -d:lto --opt:size -o:bin/credenum-aarch64 {{src}}
@echo "Cross-compiled: bin/credenum-aarch64"
# =============================================================================
# Testing
# =============================================================================
[group('test')]
test:
nim c -r --path:src tests/test_all.nim
[group('test')]
docker-build:
docker build -t credenum-test -f tests/docker/Dockerfile .
[group('test')]
docker-test: docker-build
docker run --rm credenum-test
# =============================================================================
# Formatting
# =============================================================================
[group('lint')]
fmt:
nph src/
[group('lint')]
fmt-check:
nph --check src/
# =============================================================================
# Utilities
# =============================================================================
[group('util')]
info:
@echo "Project: credential-enumeration"
@echo "Version: {{version}}"
@echo "Nim: $(nim --version | head -1)"
@echo "OS: {{os()}} ({{arch()}})"
@echo "Binary: {{bin}}"
@test -f {{bin}} && echo "Size: $(du -h {{bin}} | cut -f1)" || echo "Size: (not built)"
[group('util')]
clean:
-rm -rf bin/ nimcache/
-find . -name "nimcache" -type d -exec rm -rf {} + 2>/dev/null
@echo "Cleaned build artifacts."