Files
go-telegram/Makefile
T
lukaszraczylo 1088b7f4d7 docs: auto-generate markdown reference + soften README
- Add gomarkdoc-driven reference docs in docs/reference/, regenerated
  automatically by 'make regen' alongside the api/ codegen
- New 'make docs' target installs gomarkdoc on first run; 'make
  docs-check' is a CI gate
- Fold doc-clean assertion into existing codegen-clean job (single
  diff check covers spec + api + reference)
- Rewrite README header: logo via <picture>, friendlier tagline,
  emoji-led 'Why you'll like it' bullets instead of Why-table
- Drop duplicate echo snippet, soften 'Codegen pipeline' section into
  'Keeping up with Telegram'
- Link reference from README, Pages nav, and a new Markdown reference
  card on index.html (target = GitHub source view, renders .md natively)
2026-05-09 14:14:37 +01:00

103 lines
3.7 KiB
Makefile

.PHONY: test test-race lint vet integration regen snapshot regen-from-fixture test-update-golden clean clean-generated audit audit-drift docs docs-check help
GO ?= go
help:
@echo "Targets:"
@echo " test - run unit tests"
@echo " test-race - run unit tests with race detector"
@echo " lint - go vet + staticcheck"
@echo " integration - run integration suite (requires TELEGRAM_BOT_TOKEN)"
@echo " snapshot - capture HTML snapshot from live API (Plan 2)"
@echo " regen - regenerate api/ from latest snapshot (Plan 2)"
@echo " regen-from-fixture - deterministic regen from pinned fixture (Plan 2)"
@echo " test-update-golden - refresh golden test fixtures (Plan 2)"
@echo " audit - report any-typed/bool fallbacks in current IR"
@echo " audit-drift - audit + compare against HEAD's IR for signature changes"
@echo " docs - regenerate markdown reference docs into docs/reference/"
@echo " docs-check - assert docs/reference/ is up to date (CI gate)"
@echo " clean-generated - delete generated api/*.gen.go and internal/spec/api.json"
@echo " clean - clean-generated + transient artefacts (binaries, coverage)"
test:
$(GO) test ./...
test-race:
$(GO) test -race ./...
vet:
$(GO) vet ./...
lint: vet
@which staticcheck > /dev/null || (echo "install staticcheck: go install honnef.co/go/tools/cmd/staticcheck@latest" && exit 1)
staticcheck ./...
integration:
$(GO) test -tags=integration -v ./test/integration/...
SCRAPE_INPUT ?= testdata/html/snapshot_2026-05-08.html
SCRAPE_OUTPUT ?= internal/spec/api.json
snapshot:
./scripts/snapshot.sh
regen: clean-generated
$(GO) run ./cmd/scrape -input testdata/html/latest.html -output $(SCRAPE_OUTPUT)
$(GO) run ./cmd/audit -ir $(SCRAPE_OUTPUT)
$(GO) run ./cmd/genapi -input $(SCRAPE_OUTPUT) -outdir api
$(GO) test ./api/...
$(MAKE) docs
regen-from-fixture: clean-generated
$(GO) run ./cmd/scrape -input $(SCRAPE_INPUT) -output $(SCRAPE_OUTPUT)
$(GO) run ./cmd/audit -ir $(SCRAPE_OUTPUT)
$(GO) run ./cmd/genapi -input $(SCRAPE_OUTPUT) -outdir api
$(GO) test ./api/...
$(MAKE) docs
audit:
$(GO) run ./cmd/audit -ir $(SCRAPE_OUTPUT)
audit-drift:
$(GO) run ./cmd/audit -ir $(SCRAPE_OUTPUT) -drift
test-update-golden:
$(GO) test -run TestEmit -update ./cmd/genapi/...
$(GO) test -run TestScrape -update ./cmd/scrape/...
# Regenerate godoc-style markdown reference docs into docs/reference/.
# Auto-installs gomarkdoc on first run.
DOC_PACKAGES := \
./client \
./transport \
./dispatch \
./dispatch/conversation \
./dispatch/filters/message \
./dispatch/filters/callback \
./dispatch/filters/inline \
./dispatch/filters/chatmember \
./dispatch/filters/chatjoinrequest \
./dispatch/filters/precheckoutquery \
./api
docs:
@which gomarkdoc > /dev/null || (echo "installing gomarkdoc..." && $(GO) install github.com/princjef/gomarkdoc/cmd/gomarkdoc@v1.1.0)
gomarkdoc -o 'docs/reference/{{.Dir}}.md' $(DOC_PACKAGES)
docs-check: docs
@git diff --exit-code docs/reference/ || (echo "docs/reference/ is stale — run 'make docs' and commit" && exit 1)
# clean-generated removes ONLY codegen output. Source code (cmd/scrape,
# cmd/genapi, runtime helpers) is untouched. Run before regen to avoid
# orphan files lingering when the IR shrinks (renamed/removed methods).
clean-generated:
rm -f api/*.gen.go api/*_gen_test.go
rm -f internal/spec/api.json
# clean removes generated output AND transient artefacts (binaries
# accidentally left at repo root, coverage reports). Source code is
# never touched.
clean: clean-generated
rm -f coverage.out coverage.html
rm -f echo webhook genapi scrape callback files inline conversation middleware stateful