Makefile
1
2build: clean
3 @echo "Building with go..."
4 @mkdir -p result/bin
5 @go build -o result/bin/bug *.go
6.PHONY: build
7
8install: build
9 @cp SKILL.md $(HOME)/.agents/skills/superpowers/working-with-bug/SKILL.md
10 @echo "Installed skill to superpowers/working-with-bug"
11 @echo "Symlinking to /usr/local/bin/bug..."
12 @ln -s result/bin/bug /usr/local/bin/bug 2>/dev/null || true
13
14clean:
15 @# Remove result directory/symlink
16 @rm -rf result
17 @rm -rf bin/
18.PHONY: clean
19
20fmt:
21 go fmt ./...
22.PHONY: fmt
23
24lint:
25 golangci-lint run
26.PHONY: lint
27
28test:
29 go test ./...
30.PHONY: test
31
32# Update flake.nix vendorHash when go.mod/go.sum changes
33# This target depends on go.mod and go.sum, so it will only run when they change
34update-vendor-hash: flake.nix go.mod go.sum
35 @echo "Checking if vendorHash needs update..."
36 @nix build 2>&1 | tee /tmp/nix-build.log; \
37 if grep -q "hash mismatch" /tmp/nix-build.log; then \
38 NEW_HASH=$$(grep "got:" /tmp/nix-build.log | sed 's/.*got: *//' | tail -1); \
39 echo "Updating vendorHash to $$NEW_HASH"; \
40 sed -i "s|vendorHash = \"sha256-[^\"]*\";|vendorHash = \"$$NEW_HASH\";|" flake.nix; \
41 sed -i "s|vendorHash = pkgs.lib.fakeHash;|vendorHash = \"$$NEW_HASH\";|" flake.nix; \
42 elif grep -q "error:.*fakeHash" /tmp/nix-build.log; then \
43 NEW_HASH=$$(grep "got:" /tmp/nix-build.log | sed 's/.*got: *//' | tail -1); \
44 echo "Updating vendorHash to $$NEW_HASH"; \
45 sed -i "s|vendorHash = pkgs.lib.fakeHash;|vendorHash = \"$$NEW_HASH\";|" flake.nix; \
46 else \
47 echo "vendorHash is up to date"; \
48 fi
49 @rm -f /tmp/nix-build.log
50 @touch update-vendor-hash
51.PHONY: update-vendor-hash
52
53# Update flake.lock when flake.nix inputs change
54update-flake-lock: flake.nix
55 nix flake lock
56 touch update-flake-lock
57.PHONY: update-flake-lock
58
59# Update both vendor hash and flake lock
60update-flake: update-vendor-hash update-flake-lock
61 @echo "Flake updated successfully"
62.PHONY: update-flake