-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
126 lines (108 loc) · 4.17 KB
/
Makefile
File metadata and controls
126 lines (108 loc) · 4.17 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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
SHELL := /usr/bin/env bash
BUILD_DIR := $(CURDIR)/build
BUILD_OUTPUT := $(BUILD_DIR)/ginkgo-cli
LSP_OUTPUT := $(BUILD_DIR)/ginkgo-lsp
BIN_SYMLINK := $(HOME)/.local/bin/ginkgo-cli
BIN_DAEMON_SYMLINK := $(HOME)/.local/bin/ginkgod
LSP_SYMLINK := $(HOME)/.local/bin/ginkgo-lsp
SERVICE_DIR := $(HOME)/.config/systemd/user
SERVICE_FILE := $(CURDIR)/systemd/ginkgo.dev.service
# --- Docs / man ---
PREFIX ?= $(HOME)/.local
MANPREFIX ?= $(PREFIX)/share/man
MANDIR := $(MANPREFIX)/man1
DOCDIR := $(CURDIR)/docs
MARKDOWNDIR := $(DOCDIR)/markdown
MANOUT := $(DOCDIR)/man
GO_TAGS ?=
.PHONY: build lsp install-binary install-service reload-service run dev setup-precommit \
docs install-man uninstall-man install uninstall
# Generate Markdown + man pages from cmd/ginkgo-cli/doc_gen.go (build-tagged //go:build ignore)
docs:
mkdir -p "$(MARKDOWNDIR)" "$(MANOUT)"
@if ! go list -m -f '{{.Path}}' github.com/cpuguy83/go-md2man/v2 >/dev/null 2>&1; then \
go get github.com/cpuguy83/go-md2man/v2@latest && go mod tidy; \
fi
go run ./cmd/ginkgo-cli/doc_gen.go
@echo "Docs generated into $(MARKDOWNDIR) and $(MANOUT)"
build:
mkdir -p $(BUILD_DIR)
@if [ -n "$(GO_TAGS)" ]; then \
go build -tags '$(GO_TAGS)' -o $(BUILD_OUTPUT) ./cmd/ginkgo-cli; \
else \
go build -o $(BUILD_OUTPUT) ./cmd/ginkgo-cli; \
fi
lsp:
mkdir -p $(BUILD_DIR)
@if [ -n "$(GO_TAGS)" ]; then \
go build -tags '$(GO_TAGS)' -o $(LSP_OUTPUT) ./cmd/ginkgo-lsp; \
else \
go build -o $(LSP_OUTPUT) ./cmd/ginkgo-lsp; \
fi
install-man: docs
mkdir -p "$(MANDIR)"
install -m644 $(MANOUT)/*.1 "$(MANDIR)/"
gzip -f "$(MANDIR)"/*.1
-@command -v mandb >/dev/null 2>&1 && mandb -q || true
@echo "Man pages installed to $(MANDIR)"
uninstall-man:
@rm -f "$(MANDIR)"/ginkgo-cli*.1.gz || true
@echo "Removed man pages from $(MANDIR)"
install-binary:
@echo "Creating $(HOME)/.local/bin if it doesn't exist..."
mkdir -p $(HOME)/.local/bin
@echo "Symlinking binary from $(BUILD_OUTPUT) to $(BIN_SYMLINK)..."
ln -sf $(BUILD_OUTPUT) $(BIN_SYMLINK)
@echo "Symlinking binary from $(BUILD_OUTPUT) to $(BIN_DAEMON_SYMLINK)..."
ln -sf $(BUILD_OUTPUT) $(BIN_DAEMON_SYMLINK)
@echo "Symlinking binary from $(LSP_OUTPUT) to $(LSP_SYMLINK)..."
ln -sf $(LSP_OUTPUT) $(LSP_SYMLINK)
@echo "Binary symlinked to $(BIN_SYMLINK)"
@echo "Binary symlinked to $(BIN_DAEMON_SYMLINK)"
@echo "Binary symlinked to $(LSP_SYMLINK)"
install-service:
@echo "Creating systemd user service directory..."
mkdir -p $(SERVICE_DIR)
@echo "Symlinking service file..."
ln -sf $(SERVICE_FILE) $(SERVICE_DIR)/ginkgo.service
@echo "Service file symlinked to $(SERVICE_DIR)/ginkgo.service"
reload-service:
@echo "Reloading systemd user daemon..."
systemctl --user daemon-reload
@echo "Restarting ginkgo service..."
systemctl --user restart ginkgo.service
# one-shot local install: binary + man
install: build lsp install-binary install-man
uninstall: uninstall-man
@echo "Removing binary symlinks..."
@rm -f $(BIN_SYMLINK) $(BIN_DAEMON_SYMLINK)
@echo "Removing systemd user service symlink..."
@rm -f $(SERVICE_DIR)/ginkgo.service
@echo "Reloading systemd user daemon..."
-@command -v systemctl >/dev/null 2>&1 && systemctl --user daemon-reload || true
@echo "Uninstall complete"
run: build lsp install-binary install-service reload-service
dev: run
setup-precommit:
@if command -v pre-commit >/dev/null 2>&1; then \
echo "pre-commit already installed."; \
elif command -v pacman >/dev/null 2>&1; then \
echo "Installing pre-commit via pacman..."; \
sudo pacman -S --needed --noconfirm pre-commit; \
elif command -v apt-get >/dev/null 2>&1; then \
echo "Installing pre-commit via apt..."; \
sudo apt-get update && sudo apt-get install -y pre-commit; \
elif command -v brew >/dev/null 2>&1; then \
echo "Installing pre-commit via Homebrew..."; \
brew install pre-commit; \
else \
echo "No supported package manager found, falling back to pip..."; \
pip install --user pre-commit; \
fi
pre-commit install
# --- Protobuf ---
.PHONY: proto
proto:
@command -v protoc >/dev/null 2>&1 || { echo "protoc not found"; exit 1; }
@command -v protoc-gen-go >/dev/null 2>&1 || { echo "protoc-gen-go not found"; exit 1; }
protoc --go_out=paths=source_relative:. internal/ipc/pb/ipc.proto