# SPDX-FileCopyrightText: Amolith <amolith@secluded.site>
#
# SPDX-License-Identifier: CC0-1.0

default: fmt lint staticcheck test vuln reuse

fmt:
    # Formatting all Go source code
    go install mvdan.cc/gofumpt@latest
    gofumpt -l -w .
    # Formatting all web source code
    npx prettier --write "**/*.html.tmpl" 

lint:
    # Linting Go source code
    golangci-lint run

staticcheck:
    # Performing static analysis
    go install honnef.co/go/tools/cmd/staticcheck@latest
    staticcheck ./...

test:
    # Running tests
    go test -v ./...

vuln:
    # Checking for vulnerabilities
    go install golang.org/x/vuln/cmd/govulncheck@latest
    govulncheck ./...

reuse:
    # Linting licenses and copyright headers
    reuse lint

build:
    # Building Willow
    CGO_ENABLED=0 go build -o willow -ldflags "-s -w -X main.version=`git describe --long 2>/dev/null | sed 's/\([^-]*-g\)/r\1/;s/-/./g'`" ./cmd

clean:
    # Cleaning up
    rm -rf willow out/

clean-all:
    # Removing build artifacts, willow.sqlite, config.toml, and data/ directory

    rm -rf willow out willow.sqlite config.toml data
