Skip to content

Commit 6f904f7

Browse files
authored
Develop 3.10.0 (#348)
* Доработки * Добавил Makefile и обновил версию ruby * Удалил старые файлы - swiftformat будет настраиваться локально - гитхук будет в стандартной папке с хуками * Запустил форматирование * Обновил ридми * Обновил fastlane Выполнил make update * Update Snapfile * Добавил перевод для выбора города * Поправил UI-тест После обновления локализации этот момент пропустил * Обновил скриншоты и ридми Вручную загружать скриншоты для трех девайсов долго, поэтому оставил 1 девайс * Поднял версию Swift до 6.1.0 * Update README.md * Переместил AuthHelper в другой пакет * Перенес пакет дизайн-системы в репозиторий Неудобно вносить правки в отдельный репозиторий дизайн-системы, намного проще держать все в одном месте * Убрал лишние импорты * Перенес легаси-пикер картинок в проект * Форматирование * Перенес пакет с картой в проект * Убрал предупреждение * Перенес пакет для кэширования картинок в проект * Update README.md * Обновляю настройки проекта - Удалил пустую папку Frameworks - Поменял настройку для PreviewContent - раньше было в Build Settings, перенес в General * Убрал лишнюю настройку * Доработал фильтры (#340) * Доработка фильтров площадок * Доработал фильтры * Доработка списка площадок (#341) Если не нашли площадки с выбранными фильтрами для конкретного города, показываем сообщение и предлагаем изменить фильтр или город * Сохраняем фильтр площадок в AppStorage (#342) И добавил тесты на этот случай * Доработка фильтра по городам (#343) * Перенес кнопку поиска города Теперь она общая для обоих режимов таба с площадками * В процессе - Теперь один массив площадок используется и для карты, и для списка площадок - Добавил тесты и поправил отображение вьюхи про отсутствие площадок при запуске приложения * Поправил предупреждение * Рефактор * Доработка смены региона карты (#344) * Меняем регион карты при смене города * В процессе 1. При появлении экрана с картой проверяем город пользователя в профиле - если город указан, и на карте не выбран другой город, то центрируем карту по городу в профиле 2. При отмене фильтра по городу центрируем карту по городу пользователя в профиле * В процессе * Убрал неактуальную настройку выбранного города * Добавил падение в дебаге Если не смогли определить координаты города, будет краш в дебаге * Удаляем дубликаты в подписке * Переиспользуем существующий код * Обновил нейминг * Не прячем карту никогда И обновил проверку на ненастроенный регион * Доработки - при первом появлении экрана с картой настраиваем регион по сохраненному городу - сообщение про доступ к геолокации показываем только при наличии текста ошибки * Доработал вьюху про отсутствие площадок Если фильтр не настроен, но площадки не найдены - показываем только кнопку для смены города * Поправил обновление региона карты * Форматирование * Убрал лишний код * Перенес создание адреса площадки в SWAddress * В процессе - Доработал формирование адреса новой площадки - убираем дубликаты из названия (если регион/город/район совпадают по названию, например) - При движениях пользователя обновляем координаты для новой площадки и пытаемся найти город в справочнике * В процессе - Для CLGeocoder настроил по дефолту локализацию "ru_RU", чтобы не было проблем при определении города - Мелкий рефактор - Добавил тесты * Обновил нейминг и рефактор * Рефактор * Обновил нейминг: ID -> Id * Рефактор * Доработка Для неавторизованного пользователя показываем на карте Москву по умолчанию * Update README.md * Доработка карты для просмотра площадки (#346) На детальном экране площадки можно нажать на снепшот карты, чтобы открыть полноэкранную карту с этой площадкой * Поправил цвет фона на экране участников * Убрал лишние refreshable (#347) - Если применить `sheet` или разместить `NavigationView` где-то в иерархии до применения `refreshable`, то может вылезать лишний `refreshable` на соответствующих модалках и дочерних экранах - Поправил основные сценарии, чтобы такого не было
1 parent 98cf019 commit 6f904f7

File tree

221 files changed

+6636
-952
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

221 files changed

+6636
-952
lines changed

.ruby-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.1.2
1+
3.2.2

.swift-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
6.0
1+
6.1.0

Gemfile.lock

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,26 @@ GEM
99
public_suffix (>= 2.0.2, < 7.0)
1010
artifactory (3.0.17)
1111
atomos (0.1.3)
12-
aws-eventstream (1.3.2)
13-
aws-partitions (1.1104.0)
14-
aws-sdk-core (3.224.0)
12+
aws-eventstream (1.4.0)
13+
aws-partitions (1.1115.0)
14+
aws-sdk-core (3.225.2)
1515
aws-eventstream (~> 1, >= 1.3.0)
1616
aws-partitions (~> 1, >= 1.992.0)
1717
aws-sigv4 (~> 1.9)
1818
base64
1919
jmespath (~> 1, >= 1.6.1)
2020
logger
21-
aws-sdk-kms (1.101.0)
22-
aws-sdk-core (~> 3, >= 3.216.0)
21+
aws-sdk-kms (1.104.0)
22+
aws-sdk-core (~> 3, >= 3.225.0)
2323
aws-sigv4 (~> 1.5)
24-
aws-sdk-s3 (1.186.1)
25-
aws-sdk-core (~> 3, >= 3.216.0)
24+
aws-sdk-s3 (1.189.1)
25+
aws-sdk-core (~> 3, >= 3.225.0)
2626
aws-sdk-kms (~> 1)
2727
aws-sigv4 (~> 1.5)
28-
aws-sigv4 (1.11.0)
28+
aws-sigv4 (1.12.1)
2929
aws-eventstream (~> 1, >= 1.0.2)
3030
babosa (1.0.4)
31-
base64 (0.2.0)
31+
base64 (0.3.0)
3232
claide (1.1.0)
3333
colored (1.2)
3434
colored2 (3.1.2)
@@ -70,7 +70,7 @@ GEM
7070
faraday_middleware (1.2.1)
7171
faraday (~> 1.0)
7272
fastimage (2.4.0)
73-
fastlane (2.227.2)
73+
fastlane (2.228.0)
7474
CFPropertyList (>= 2.3, < 4.0.0)
7575
addressable (>= 2.8, < 3.0.0)
7676
artifactory (~> 3.0)
@@ -157,7 +157,7 @@ GEM
157157
httpclient (2.9.0)
158158
mutex_m
159159
jmespath (1.6.2)
160-
json (2.12.0)
160+
json (2.12.2)
161161
jwt (2.10.1)
162162
base64
163163
logger (1.7.0)
@@ -167,13 +167,13 @@ GEM
167167
multipart-post (2.4.1)
168168
mutex_m (0.3.0)
169169
nanaimo (0.4.0)
170-
naturally (2.2.1)
170+
naturally (2.2.2)
171171
nkf (0.2.0)
172172
optparse (0.6.0)
173173
os (1.1.4)
174174
plist (3.7.2)
175175
public_suffix (6.0.2)
176-
rake (13.2.1)
176+
rake (13.3.0)
177177
representable (3.2.0)
178178
declarative (< 0.1.0)
179179
trailblazer-option (>= 0.1.1, < 0.2.0)

Makefile

Lines changed: 268 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,268 @@
1+
.PHONY: help setup setup_hook setup_snapshot setup_fastlane update update_fastlane update_swiftformat format screenshots
2+
3+
# Цвета и шрифт
4+
YELLOW=\033[1;33m
5+
GREEN=\033[1;32m
6+
RED=\033[1;31m
7+
BOLD=\033[1m
8+
RESET=\033[0m
9+
10+
# Версия Ruby в проекте
11+
RUBY_VERSION=3.2.2
12+
13+
# Версия Swift в проекте
14+
SWIFT_VERSION=6.1.0
15+
16+
## help: Показать это справочное сообщение
17+
help:
18+
@echo "Доступные команды Makefile: \n"
19+
@sed -n 's/^##//p' ${MAKEFILE_LIST} | \
20+
awk -F ':' '{printf " $(BOLD)%s$(RESET):%s\n", $$1, $$2}' BOLD="$(BOLD)" RESET="$(RESET)" | column -t -s ':'
21+
@echo "\nРекомендуется сначала выполнить команду '$(BOLD)make setup$(RESET)'"
22+
23+
## setup: Проверить и установить все необходимые инструменты и зависимости для проекта (Homebrew, rbenv, Ruby, Bundler, fastlane, swiftformat)
24+
setup:
25+
@bash -c '\
26+
set -e; \
27+
printf "$(YELLOW)Проверка наличия Homebrew...$(RESET)\n"; \
28+
if ! command -v brew >/dev/null 2>&1; then \
29+
printf "$(YELLOW)Homebrew не установлен. Устанавливаю...$(RESET)\n"; \
30+
/bin/bash -c "$$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"; \
31+
fi; \
32+
printf "$(GREEN)Homebrew установлен$(RESET)\n"; \
33+
\
34+
printf "$(YELLOW)Проверка наличия rbenv...$(RESET)\n"; \
35+
if ! command -v rbenv >/dev/null 2>&1; then \
36+
printf "$(YELLOW)rbenv не установлен. Устанавливаю...$(RESET)\n"; \
37+
brew install rbenv ruby-build; \
38+
fi; \
39+
printf "$(GREEN)rbenv установлен$(RESET)\n"; \
40+
\
41+
printf "$(YELLOW)Проверка наличия Ruby версии $(RUBY_VERSION)...$(RESET)\n"; \
42+
if ! rbenv versions | grep -q $(RUBY_VERSION); then \
43+
printf "$(YELLOW)Ruby $(RUBY_VERSION) не установлен. Устанавливаю...$(RESET)\n"; \
44+
rbenv install $(RUBY_VERSION); \
45+
fi; \
46+
printf "$(GREEN)Ruby $$(rbenv versions | grep $(RUBY_VERSION))$(RESET)\n"; \
47+
\
48+
printf "$(YELLOW)Проверка содержимого файла .ruby-version...$(RESET)\n"; \
49+
if [ ! -f .ruby-version ] || [ "$$(cat .ruby-version)" != "$(RUBY_VERSION)" ]; then \
50+
printf "$(YELLOW)Файл .ruby-version не найден или содержит неверную версию. Обновляю...$(RESET)\n"; \
51+
echo "$(RUBY_VERSION)" > .ruby-version; \
52+
else \
53+
printf "$(GREEN)Файл .ruby-version корректно настроен$(RESET)\n"; \
54+
fi; \
55+
\
56+
eval "$$(rbenv init -)"; \
57+
rbenv local $(RUBY_VERSION); \
58+
printf "$(GREEN)Ruby активирован локально для проекта$(RESET)\n"; \
59+
\
60+
printf "$(YELLOW)Проверка наличия Bundler нужной версии...$(RESET)\n"; \
61+
BUNDLER_VERSION=""; \
62+
if [ -f Gemfile.lock ]; then \
63+
BUNDLER_VERSION=$$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1 | xargs); \
64+
if [ -z "$$BUNDLER_VERSION" ]; then \
65+
printf "$(RED)Не удалось определить версию Bundler из Gemfile.lock$(RESET)\n"; \
66+
exit 1; \
67+
fi; \
68+
if ! gem list -i bundler -v "$$BUNDLER_VERSION" >/dev/null 2>&1; then \
69+
printf "$(YELLOW)Bundler версии $$BUNDLER_VERSION не установлен. Устанавливаю...$(RESET)\n"; \
70+
gem install bundler -v "$$BUNDLER_VERSION"; \
71+
if [ $$? -ne 0 ]; then \
72+
printf "$(RED)Ошибка установки Bundler версии $$BUNDLER_VERSION$(RESET)\n"; \
73+
exit 1; \
74+
fi; \
75+
else \
76+
printf "$(GREEN)Bundler версии $$BUNDLER_VERSION уже установлен$(RESET)\n"; \
77+
fi; \
78+
else \
79+
printf "$(YELLOW)Файл Gemfile.lock не найден, устанавливаю последнюю версию bundler...$(RESET)\n"; \
80+
gem install bundler; \
81+
fi; \
82+
\
83+
printf "$(YELLOW)Проверка наличия Gemfile...$(RESET)\n"; \
84+
if [ ! -f Gemfile ]; then \
85+
printf "$(YELLOW)Gemfile не найден. Создаю новый Gemfile...$(RESET)\n"; \
86+
bundle init; \
87+
printf "gem '\''fastlane'\''\n" >> Gemfile; \
88+
printf "$(GREEN)Gemfile создан и fastlane добавлен в зависимости$(RESET)\n"; \
89+
else \
90+
printf "$(GREEN)Gemfile уже существует$(RESET)\n"; \
91+
fi; \
92+
\
93+
printf "$(YELLOW)Проверка Ruby-зависимостей из Gemfile...$(RESET)\n"; \
94+
if [ -f Gemfile ]; then \
95+
if ! bundle check >/dev/null 2>&1; then \
96+
printf "$(YELLOW)Зависимости не установлены. Выполняется bundle install...$(RESET)\n"; \
97+
bundle install; \
98+
if [ $$? -ne 0 ]; then \
99+
printf "$(RED)Невозможно продолжить без всех Ruby-зависимостей$(RESET)\n"; \
100+
exit 1; \
101+
fi; \
102+
printf "$(GREEN)Все Ruby-зависимости успешно установлены$(RESET)\n"; \
103+
else \
104+
printf "$(GREEN)Все Ruby-зависимости уже установлены$(RESET)\n"; \
105+
fi; \
106+
else \
107+
printf "$(YELLOW)Файл Gemfile не найден, пропуск установки Ruby-зависимостей$(RESET)\n"; \
108+
fi; \
109+
\
110+
printf "$(YELLOW)Проверка наличия swiftformat...$(RESET)\n"; \
111+
if ! command -v swiftformat >/dev/null 2>&1; then \
112+
printf "$(YELLOW)swiftformat не установлен. Устанавливаю...$(RESET)\n"; \
113+
brew install swiftformat; \
114+
printf "$(GREEN)swiftformat успешно установлен$(RESET)\n"; \
115+
else \
116+
printf "$(GREEN)swiftformat уже установлен$(RESET)\n"; \
117+
fi; \
118+
'
119+
120+
@$(MAKE) setup_hook
121+
@$(MAKE) setup_snapshot
122+
123+
## setup_hook: Установить pre-push git-хук для проверки форматирования Swift-кода
124+
setup_hook:
125+
@HOOK_PATH=".git/hooks/pre-push"; \
126+
if [ -f "$$HOOK_PATH" ] && grep -q "swiftformat" "$$HOOK_PATH"; then \
127+
printf "$(GREEN)pre-push git-хук для проверки форматирования кода уже настроен$(RESET)\n"; \
128+
else \
129+
printf "$(YELLOW)Устанавливаю pre-push git-хук для swiftformat...$(RESET)\n"; \
130+
echo '#!/usr/bin/env bash' > "$$HOOK_PATH"; \
131+
echo 'export PATH="/opt/homebrew/bin:/usr/local/bin:$$PATH"' >> "$$HOOK_PATH"; \
132+
echo '' >> "$$HOOK_PATH"; \
133+
echo 'if ! swiftformat . --lint; then' >> "$$HOOK_PATH"; \
134+
echo ' echo ""' >> "$$HOOK_PATH"; \
135+
echo ' echo "Похоже, есть код, который нужно отформатировать."' >> "$$HOOK_PATH"; \
136+
echo ' echo "Запусти команду: make format"' >> "$$HOOK_PATH"; \
137+
echo ' echo ""' >> "$$HOOK_PATH"; \
138+
echo ' exit 1' >> "$$HOOK_PATH"; \
139+
echo 'else' >> "$$HOOK_PATH"; \
140+
echo ' exit 0' >> "$$HOOK_PATH"; \
141+
echo 'fi' >> "$$HOOK_PATH"; \
142+
chmod +x "$$HOOK_PATH"; \
143+
printf "$(GREEN)pre-push git-хук для swiftformat успешно установлен в .git/hooks$(RESET)\n"; \
144+
fi
145+
146+
## setup_snapshot: Проверить инициализацию fastlane/fastlane snapshot, при необходимости предложить варианты установки
147+
setup_snapshot:
148+
@printf "$(YELLOW)Проверка установки fastlane...$(RESET)\n"
149+
@if [ -d fastlane ] && [ -f fastlane/Fastfile ]; then \
150+
printf "$(GREEN)fastlane уже инициализирован в проекте$(RESET)\n"; \
151+
if [ ! -f fastlane/Snapfile ]; then \
152+
printf "$(YELLOW)Snapfile не найден, выполняется инициализация fastlane snapshot...$(RESET)\n"; \
153+
bundle exec fastlane snapshot init; \
154+
printf "$(GREEN)fastlane snapshot успешно инициализирован$(RESET)\n"; \
155+
else \
156+
printf "$(GREEN)fastlane snapshot уже готов к использованию$(RESET)\n"; \
157+
fi \
158+
else \
159+
printf "$(YELLOW)fastlane не инициализирован в проекте$(RESET)\n"; \
160+
printf "Выберите действие:\n"; \
161+
printf " 1 — Установить только fastlane snapshot (Snapfile, без Fastfile)\n"; \
162+
printf " 2 — Не устанавливать fastlane (вы сможете сделать это вручную)\n"; \
163+
read -p "Ваш выбор (1/2): " choice; \
164+
if [ "$$choice" = "1" ]; then \
165+
if [ ! -f fastlane/Snapfile ]; then \
166+
mkdir -p fastlane; \
167+
bundle exec fastlane snapshot init; \
168+
printf "$(GREEN)fastlane snapshot успешно инициализирован$(RESET)\n"; \
169+
else \
170+
printf "$(GREEN)fastlane snapshot уже готов к использованию$(RESET)\n"; \
171+
fi \
172+
else \
173+
printf "$(YELLOW)Вы можете установить fastlane вручную командой:$(RESET)\n"; \
174+
printf " make setup_fastlane\n"; \
175+
printf "$(YELLOW)После этого можно запустить генерацию скриншотов командой 'make screenshots'$(RESET)\n"; \
176+
fi \
177+
fi
178+
179+
## setup_fastlane: Инициализировать fastlane в проекте (пошаговый процесс)
180+
setup_fastlane:
181+
@bash -c '\
182+
set -e; \
183+
if ! command -v bundler >/dev/null 2>&1 && ! command -v bundle >/dev/null 2>&1; then \
184+
printf "$(YELLOW)Не найден bundler. Запустите команду: make setup$(RESET)\n"; \
185+
exit 1; \
186+
fi; \
187+
if [ ! -d fastlane ] || [ ! -f fastlane/Fastfile ]; then \
188+
printf "$(YELLOW)Инициализация fastlane...$(RESET)\n"; \
189+
eval "$$(rbenv init -)"; \
190+
rbenv shell $(RUBY_VERSION); \
191+
bundle exec fastlane init; \
192+
else \
193+
printf "$(GREEN)fastlane уже инициализирован$(RESET)\n"; \
194+
fi; \
195+
'
196+
197+
## update: Обновить fastlane и swiftformat (вызывает update_bundle и update_swiftformat)
198+
update: update_fastlane update_swiftformat
199+
200+
## update_fastlane: Обновить только fastlane и его зависимости
201+
update_fastlane:
202+
@bash -c '\
203+
set -e; \
204+
printf "$(YELLOW)Проверка наличия обновлений fastlane и его зависимостей...$(RESET)\n"; \
205+
eval "$$(rbenv init -)"; \
206+
rbenv shell $(RUBY_VERSION); \
207+
if bundle outdated fastlane --parseable | grep .; then \
208+
printf "$(YELLOW)Есть обновления для fastlane или его зависимостей, выполняется обновление...$(RESET)\n"; \
209+
bundle update fastlane; \
210+
printf "$(GREEN)fastlane и его зависимости обновлены. Не забудьте закоммитить новый Gemfile.lock!$(RESET)\n"; \
211+
else \
212+
printf "$(GREEN)fastlane и его зависимости уже самые свежие$(RESET)\n"; \
213+
fi; \
214+
'
215+
216+
## update_swiftformat: Обновить только swiftformat через Homebrew
217+
update_swiftformat:
218+
@printf "$(YELLOW)Проверка наличия обновлений swiftformat...$(RESET)\n"
219+
@INSTALLED_VER=$$(brew list --versions swiftformat | awk '{print $$2}'); \
220+
LATEST_VER=$$(brew info swiftformat --json=v1 | grep -m 1 '"versions"' -A 4 | grep '"stable"' | awk -F'"' '{print $$4}'); \
221+
if [ "$$INSTALLED_VER" != "$$LATEST_VER" ]; then \
222+
printf "$(YELLOW)Доступна новая версия swiftformat ($$INSTALLED_VER -> $$LATEST_VER), обновление...$(RESET)\n"; \
223+
brew upgrade swiftformat; \
224+
printf "$(GREEN)swiftformat обновлён до версии $$LATEST_VER$(RESET)\n"; \
225+
else \
226+
printf "$(GREEN)swiftformat уже самой свежей версии ($$INSTALLED_VER)$(RESET)\n"; \
227+
fi
228+
229+
## format: Запустить автоматическое форматирование Swift-кода с помощью swiftformat
230+
format:
231+
@if ! command -v brew >/dev/null 2>&1 || ! command -v swiftformat >/dev/null 2>&1; then \
232+
$(MAKE) setup; \
233+
fi; \
234+
if ! command -v brew >/dev/null 2>&1 || ! command -v swiftformat >/dev/null 2>&1; then \
235+
printf "$(RED)Невозможно выполнить команду без нужных зависимостей$(RESET)\n"; \
236+
exit 1; \
237+
fi
238+
@if [ ! -f .swift-version ]; then \
239+
printf "$(YELLOW)Файл .swift-version не найден. Создаю файл с версией Swift $(SWIFT_VERSION)...$(RESET)\n"; \
240+
echo "$(SWIFT_VERSION)" > .swift-version; \
241+
printf "$(GREEN)Файл .swift-version создан с версией $(SWIFT_VERSION)$(RESET)\n"; \
242+
else \
243+
printf "$(GREEN)Файл .swift-version уже существует$(RESET)\n"; \
244+
fi
245+
@printf "$(YELLOW)Запуск swiftformat...$(RESET)\n"
246+
@swiftformat .
247+
248+
## screenshots: Запустить fastlane snapshot для генерации скриншотов приложения
249+
screenshots:
250+
@bash -c '\
251+
set -e; \
252+
if [ ! -d fastlane ] || [ ! -f fastlane/Fastfile ]; then \
253+
printf "$(YELLOW)fastlane не инициализирован в проекте$(RESET)\n"; \
254+
$(MAKE) setup_snapshot; \
255+
if [ ! -d fastlane ] || [ ! -f fastlane/Fastfile ]; then \
256+
printf "$(RED)Нужно инициализировать fastlane перед использованием$(RESET)\n"; \
257+
exit 1; \
258+
fi; \
259+
fi; \
260+
printf "$(YELLOW)Запуск fastlane snapshot...$(RESET)\n"; \
261+
eval "$$(rbenv init -)"; \
262+
rbenv shell $(RUBY_VERSION); \
263+
bundle exec fastlane snapshot; \
264+
'
265+
266+
.DEFAULT:
267+
@printf "$(RED)Неизвестная команда: 'make $@'\n$(RESET)"
268+
@$(MAKE) help

0 commit comments

Comments
 (0)