Skip to content

Commit bf2e6bc

Browse files
committed
Сделал Makefile
Для справки можно выполнить команду make help
1 parent 0caf9fe commit bf2e6bc

File tree

2 files changed

+172
-0
lines changed

2 files changed

+172
-0
lines changed

.swift-version

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
6.0

Makefile

Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
.PHONY: help install format update fastlane
2+
3+
# Цвета ANSI
4+
YELLOW=\033[1;33m
5+
GREEN=\033[1;32m
6+
RED=\033[1;31m
7+
RESET=\033[0m
8+
9+
RUBY_VERSION=3.2.2
10+
11+
help:
12+
@echo ""
13+
@echo "Доступные команды Makefile:"
14+
@echo ""
15+
@echo " make help - Показать это справочное сообщение."
16+
@echo " make install - Проверить и установить все необходимые инструменты и зависимости для проекта:"
17+
@echo " Homebrew, rbenv, Ruby, Bundler, Ruby-гемы (включая fastlane), SwiftFormat."
18+
@echo " make format - Запустить автоматическое форматирование Swift-кода с помощью SwiftFormat."
19+
@echo " make update - Обновить Ruby-зависимости (например, fastlane) до последних версий и обновить Gemfile.lock."
20+
@echo " make fastlane - Запустить fastlane snapshot для генерации скриншотов приложения (использует bundle exec fastlane snapshot)."
21+
@echo ""
22+
@echo "Рекомендуется сначала выполнить 'make install' для установки всех зависимостей."
23+
@echo ""
24+
25+
install:
26+
@printf "$(YELLOW)Проверка наличия Homebrew...$(RESET)\n"
27+
@if ! command -v brew >/dev/null 2>&1; then \
28+
printf "$(YELLOW)Homebrew не установлен.$(RESET)\n"; \
29+
read -p "Установить Homebrew? (да/нет) " answer; \
30+
if echo "$${answer}" | grep -iq "^да$$"; then \
31+
/bin/bash -c "$$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"; \
32+
printf "$(GREEN)Homebrew успешно установлен.$(RESET)\n"; \
33+
else \
34+
printf "$(RED)Невозможно продолжить без Homebrew.$(RESET)\n"; \
35+
exit 1; \
36+
fi \
37+
else \
38+
printf "$(GREEN)Homebrew уже установлен.$(RESET)\n"; \
39+
fi
40+
41+
@printf "$(YELLOW)Проверка наличия rbenv...$(RESET)\n"
42+
@if ! command -v rbenv >/dev/null 2>&1; then \
43+
printf "$(YELLOW)rbenv не установлен.$(RESET)\n"; \
44+
read -p "Установить rbenv? (да/нет) " answer; \
45+
if echo "$${answer}" | grep -iq "^да$$"; then \
46+
brew install rbenv ruby-build; \
47+
printf 'eval "$$(rbenv init -)"\n' >> ~/.bash_profile; \
48+
printf "$(GREEN)rbenv успешно установлен.$(RESET)\n"; \
49+
else \
50+
printf "$(RED)Невозможно продолжить без rbenv.$(RESET)\n"; \
51+
exit 1; \
52+
fi \
53+
else \
54+
printf "$(GREEN)rbenv уже установлен.$(RESET)\n"; \
55+
fi
56+
57+
@printf "$(YELLOW)Проверка наличия Ruby версии $(RUBY_VERSION)...$(RESET)\n"
58+
@if ! rbenv versions | grep -q $(RUBY_VERSION); then \
59+
printf "$(YELLOW)Ruby $(RUBY_VERSION) не установлен.$(RESET)\n"; \
60+
read -p "Установить Ruby $(RUBY_VERSION)? (да/нет) " answer; \
61+
if echo "$${answer}" | grep -iq "^да$$"; then \
62+
rbenv install $(RUBY_VERSION); \
63+
printf "$(GREEN)Ruby $(RUBY_VERSION) успешно установлен.$(RESET)\n"; \
64+
else \
65+
printf "$(RED)Невозможно продолжить без Ruby $(RUBY_VERSION).$(RESET)\n"; \
66+
exit 1; \
67+
fi \
68+
else \
69+
printf "$(GREEN)Ruby $(RUBY_VERSION) уже установлен.$(RESET)\n"; \
70+
fi
71+
72+
@printf "$(YELLOW)Проверка файла .ruby-version...$(RESET)\n"
73+
@if [ ! -f .ruby-version ] || [ "$$(cat .ruby-version)" != "$(RUBY_VERSION)" ]; then \
74+
printf "$(YELLOW)Файл .ruby-version не найден или содержит неверную версию.$(RESET)\n"; \
75+
read -p "Создать/обновить файл .ruby-version с версией $(RUBY_VERSION)? (да/нет) " answer; \
76+
if echo "$${answer}" | grep -iq "^да$$"; then \
77+
echo "$(RUBY_VERSION)" > .ruby-version; \
78+
printf "$(GREEN)Файл .ruby-version обновлён.$(RESET)\n"; \
79+
else \
80+
printf "$(YELLOW)Создание файла .ruby-version пропущено.$(RESET)\n"; \
81+
fi \
82+
else \
83+
printf "$(GREEN)Файл .ruby-version уже корректен.$(RESET)\n"; \
84+
fi
85+
86+
@printf "$(YELLOW)Инициализация rbenv и активация Ruby $(RUBY_VERSION) локально...$(RESET)\n"
87+
@export PATH="$$HOME/.rbenv/bin:$$PATH"; \
88+
eval "$$(rbenv init -)"; \
89+
rbenv local $(RUBY_VERSION); \
90+
rbenv shell $(RUBY_VERSION); \
91+
printf "$(GREEN)Ruby $(RUBY_VERSION) активирован локально для проекта.$(RESET)\n"
92+
93+
@printf "$(YELLOW)Проверка наличия Bundler нужной версии...$(RESET)\n"
94+
@if [ -f Gemfile.lock ]; then \
95+
BUNDLER_VERSION=$$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1 | xargs); \
96+
if ! gem list -i bundler -v "$$BUNDLER_VERSION" >/dev/null 2>&1; then \
97+
printf "$(YELLOW)Bundler версии $$BUNDLER_VERSION не установлен.$(RESET)\n"; \
98+
read -p "Установить Bundler $$BUNDLER_VERSION? (да/нет) " answer; \
99+
if echo "$${answer}" | grep -iq "^да$$"; then \
100+
gem install bundler -v "$$BUNDLER_VERSION"; \
101+
printf "$(GREEN)Bundler версии $$BUNDLER_VERSION успешно установлен.$(RESET)\n"; \
102+
else \
103+
printf "$(RED)Невозможно продолжить без Bundler $$BUNDLER_VERSION.$(RESET)\n"; \
104+
exit 1; \
105+
fi \
106+
else \
107+
printf "$(GREEN)Bundler версии $$BUNDLER_VERSION уже установлен.$(RESET)\n"; \
108+
fi \
109+
else \
110+
printf "$(YELLOW)Файл Gemfile.lock не найден, пропуск проверки версии Bundler.$(RESET)\n"; \
111+
fi
112+
113+
@printf "$(YELLOW)Проверка Ruby-зависимостей из Gemfile...$(RESET)\n"
114+
@if [ -f Gemfile ]; then \
115+
if ! bundle check >/dev/null 2>&1; then \
116+
printf "$(YELLOW)Зависимости не установлены. Выполняется bundle install...$(RESET)\n"; \
117+
bundle install; \
118+
if [ $$? -ne 0 ]; then \
119+
printf "$(RED)Невозможно продолжить без всех Ruby-зависимостей.$(RESET)\n"; \
120+
exit 1; \
121+
fi; \
122+
printf "$(GREEN)Все Ruby-зависимости успешно установлены.$(RESET)\n"; \
123+
else \
124+
printf "$(GREEN)Все Ruby-зависимости уже установлены.$(RESET)\n"; \
125+
fi \
126+
else \
127+
printf "$(YELLOW)Файл Gemfile не найден, пропуск установки Ruby-зависимостей.$(RESET)\n"; \
128+
fi
129+
130+
@printf "$(YELLOW)Проверка наличия SwiftFormat...$(RESET)\n"
131+
@if ! command -v swiftformat >/dev/null 2>&1; then \
132+
printf "$(YELLOW)SwiftFormat не установлен.$(RESET)\n"; \
133+
read -p "Установить SwiftFormat? (да/нет) " answer; \
134+
if echo "$${answer}" | grep -iq "^да$$"; then \
135+
brew install swiftformat; \
136+
printf "$(GREEN)SwiftFormat успешно установлен.$(RESET)\n"; \
137+
else \
138+
printf "$(RED)Невозможно продолжить без SwiftFormat.$(RESET)\n"; \
139+
exit 1; \
140+
fi \
141+
else \
142+
printf "$(GREEN)SwiftFormat уже установлен.$(RESET)\n"; \
143+
fi
144+
145+
format:
146+
@if ! command -v brew >/dev/null 2>&1 || ! command -v swiftformat >/dev/null 2>&1; then \
147+
$(MAKE) install; \
148+
fi; \
149+
if ! command -v brew >/dev/null 2>&1 || ! command -v swiftformat >/dev/null 2>&1; then \
150+
printf "$(RED)Невозможно выполнить команду без нужных зависимостей$(RESET)\n"; \
151+
exit 1; \
152+
fi
153+
@printf "$(YELLOW)Запуск SwiftFormat...$(RESET)\n"
154+
@swiftformat .
155+
156+
fastlane:
157+
@if ! command -v fastlane >/dev/null 2>&1; then \
158+
printf "$(YELLOW)fastlane не найден. Выполняется установка зависимостей...$(RESET)\n"; \
159+
$(MAKE) install; \
160+
fi; \
161+
if ! command -v fastlane >/dev/null 2>&1; then \
162+
printf "$(RED)Невозможно выполнить команду без нужных зависимостей$(RESET)\n"; \
163+
exit 1; \
164+
fi
165+
@printf "$(YELLOW)Запуск fastlane snapshot...$(RESET)\n"
166+
@bundle exec fastlane snapshot
167+
168+
update:
169+
@printf "$(YELLOW)Обновление fastlane и других Ruby-зависимостей...$(RESET)\n"
170+
@bundle update
171+
@printf "$(GREEN)Гемы обновлены. Не забудьте закоммитить новый Gemfile.lock!$(RESET)\n"

0 commit comments

Comments
 (0)