Repository navigation
Expand file tree
/
Copy pathMakefile
More file actions
57 lines (49 loc) · 2.91 KB
/
Copy pathMakefile
File metadata and controls
57 lines (49 loc) · 2.91 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
.PHONY: build release release-tag release-wait release-tap test clean
VERSION ?= $(shell grep '^version' Cargo.toml | head -1 | sed 's/.*"\(.*\)"/\1/')
HOMEBREW_TAP := $(HOME)/self/homebrew-tap
REPO := co42/garmin-cli
build:
cargo build --release
test:
cargo test
clean:
cargo clean
release: release-tag release-wait release-tap
release-tag:
@if [ -z "$(VERSION)" ]; then echo "Could not determine version"; exit 1; fi
@if [ ! -d "$(HOMEBREW_TAP)" ]; then echo "Homebrew tap not found at $(HOMEBREW_TAP)"; exit 1; fi
@if git rev-parse "v$(VERSION)" >/dev/null 2>&1; then echo "Tag v$(VERSION) already exists"; exit 1; fi
@echo "=== Preparing release v$(VERSION) ==="
@sed -i '' 's/^version = ".*"/version = "$(VERSION)"/' Cargo.toml
@cargo generate-lockfile
@git add -A
@git commit -m "chore: release v$(VERSION)" || true
@git tag "v$(VERSION)"
@git push && git push --tags
release-wait:
@echo ""
@echo "=== Waiting for GitHub Actions to build release ==="
@sleep 10
@RUN_ID=$$(gh run list -R $(REPO) --branch v$(VERSION) --limit 1 --json databaseId -q '.[0].databaseId') && \
echo "Watching workflow run $$RUN_ID..." && \
gh run watch $$RUN_ID -R $(REPO) --exit-status || (echo "Release build failed!" && exit 1)
release-tap:
@echo ""
@echo "=== Updating homebrew formula ==="
@SHA_ARM=$$(gh release view v$(VERSION) -R $(REPO) --json assets -q '.assets[] | select(.name | contains("aarch64-apple-darwin")) | .digest' | sed 's/sha256://') && \
SHA_X86_MAC=$$(gh release view v$(VERSION) -R $(REPO) --json assets -q '.assets[] | select(.name | contains("x86_64-apple-darwin")) | .digest' | sed 's/sha256://') && \
SHA_LINUX=$$(gh release view v$(VERSION) -R $(REPO) --json assets -q '.assets[] | select(.name | contains("x86_64-unknown-linux-musl")) | .digest' | sed 's/sha256://') && \
echo "SHA256 aarch64-apple-darwin: $$SHA_ARM" && \
echo "SHA256 x86_64-apple-darwin: $$SHA_X86_MAC" && \
echo "SHA256 x86_64-unknown-linux: $$SHA_LINUX" && \
sed -i '' 's/version ".*"/version "$(VERSION)"/' $(HOMEBREW_TAP)/Formula/garmin.rb && \
sed -i '' 's|garmin-v[0-9.]*-aarch64|garmin-v$(VERSION)-aarch64|g' $(HOMEBREW_TAP)/Formula/garmin.rb && \
sed -i '' 's|garmin-v[0-9.]*-x86_64|garmin-v$(VERSION)-x86_64|g' $(HOMEBREW_TAP)/Formula/garmin.rb && \
sed -i '' 's|download/v[^/]*/garmin|download/v$(VERSION)/garmin|g' $(HOMEBREW_TAP)/Formula/garmin.rb && \
awk -v arm="$$SHA_ARM" -v x86="$$SHA_X86_MAC" -v linux="$$SHA_LINUX" \
'BEGIN{n=0} /sha256/{n++;if(n==1)sub(/sha256 "[^"]*"/,"sha256 \""arm"\"");if(n==2)sub(/sha256 "[^"]*"/,"sha256 \""x86"\"");if(n==3)sub(/sha256 "[^"]*"/,"sha256 \""linux"\"")} {print}' \
$(HOMEBREW_TAP)/Formula/garmin.rb > $(HOMEBREW_TAP)/Formula/garmin.rb.tmp && \
mv $(HOMEBREW_TAP)/Formula/garmin.rb.tmp $(HOMEBREW_TAP)/Formula/garmin.rb
@cd $(HOMEBREW_TAP) && git add -A && git commit -m "garmin $(VERSION)" && git pull --rebase && git push
@echo ""
@echo "=== Release v$(VERSION) complete! ==="