chore: add justfile

Amolith created

Change summary

justfile | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 57 insertions(+)

Detailed changes

justfile 🔗

@@ -0,0 +1,57 @@
+# SPDX-FileCopyrightText: Amolith <amolith@secluded.site>
+#
+# SPDX-License-Identifier: CC0-1.0
+
+GOOS := env("GOOS", `go env GOOS`)
+GOARCH := env("GOARCH", `go env GOARCH`)
+VERSION := `git describe --long 2>/dev/null | sed 's/\([^-]*-g\)/r\1/;s/-/./g'`
+
+default: fmt lint staticcheck test vuln reuse
+
+fmt:
+    # Formatting all Go source code
+    go install mvdan.cc/gofumpt@latest
+    gofumpt -l -w .
+
+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 soft-serve
+    CGO_ENABLED=0 GOOS={{GOOS}} GOARCH={{GOARCH}} go build -o soft -ldflags "-s -w -X main.version={{VERSION}}" ./cmd/soft
+
+run:
+    # Running soft-serve
+    CGO_ENABLED=0 GOOS={{GOOS}} GOARCH={{GOARCH}} go run -ldflags "-s -w -X main.version={{VERSION}}" ./cmd/soft serve
+
+pack:
+    # Packing soft-serve
+    upx --best -qo soft.min soft
+    mv soft.min soft
+
+clean:
+    # Removing build artifacts
+    rm -rf soft
+
+clean-all:
+    # Removing build artifacts and config.toml
+    rm -rf soft data/