1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | .POSIX:
# ---- on your machine ------------------------------------------------------
#
# make the renderer and the preview server, for this machine
# make preview render the repositories in preview/repos.txt and serve them
# make check go vet, gofmt, shellcheck, the Go tests and the node tests
# make fuzz fuzz the checks on pushed names and paths
# make screenshots retake the README's screenshots
#
# ---- for the server ----------------------------------------------------------
#
# make server dist/repo-render-OS-ARCH.tar.gz: the renderer built for
# the server, new-repo, the hook, the example configs,
# and install.sh, which installs them there (see
# docs/openbsd.md)
BINS = repo-render repo-render-preview
all: $(BINS)
$(BINS): FORCE
go build -trimpath -o $@ ./cmd/$@
# The server's OS and architecture: OpenBSD on amd64 unless you say.
SERVER_OS = openbsd
SERVER_ARCH = amd64
SERVER = repo-render-$(SERVER_OS)-$(SERVER_ARCH)
server: FORCE
rm -rf dist/$(SERVER)
mkdir -p dist/$(SERVER)/bin dist/$(SERVER)/share/repo-render dist/$(SERVER)/share/examples/repo-render
GOOS=$(SERVER_OS) GOARCH=$(SERVER_ARCH) CGO_ENABLED=0 go build -trimpath -ldflags='-s -w' \
-o dist/$(SERVER)/bin/repo-render ./cmd/repo-render
cp contrib/new-repo dist/$(SERVER)/bin/repo-render-new-repo
cp contrib/post-receive dist/$(SERVER)/share/repo-render/post-receive
cp examples/repo-render.yaml examples/httpd.conf dist/$(SERVER)/share/examples/repo-render/
cp contrib/install.sh dist/$(SERVER)/install.sh
tar -C dist -czf dist/$(SERVER).tar.gz $(SERVER)
@echo "dist/$(SERVER).tar.gz: copy it to the server, then there: tar -xzf $(SERVER).tar.gz && doas $(SERVER)/install.sh"
test:
go test ./...
node --test test/*_test.js
# Fuzz each untrusted-input check for FUZZTIME. `make test` runs only the
# seeds.
FUZZTIME = 30s
FUZZ = internal/config:FuzzValidBranchName internal/config:FuzzValidRepoName \
internal/render:FuzzValidPath internal/render:FuzzSanitizeTag \
internal/queue:FuzzParse internal/queue:FuzzAppendTake \
internal/markdown:FuzzResolve internal/markdown:FuzzRender \
internal/markdown:FuzzStripPandocMeta internal/render:FuzzThemeSVG \
internal/highlight:FuzzHTML internal/httpd:FuzzPattern
fuzz:
for f in $(FUZZ); do \
go test -run '^$$' -fuzz "^$${f#*:}$$" -fuzztime $(FUZZTIME) ./$${f%%:*} || exit 1; \
done
vet:
go vet ./...
gofmt -l . | (! grep .)
SHELL_SCRIPTS = contrib/install.sh contrib/new-repo contrib/post-receive preview/fetch.sh tools/create-repo tools/migrate-from-github
shellcheck:
shellcheck $(SHELL_SCRIPTS)
check: vet shellcheck test
# Local preview: fetch the repositories in preview/repos.txt, render them
# with preview/repo-render.yaml into .preview/, and serve the result.
PREVIEW_LISTEN = 127.0.0.1:8080
PREVIEW = ./repo-render --config preview/repo-render.yaml
preview-fetch:
preview/fetch.sh .preview/git preview/repos.txt
preview-render: repo-render preview-fetch
$(PREVIEW) render --all
preview: preview-render repo-render-preview
./repo-render-preview --listen $(PREVIEW_LISTEN) .preview/htdocs
preview-clean:
rm -rf .preview
# Retake the README's screenshots of the preview site. Needs node and firefox.
screenshots: preview-render repo-render-preview
node preview/screenshots.mjs ./repo-render-preview .preview/htdocs docs/screenshots
clean:
rm -rf $(BINS) dist .preview
FORCE:
.PHONY: all server test fuzz vet shellcheck check preview preview-fetch preview-render preview-clean screenshots clean FORCE
|