1# SPDX-FileCopyrightText: Amolith <amolith@secluded.site>
 2#
 3# SPDX-License-Identifier: CC0-1.0
 4
 5GOOS := env("GOOS", `go env GOOS`)
 6GOARCH := env("GOARCH", `go env GOARCH`)
 7
 8default: fmt lint staticcheck test vuln reuse
 9
10fmt:
11    # Formatting all Go source code
12    go install mvdan.cc/gofumpt@latest
13    gofumpt -l -w .
14
15lint:
16    # Linting Go source code
17    golangci-lint run
18
19staticcheck:
20    # Performing static analysis
21    go install honnef.co/go/tools/cmd/staticcheck@latest
22    staticcheck ./...
23
24test:
25    # Running tests
26    go test -v ./...
27
28vuln:
29    # Checking for vulnerabilities
30    go install golang.org/x/vuln/cmd/govulncheck@latest
31    govulncheck ./...
32
33reuse:
34    # Linting licenses and copyright headers
35    reuse lint
36
37build:
38    # Building lunatask-mcp-server
39    CGO_ENABLED=0 GOOS={{GOOS}} GOARCH={{GOARCH}} go build -o lunatask-mcp-server -ldflags "-s -w -X main.version=`git describe --long 2>/dev/null | sed 's/\([^-]*-g\)/r\1/;s/-/./g'`" .
40
41run:
42    # Running lunatask-mcp-server
43    CGO_ENABLED=0 GOOS={{GOOS}} GOARCH={{GOARCH}} go run -ldflags "-s -w -X main.version=`git describe --long 2>/dev/null | sed 's/\([^-]*-g\)/r\1/;s/-/./g'`" .
44
45pack:
46    # Packing lunatask-mcp-server
47    upx --best --brute -o lunatask-mcp-server.min lunatask-mcp-server
48    mv lunatask-mcp-server.min lunatask-mcp-server
49
50clean:
51    # Removing build artifacts
52    rm -rf lunatask-mcp-server
53
54clean-all:
55    # Removing build artifacts and config.toml
56
57    rm -rf lunatask-mcp-server config.toml