-
Notifications
You must be signed in to change notification settings - Fork 386
Expand file tree
/
Copy pathmelos.yaml
More file actions
253 lines (226 loc) · 9.14 KB
/
Copy pathmelos.yaml
File metadata and controls
253 lines (226 loc) · 9.14 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
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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
name: stream_chat_flutter
repository: https://github.com/GetStream/stream-chat-flutter
packages:
- sample_app
- packages/*
- packages/*/example
categories:
sample_app:
- sample_app
packages:
- packages/*
examples:
- packages/*/example
command:
bootstrap:
# Dart and Flutter environment used in the project.
environment:
sdk: ^3.6.2
# We are not using carat '^' syntax here because flutter don't follow semantic versioning.
flutter: ">=3.27.4"
# List of all the dependencies used in the project.
dependencies:
async: ^2.11.0
cached_network_image: ^3.3.1
chewie: ^1.8.1
collection: ^1.17.2
connectivity_plus: ">=6.0.3 <8.0.0"
cupertino_icons: ^1.0.3
desktop_drop: '>=0.5.0 <0.8.0'
device_info_plus: '>=11.0.0 <13.0.0'
diacritic: ^0.1.5
dio: ^5.4.3+1
drift: ^2.22.1
equatable: ^2.0.5
ezanimation: ^0.6.0
firebase_core: ^3.0.0
firebase_crashlytics: ^4.0.0
firebase_messaging: ^15.0.0
file_picker: ^10.1.2
file_selector: ^1.0.3
flutter_app_badger: ^1.5.0
flutter_local_notifications: ^18.0.1
flutter_markdown: ^0.7.2+1
flutter_portal: ^1.1.4
flutter_secure_storage: ^9.2.2
flutter_slidable: ^3.1.1
flutter_svg: ^2.0.10+1
freezed_annotation: ">=2.4.1 <4.0.0"
gal: ^2.3.1
get_thumbnail_video: ^0.7.3
go_router: ^14.6.2
http_parser: ^4.0.2
image_picker: ^1.1.2
image_size_getter: ^2.3.0
jiffy: ^6.2.1
jose: ^0.3.5+1
json_annotation: ^4.9.0
just_audio: ">=0.9.38 <0.11.0"
logging: ^1.2.0
lottie: ^3.1.2
media_kit: ^1.2.2
media_kit_video: ^2.0.0
meta: ^1.9.1
mime: ^2.0.0
package_info_plus: ">=8.3.0 <10.0.0"
path: ^1.8.3
path_provider: ^2.1.3
photo_manager: ^3.2.0
photo_view: ^0.15.0
provider: ^6.0.5
rate_limiter: ^1.0.0
record: ">=5.2.0 <7.0.0"
responsive_builder: ^0.7.0
rxdart: ^0.28.0
share_plus: ">=11.0.0 <13.0.0"
shimmer: ^3.0.0
sqlite3_flutter_libs: ^0.5.26
stream_chat: ^9.24.0
stream_chat_flutter: ^9.24.0
stream_chat_flutter_core: ^9.24.0
stream_chat_localizations: ^9.24.0
stream_chat_persistence: ^9.24.0
streaming_shared_preferences: ^2.0.0
svg_icon_widget: ^0.0.1
synchronized: ^3.1.0+1
thumblr: ^0.0.4
url_launcher: ^6.3.0
uuid: ^4.4.0
video_player: ^2.8.7
web_socket_channel: ^3.0.1
# List of all the dev_dependencies used in the project.
dev_dependencies:
alchemist: ">=0.11.0 <0.14.0"
build_runner: ^2.4.9
connectivity_plus_platform_interface: ^2.0.0
drift_dev: ^2.22.1
fake_async: ^1.3.1
faker_dart: ^0.2.1
flutter_launcher_icons: ^0.14.2
freezed: ">=2.4.2 <4.0.0"
json_serializable: ^6.7.1
mocktail: ^1.0.0
path: ^1.8.3
path_provider_platform_interface: ^2.0.0
plugin_platform_interface: ^2.0.0
test: ^1.24.6
hooks:
# Updates the version.dart file after bootstrapping with the current version from pubspec.yaml
post: melos run version:update
scripts:
postclean:
run: melos run clean:flutter --no-select
description: Runs "flutter clean" in all Flutter packages
lint:all:
run: melos run analyze && melos run format
description: Run all static analysis checks
analyze:
run: |
melos exec -c 5 --ignore="*example*" -- \
dart analyze --fatal-infos .
description: |
Run `dart analyze` in all packages.
- Note: you can also rely on your IDEs Dart Analysis / Issues window.
# Scoped to packages touched by the current branch (plus their dependents),
# so PR CI only analyses what the PR could have broken. Examples are
# intentionally included — analysing them catches API drift in the sample
# code we ship.
#
# Why `HEAD~1...HEAD`: GitHub's `actions/checkout` checks out the PR's
# auto-generated merge commit (`refs/pull/N/merge`) by default. On that
# commit, `HEAD~1` is the first parent — i.e. the PR's BASE branch tip
# (master, v10, design-refresh, whatever). So `HEAD~1...HEAD` gives the
# PR's own changes regardless of which branch it targets. On `push` events
# `HEAD~1` is just the previous tip, so the same range gives the pushed
# commit's changes. No workflow env plumbing needed.
analyze:changes:
run: melos exec -c 5 --diff="HEAD~1...HEAD" --include-dependents -- "dart analyze --fatal-infos ."
description: Run `dart analyze` in packages changed since HEAD~1.
format:
run: dart format --set-exit-if-changed .
description: |
Run `dart format --set-exit-if-changed .` in all packages.
# Same scoping as `analyze:changes`, same reasoning for including examples.
format:changes:
run: melos exec -c 5 --diff="HEAD~1...HEAD" --include-dependents -- "dart format --set-exit-if-changed ."
description: Run `dart format` in packages changed since HEAD~1.
# Fails on circular package dependencies — cheap defensive check to run
# in CI before bootstrap, since a cycle here would silently break everyone.
lint:cycles:
run: melos list --cycles
description: Fail if any cycle exists in the workspace dependency graph.
lint:pub:
run: melos exec -c 1 --no-published --no-private --order-dependents -- "flutter pub publish -n"
description: Dry run `pub publish` in all packages.
# Mirrors the filter shape of `lint:pub` (no `--include-dependents`); just
# adds diff-scoping. `pub publish --dry-run` validates this package's own
# pubspec/files/metadata and never reads the parent's code, so dependent
# expansion would add CI time without catching anything new. `--no-private`
# filters examples cleanly here because we're not using --include-dependents
# (the filter-bypass quirk only triggers during dependent expansion).
lint:pub:changes:
run: melos exec -c 1 --diff="HEAD~1...HEAD" --no-published --no-private --order-dependents -- "flutter pub publish -n"
description: Dry run `pub publish` in publishable packages changed since HEAD~1.
generate:all:
run: melos run generate:dart && melos run generate:flutter
description: Build all generated files for Dart & Flutter packages in this project.
# `dart run build_runner` works for both Dart and Flutter packages; the
# `flutter pub run` form is deprecated since Flutter 3.7 and slower (it
# warms up the Flutter binary unnecessarily). One script body covers both
# packageFilters splits via the `flutter:` filter.
generate:dart:
exec: dart run build_runner build --delete-conflicting-outputs
packageFilters:
flutter: false
dependsOn: build_runner
description: Build all generated files for Dart packages in this project.
generate:flutter:
exec: dart run build_runner build --delete-conflicting-outputs
packageFilters:
flutter: true
dependsOn: build_runner
description: Build all generated files for Flutter packages in this project.
version:update:
run: dart tools/generate_version.dart
description: Updates the version.dart file in stream_chat package based on pubspec.yaml version.
test:all:
run: melos run test:dart --no-select && melos run test:flutter --no-select
description: Run all Dart & Flutter tests in this project.
test:dart:
run: melos exec -c 1 --fail-fast -- "flutter test --coverage"
description: Run Dart tests for a specific package in this project.
packageFilters:
flutter: false
dirExists: test
test:flutter:
run: melos exec -c 4 --fail-fast -- "flutter test --coverage"
description: Run Flutter tests for a specific package in this project.
packageFilters:
flutter: true
dirExists: test
# Examples are in the workspace (needed for analyze/format coverage) but
# have no tests. `packageFilters` is applied before `--include-dependents`
# in melos, so we can't filter examples out via a filter — they re-enter
# the set through transitive-dependent expansion. The wrapper script does
# the skip per-package after melos has done its math. `--no-pub` is safe
# because the workflow runs `melos bootstrap` first.
test:changes:
run: melos exec -c 4 --fail-fast --diff="HEAD~1...HEAD" --include-dependents -- "bash \$MELOS_ROOT_PATH/.github/workflows/scripts/test-package.sh"
description: Run `flutter test` in packages changed since HEAD~1.
update:goldens:
run: melos exec -c 1 --depends-on="alchemist" -- "flutter test --tags golden --update-goldens"
description: Update golden files for all packages in this project.
clean:flutter:
run: melos exec -c 4 --fail-fast -- "flutter clean"
description: Run Flutter clean for a specific package in this project.
packageFilters:
flutter: true
coverage:ignore-file:
run: |
melos exec -c 5 --fail-fast -- "\$MELOS_ROOT_PATH/.github/workflows/scripts/remove-from-coverage.sh"
description: Removes all the ignored files from the coverage report.
packageFilters:
dirExists: coverage
release:pub:
run: melos exec -c 1 --no-published --no-private --order-dependents -- "flutter pub publish -f"
description: Publish all packages to pub.dev.