-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakefile
More file actions
65 lines (48 loc) · 1.63 KB
/
Copy pathMakefile
File metadata and controls
65 lines (48 loc) · 1.63 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
BIN := gh-actions-lock
EXT_NAME := gh-actions-lock
# Honor XDG_DATA_HOME so this matches where gh actually resolves its data
# dir; fall back to the documented default when it's unset.
XDG_DATA_HOME ?= $(HOME)/.local/share
EXT_DIR := $(XDG_DATA_HOME)/gh/extensions/$(EXT_NAME)
RUBY := $(shell command -v /opt/homebrew/opt/ruby/bin/ruby 2>/dev/null || echo ruby)
.PHONY: build test test-release vet fmt fmt-check test-integration test-shell test-live test-smoke test-stub test-real install reinstall uninstall
build:
go build -o $(BIN) ./cmd/gh-actions-lock
test: test-release
go test -race -count=1 ./...
test-release:
script/release-test
vet:
go vet ./...
fmt:
gofmt -w .
# Mirrors the CI gofmt gate: fails (non-zero) if anything is unformatted.
fmt-check:
@unformatted="$$(gofmt -l .)"; \
if [ -n "$$unformatted" ]; then \
echo "These files are not gofmt-clean:"; \
echo "$$unformatted"; \
exit 1; \
fi
test-integration: build
$(RUBY) test/integration/run.rb
test-shell: build
$(RUBY) test/integration/run.rb --shell
test-live: build
$(RUBY) test/integration/run.rb --live
test-smoke: build
$(RUBY) test/integration/run.rb --smoke
test-stub: build
$(RUBY) test/integration/run.rb --stub
test-real: build
$(RUBY) test/integration/run.rb --real
# install/reinstall work from any checkout — main repo or worktree — by
# placing the built binary directly into gh's extension dir. We skip
# `gh extension install .` because it rejects worktree directories whose
# basename doesn't start with `gh-`.
install: build
@mkdir -p $(EXT_DIR)
cp $(BIN) $(EXT_DIR)/$(EXT_NAME)
reinstall: uninstall install
uninstall:
rm -rf $(EXT_DIR)