144 lines
3.5 KiB
Makefile
144 lines
3.5 KiB
Makefile
# =============================================================================
|
|
# AngelaMos | 2026
|
|
# Justfile
|
|
# =============================================================================
|
|
# portia — Secrets scanner for codebases and git repositories
|
|
# =============================================================================
|
|
|
|
set export
|
|
set shell := ["bash", "-uc"]
|
|
|
|
project := file_name(justfile_directory())
|
|
version := `git describe --tags --always 2>/dev/null || echo "dev"`
|
|
|
|
# =============================================================================
|
|
# Default
|
|
# =============================================================================
|
|
|
|
default:
|
|
@just --list --unsorted
|
|
|
|
# =============================================================================
|
|
# Linting and Formatting
|
|
# =============================================================================
|
|
|
|
[group('lint')]
|
|
lint *ARGS:
|
|
golangci-lint run --timeout=5m {{ARGS}}
|
|
|
|
[group('lint')]
|
|
lint-fix:
|
|
golangci-lint run --timeout=5m --fix
|
|
|
|
[group('lint')]
|
|
format:
|
|
golangci-lint fmt
|
|
|
|
[group('lint')]
|
|
tidy:
|
|
go mod tidy
|
|
|
|
[group('lint')]
|
|
vet:
|
|
go vet ./...
|
|
|
|
# =============================================================================
|
|
# Testing
|
|
# =============================================================================
|
|
|
|
[group('test')]
|
|
test *ARGS:
|
|
go test -race ./... {{ARGS}}
|
|
|
|
[group('test')]
|
|
test-v *ARGS:
|
|
go test -race -v ./... {{ARGS}}
|
|
|
|
[group('test')]
|
|
cover:
|
|
go test -race -cover ./...
|
|
|
|
[group('test')]
|
|
cover-html:
|
|
go test -race -coverprofile=coverage.out ./...
|
|
go tool cover -html=coverage.out -o coverage.html
|
|
@echo "Coverage report: coverage.html"
|
|
|
|
# =============================================================================
|
|
# CI / Quality
|
|
# =============================================================================
|
|
|
|
[group('ci')]
|
|
ci: lint test
|
|
@echo "All checks passed."
|
|
|
|
[group('ci')]
|
|
check: lint vet
|
|
|
|
# =============================================================================
|
|
# Development
|
|
# =============================================================================
|
|
|
|
[group('dev')]
|
|
run *ARGS:
|
|
go run ./cmd/portia {{ARGS}}
|
|
|
|
[group('dev')]
|
|
dev-scan:
|
|
go run ./cmd/portia scan testdata/
|
|
|
|
[group('dev')]
|
|
dev-git:
|
|
go run ./cmd/portia git .
|
|
|
|
[group('dev')]
|
|
dev-json:
|
|
go run ./cmd/portia scan --format json testdata/
|
|
|
|
[group('dev')]
|
|
dev-sarif:
|
|
go run ./cmd/portia scan --format sarif testdata/
|
|
|
|
[group('dev')]
|
|
dev-rules:
|
|
go run ./cmd/portia config rules
|
|
|
|
# =============================================================================
|
|
# Build (Production)
|
|
# =============================================================================
|
|
|
|
[group('prod')]
|
|
build:
|
|
go build -ldflags="-s -w" -o bin/portia ./cmd/portia
|
|
@echo "Built: bin/portia ($(du -h bin/portia | cut -f1))"
|
|
|
|
[group('prod')]
|
|
build-debug:
|
|
go build -o bin/portia ./cmd/portia
|
|
|
|
[group('prod')]
|
|
install:
|
|
go install ./cmd/portia
|
|
|
|
# =============================================================================
|
|
# Utilities
|
|
# =============================================================================
|
|
|
|
[group('util')]
|
|
info:
|
|
@echo "Project: {{project}}"
|
|
@echo "Version: {{version}}"
|
|
@echo "Go: $(go version | cut -d' ' -f3)"
|
|
@echo "OS: {{os()}} ({{arch()}})"
|
|
@echo "Module: $(head -1 go.mod | cut -d' ' -f2)"
|
|
|
|
[group('util')]
|
|
update:
|
|
go get -u ./...
|
|
go mod tidy
|
|
|
|
[group('util')]
|
|
clean:
|
|
-rm -rf bin/ coverage.out coverage.html
|
|
@echo "Cleaned build artifacts."
|