-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
82 lines (70 loc) · 3.19 KB
/
Makefile
File metadata and controls
82 lines (70 loc) · 3.19 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
# Makefile for wt - Git Worktree Management Tool
.PHONY: help bump-major bump-minor bump-patch bump-beta release install clean test
# Default target
help:
@echo "wt - Git Worktree Management Tool"
@echo ""
@echo "Available targets:"
@echo " help - Show this help message"
@echo " version - Show current version"
@echo " bump-major - Increment major version (X.0.0 -> X+1.0.0)"
@echo " bump-minor - Increment minor version (X.Y.0 -> X.Y+1.0)"
@echo " bump-patch - Increment patch version (X.Y.Z -> X.Y.Z+1)"
@echo " bump-beta - Add beta suffix (X.Y.Z -> X.Y.Z-beta)"
@echo " release - Remove beta suffix for release (X.Y.Z-beta -> X.Y.Z)"
@echo " install - Install wt script to /usr/local/bin"
@echo " clean - Remove temporary files and artifacts"
@echo " test - Run basic tests"
# Version management
version:
@./wt --version
# Extract current version components
CURRENT_MAJOR := $(shell ./wt --version | sed 's/wt version //' | cut -d. -f1)
CURRENT_MINOR := $(shell ./wt --version | sed 's/wt version //' | cut -d. -f2)
CURRENT_PATCH := $(shell ./wt --version | sed 's/wt version //' | cut -d. -f3 | cut -d- -f1)
# Version bumping targets
bump-major:
@echo "Bumping major version: $(CURRENT_MAJOR).$(CURRENT_MINOR).$(CURRENT_PATCH) -> $$(( $(CURRENT_MAJOR) + 1 )).0.0"
@sed -i.bak 's/^WT_VERSION=".*"/WT_VERSION="$$(( $(CURRENT_MAJOR) + 1 )).0.0"/' wt
@rm -f wt.bak
@./wt --version
bump-minor:
@echo "Bumping minor version: $(CURRENT_MAJOR).$(CURRENT_MINOR).$(CURRENT_PATCH) -> $(CURRENT_MAJOR).$$(( $(CURRENT_MINOR) + 1 )).0"
@sed -i.bak 's/^WT_VERSION=".*"/WT_VERSION="$(CURRENT_MAJOR).$$(( $(CURRENT_MINOR) + 1 )).0"/' wt
@rm -f wt.bak
@./wt --version
bump-patch:
@echo "Bumping patch version: $(CURRENT_MAJOR).$(CURRENT_MINOR).$(CURRENT_PATCH) -> $(CURRENT_MAJOR).$(CURRENT_MINOR).$$(( $(CURRENT_PATCH) + 1 ))"
@sed -i.bak 's/^WT_VERSION=".*"/WT_VERSION="$(CURRENT_MAJOR).$(CURRENT_MINOR).$$(( $(CURRENT_PATCH) + 1 ))"/' wt
@rm -f wt.bak
@./wt --version
bump-beta:
@echo "Adding beta suffix: $(CURRENT_MAJOR).$(CURRENT_MINOR).$(CURRENT_PATCH) -> $(CURRENT_MAJOR).$(CURRENT_MINOR).$(CURRENT_PATCH)-beta"
@sed -i.bak 's/^WT_VERSION=".*"/WT_VERSION="$(CURRENT_MAJOR).$(CURRENT_MINOR).$(CURRENT_PATCH)-beta"/' wt
@rm -f wt.bak
@./wt --version
release:
@./wt --version | grep -q "beta" && \
(echo "Removing beta suffix: $(CURRENT_MAJOR).$(CURRENT_MINOR).$(CURRENT_PATCH)-beta -> $(CURRENT_MAJOR).$(CURRENT_MINOR).$(shell echo $(CURRENT_PATCH) | cut -d- -f1)"; \
sed -i.bak 's/^WT_VERSION=".*"/WT_VERSION="$(CURRENT_MAJOR).$(CURRENT_MINOR).$(shell echo $(CURRENT_PATCH) | cut -d- -f1)"/' wt; \
rm -f wt.bak; \
./wt --version) || \
echo "Current version $(CURRENT_MAJOR).$(CURRENT_MINOR).$(CURRENT_PATCH) is not a beta version"
# Installation
install:
@echo "Installing wt to /usr/local/bin..."
@sudo cp wt /usr/local/bin/wt
@echo "Installation complete. Use 'wt' from anywhere."
# Development tasks
clean:
@echo "Cleaning temporary files..."
@rm -f wt.bak
@rm -rf .wt/
@echo "Clean complete."
test:
@echo "Running basic tests..."
@echo "Testing version command..."
@./wt --version
@echo "Testing help message..."
@./wt || true
@echo "Basic tests passed."