-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
158 lines (130 loc) · 6.48 KB
/
Makefile
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
RED := $(shell tput -Txterm setaf 1)
GREEN := $(shell tput -Txterm setaf 2)
YELLOW := $(shell tput -Txterm setaf 3)
BLUE := $(shell tput -Txterm setaf 4)
MAGENTA := $(shell tput -Txterm setaf 5)
WHITE := $(shell tput -Txterm setaf 7)
RESET := $(shell tput -Txterm sgr0)
BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
CURRENT_PROJECT := TuringExample
# Show help
help:
@echo '${WHITE}Usage:${RESET}'
@echo ' ${RED}make${RESET} ${GREEN}<target>${RESET}'
@echo '${WHITE}Commands:${RESET}'
# help
@echo ' ${BLUE}Show help${RESET}:'
@echo ' ${RED}make${RESET} ${GREEN}help${RESET}'
# init
@echo ' ${BLUE}Initialize the project${RESET}:'
@echo ' ${RED}make${RESET} ${GREEN}init${RESET}'
# lint
@echo ' ${BLUE}Run linter check and fix${RESET}:'
@echo ' ${RED}make${RESET} ${GREEN}lint${RESET}'
# open
@echo ' ${BLUE}Open workspace in XCode${RESET}:'
@echo ' ${RED}make${RESET} ${GREEN}open${RESET}'
# run
@echo ' ${BLUE}Init project and open workspace${RESET}:'
@echo ' ${RED}make${RESET} ${GREEN}run${RESET}'
# build
@echo ' ${BLUE}Build project${RESET}:'
@echo ' ${RED}make${RESET} ${GREEN}build${RESET}'
# tic
@echo ' ${BLUE}Create new ticket branch${RESET}:'
@echo ' ${RED}make${RESET} ${GREEN}tic${RESET} ${YELLOW}t=<TICKET_NUMBER>${RESET}'
# clean
@echo ' ${BLUE}Clean DerivedData directory${RESET}:'
@echo ' ${RED}make${RESET} ${GREEN}clean${RESET}'
# pod
@echo ' ${BLUE}Install and update pods${RESET}:'
@echo ' ${RED}make${RESET} ${GREEN}pod${RESET}'
# git
@echo ' ${BLUE}Make a commit and push to the origin${RESET}:'
@echo ' ${RED}make${RESET} ${GREEN}git${RESET} ${YELLOW}t="text"${RESET} ${MAGENTA}[b="body"]${RESET}'
# Initialize the project
init:
@echo '⏳ ${YELLOW}Initializing $(CURRENT_PROJECT) project:${RESET}'
@echo '⏳ ${YELLOW}Installing xcodegen:${RESET}'
@brew upgrade xcodegen || brew install xcodegen || (echo '${RED}Failed to install xcodegen${RESET}' && exit 1)
@echo '✅ ${GREEN}xcodegen installed successfully${RESET}'
@echo '⏳ ${YELLOW}Executing xcodegen:${RESET}'
@xcodegen || (echo '❌ ${RED}Failed to run xcodegen${RESET}' && exit 1)
@echo '✅ ${GREEN}xcodegen executed successfully${RESET}'
@make pod
@echo '✅ ${GREEN}Project $(CURRENT_PROJECT) initialized successfully${RESET}'
# Run linter check and fix
lint:
@echo '⏳ ${YELLOW}Running Linter:${RESET}'
@echo '⏳ ${YELLOW}Updating swiftlint:${RESET}'
@brew upgrade swiftlint || brew install swiftlint || (echo '❌ ${RED}Failed to install swiftlint${RESET}' && exit 1)
@echo '✅ ${GREEN}Swiftlint updated successfully${RESET}'
@echo '⏳ ${YELLOW}Running swiftlint fix:${RESET}'
@Pods/SwiftLint/swiftlint --fix || (echo '❌ ${RED}Failed to run swiftlint fix${RESET}')
@echo '✅ ${GREEN}Swiftlint fix executed successfully${RESET}'
@echo '⏳ ${YELLOW}Running swiftlint:${RESET}'
@Pods/SwiftLint/swiftlint || (echo '❌ ${RED}Failed to run swiftlint${RESET}')
@echo '✅ ${GREEN}Swiftlint executed successfully${RESET}'
# Open workspace in XCode
open:
@echo '⏳ ${YELLOW}Opening workspace for $(CURRENT_PROJECT):${RESET}'
@open $(CURRENT_PROJECT).xcworkspace || (echo '❌ ${RED}Failed to open $(CURRENT_PROJECT) workspace${RESET}' && exit 1)
@echo '✅ ${GREEN}$(CURRENT_PROJECT) workspace opened successfully${RESET}'
# Init project and open workspace
run:
@make init
@make open
build:
@echo '⏳ ${YELLOW}Building $(CURRENT_PROJECT) project:${RESET}'
@xcodebuild -scheme "$(CURRENT_PROJECT)" -destination 'platform=iOS Simulator,name=iPhone 13 Pro Max' -workspace $(CURRENT_PROJECT).xcworkspace -quiet
@echo '✅ ${GREEN}$(CURRENT_PROJECT) project has been built${RESET}'
# Create new ticket branch
tic:
@echo '⏳ ${YELLOW}Creating new branch [TIC-$t]:${RESET}'
@echo '⏳ ${YELLOW}Fetching:${RESET}'
@git fetch || (echo '❌ ${RED}Failed to fetch${RESET}' && exit 1)
@echo '✅ ${GREEN}Fetched successfully${RESET}'
@echo '⏳ ${YELLOW}Checking out developer branch:${RESET}'
@git checkout dev || (echo '❌ ${RED}Failed to checkout [dev]${RESET}' && exit 1)
@echo '✅ ${GREEN}Developer branch checked out successfully${RESET}'
@echo '⏳ ${YELLOW}Pulling updates:${RESET}'
@git pull || (echo '❌ ${RED}Failed to pull [dev]${RESET}' && exit 1)
@echo '✅ ${GREEN}Updates pulled successfully${RESET}'
@echo '⏳ ${YELLOW}Checking out new ticket branch [TIC-$t]:${RESET}'
@git checkout -b TIC-$t || (git checkout TIC-$t && git pull) || (echo '❌ ${RED}Failed to checkout new branch [TIC-$t]${RESET}' && exit 1)
@echo '✅ ${GREEN}New branch [TIC-$t] created successfully${RESET}'
# Clean DerivedData directory
clean:
@echo '⏳ ${YELLOW}Cleaning cache:${RESET}'
@rm -rf ~/Library/Developer/Xcode/DerivedData/* || (echo '❌ ${RED}Failed to clean cache${RESET}' && exit 1)
@echo '✅ ${GREEN}Cache cleaned successfully${RESET}'
@echo '⏳ ${YELLOW}Removing pods:${RESET}'
@rm -rf Pods || (echo '❌ ${RED}Failed to remove pods${RESET}' && exit 1)
@echo '✅ ${GREEN}Pods removed successfully${RESET}'
@echo '⏳ ${YELLOW}Removing project:${RESET}'
@rm -rf $(CURRENT_PROJECT).xcodeproj || (echo '❌ ${RED}Failed to remove $(CURRENT_PROJECT) project ${RESET}' && exit 1)
@rm -rf $(CURRENT_PROJECT).xcworkspace || (echo '❌ ${RED}Failed to remove $(CURRENT_PROJECT) workspace ${RESET}' && exit 1)
@echo '✅ ${GREEN}Project removed successfully${RESET}'
# Install and update pods
pod:
@echo '⏳ ${YELLOW}Updating Cocoapods:${RESET}'
@brew upgrade cocoapods || brew install cocoapods || (echo '❌ ${RED}Failed to install cocoapods${RESET}' && exit 1)
@echo '✅ ${GREEN}Cocoapods updated successfully${RESET}'
@echo '⏳ ${YELLOW}Installing Pods:${RESET}'
@pod install || (echo '❌ ${RED}Failed to install Pods${RESET}' && exit 1)
@echo '✅ ${GREEN}Pods installed successfully${RESET}'
@echo '⏳ ${YELLOW}Updating pods:${RESET}'
@pod update || (echo '❌ ${RED}Failed to update Pods${RESET}' && exit 1)
@echo '✅ ${GREEN}Pods updated successfully${RESET}'
# Make a commit and push to the origin
git:
@echo '⏳ ${YELLOW}Adding files:${RESET}'
@git add . || (echo '❌ ${RED}Failed to add files${RESET}' && exit 1)
@echo '✅ ${GREEN}Files added successfully${RESET}'
@echo '⏳ ${YELLOW}Committing:${RESET}'
@git commit -m "$t" -m "$b" || (echo '❌ ${RED}Failed to commit${RESET}' && exit 1)
@echo '✅ ${GREEN}Changes commiteted successfully${RESET}'
@echo '⏳ ${YELLOW}Pushing to origin:${RESET}'
@git push --set-upstream origin $(BRANCH) || (echo '❌ ${RED}Failed to push${RESET}' && exit 1)
@echo '✅ ${GREEN}Changes pushed successfully${RESET}'
@echo '✅ ${GREEN}Successfully!${RESET}'