-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
92 lines (74 loc) · 4.35 KB
/
Copy pathMakefile
File metadata and controls
92 lines (74 loc) · 4.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
.PHONY: build install run test clean dev lint bump-patch bump-minor docs-gen docs-build docs-serve docs-clean
# ─── Metadata ────────────────────────────────────────────────
APP := gherkio
PKG := github.com/muhfaris/gherkio/cmd
VERSION := $(shell grep 'Version\s*=' cmd/root.go | head -1 | sed "s/.*= \"//;s/\"//")
# ─── Build flags ──────────────────────────────────────────────
COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "none")
DATE := $(shell date -u +%Y-%m-%dT%H:%M:%SZ)
LDFLAGS := -s -w \
-X $(PKG).Version=$(VERSION) \
-X $(PKG).Commit=$(COMMIT) \
-X $(PKG).BuildDate=$(DATE)
# ─── Development — run from source (fast, no build) ──────────
dev:
go run . $(ARGS)
run: dev
# ─── Build ────────────────────────────────────────────────────
build:
go build -ldflags="$(LDFLAGS)" -o $(APP) .
# ─── Install to PATH ──────────────────────────────────────────
install: build
@echo "Installing $(APP) $(VERSION) ($(COMMIT))…"
sudo cp $(APP) /usr/local/bin/$(APP)
@echo "✅ $(APP) installed: $$(which $(APP))"
@which $(APP) && $(APP) --version
# ─── Test ─────────────────────────────────────────────────────
test:
go test ./...
test-verbose:
go test -v ./...
# ─── Clean ────────────────────────────────────────────────────
clean:
rm -f $(APP)
# ─── Lint ─────────────────────────────────────────────────────
lint:
go vet ./...
# ─── Version bumping ──────────────────────────────────────────
# Updates the hardcoded default in cmd/root.go.
# (The goreleaser ldflags still override on tagged releases.)
bump-patch:
@echo "Bumping patch: $(VERSION) → $$(echo $(VERSION) | awk -F. '{print $$1"."$$2"."$$3+1}')"
@sed -i "s/Version\s*= \"$(VERSION)\"/Version = \"$$(echo $(VERSION) | awk -F. '{print $$1"."$$2"."$$3+1}')\"/" cmd/root.go
$(eval VERSION := $(shell grep 'Version\s*=' cmd/root.go | head -1 | sed "s/.*= \"//;s/\"//"))
@echo "✅ Now v$(VERSION)"
bump-minor:
@echo "Bumping minor: $(VERSION) → $$(echo $(VERSION) | awk -F. '{print $$1"."$$2+1".0"}')"
@sed -i "s/Version\s*= \"$(VERSION)\"/Version = \"$$(echo $(VERSION) | awk -F. '{print $$1"."$$2+1".0"}')\"/" cmd/root.go
$(eval VERSION := $(shell grep 'Version\s*=' cmd/root.go | head -1 | sed "s/.*= \"//;s/\"//"))
@echo "✅ Now v$(VERSION)"
bump-major:
@echo "Bumping major: $(VERSION) → $$(echo $(VERSION) | awk -F. '{print $$1+1".0.0"}')"
@sed -i "s/Version\s*= \"$(VERSION)\"/Version = \"$$(echo $(VERSION) | awk -F. '{print $$1+1".0.0"}')\"/" cmd/root.go
$(eval VERSION := $(shell grep 'Version\s*=' cmd/root.go | head -1 | sed "s/.*= \"//;s/\"//"))
@echo "✅ Now v$(VERSION)"
# ─── Documentation ────────────────────────────────────────────
docs-gen:
@echo "Generating Cobra CLI command manual pages…"
go run gendoc.go
@echo "✅ CLI docs generated under docs/book/src/cli/"
docs-build: docs-gen
@echo "Compiling Gherkio mdBook…"
cd docs/book && mdbook build
@echo "Copying Interactive Playground assets into build bundle…"
cp -R docs/book/playground docs/book/book/
@echo "Copying AI crawler configuration into build bundle…"
cp docs/book/robots.txt docs/book/book/robots.txt
@echo "✅ Gherkio mdBook compiled. Open docs/book/book/index.html to view local pages."
docs-serve: docs-gen
@echo "Starting local mdBook livereload server…"
cd docs/book && mdbook serve
docs-clean:
@echo "Cleaning compiled documentation artifacts…"
cd docs/book && mdbook clean
@echo "✅ Finished cleaning docs."