name: stream_video_flutter_workspace repository: https://github.com/GetStream/stream-video-flutter environment: sdk: ">=3.12.0 <4.0.0" flutter: ">=3.44.0" workspace: - dogfooding - packages/stream_video - packages/stream_video_filters - packages/stream_video_flutter - packages/stream_video_flutter/example - packages/stream_video_noise_cancellation - packages/stream_video_noise_cancellation/example - packages/stream_video_push_notification - packages/stream_video_push_notification/example - packages/stream_video_screen_sharing dev_dependencies: lints: ^6.0.0 melos: ^8.1.0 path: ^1.9.0 yaml: ^3.1.3 dependency_overrides: cli_util: ^0.5.1 file_picker: ^12.0.0-beta.5 stream_webrtc_flutter: git: url: https://github.com/GetStream/webrtc-flutter.git ref: 9b6fffaa5fda2652548cafc7d6ec87128409c6bc melos: ignore: - "**/build/**" command: bootstrap: # Environment synced into every package during bootstrap. environment: sdk: ">=3.12.0 <4.0.0" flutter: ">=3.44.0" # Dependency constraints synced into every package that declares them. dependencies: dart_webrtc: ^1.8.2 device_info_plus: ">=12.1.0 <14.0.0" google_fonts: ^8.0.2 package_info_plus: ">=9.0.0 <11.0.0" share_plus: ^13.0.0 stream_chat_flutter: ^10.0.0 stream_webrtc_flutter: ^4.0.1 stream_video: ^1.7.2 stream_video_filters: ^1.7.2 stream_video_flutter: ^1.7.2 stream_video_noise_cancellation: ^1.7.2 stream_video_push_notification: ^1.7.2 stream_video_screen_sharing: ^1.7.2 hooks: # Keep streamVideoVersion in globals.dart in sync with the pubspec version. 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:all: run: melos run analyze && melos run metrics description: Run all 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. analyze:warning: run: | melos exec -c 5 --ignore="*example*" -- \ dart analyze --fatal-warnings . description: | Run `dart analyze` in all packages. Flags all compiler `errors` in the project. analyze:error: run: | melos exec -c 5 --ignore="*example*" -- \ dart analyze --no-fatal-warnings . description: | Run `dart analyze` in all packages. Flags all compiler `errors` in the project. format: # Only format git-tracked Dart files so `dart format` never descends into # build artifacts (e.g. /build/ios/SourcePackages). run: git ls-files '*.dart' | xargs dart format description: | Run `dart format` on all git-tracked Dart files. format:verify: run: git ls-files '*.dart' | xargs dart format --set-exit-if-changed description: | Run `dart format --set-exit-if-changed` on all git-tracked Dart files. metrics: run: | melos exec -c 1 --ignore="*example*" -- \ flutter pub run dart_code_metrics:metrics analyze lib description: | Run `dart_code_metrics` in all packages. - Note: you can also rely on your IDEs Dart Analysis / Issues window. lint:pub: run: | melos exec -c 1 --no-published --no-private --order-dependents -- \ "flutter pub publish -n" description: Dry-run `pub publish` for every publishable package (pre-publish gate). release:pub: run: | melos exec -c 1 --no-published --no-private --order-dependents -- \ "flutter pub publish -f" description: Publish every publishable package to pub.dev, in dependency order. version:update: run: dart run tools/generate_version.dart description: Sync streamVideoVersion in globals.dart and the dogfooding app version with the pubspec version. generate:all: run: melos run generate:dart && melos run generate:flutter description: Build all generated files for Dart & Flutter packages in this project. generate:dart: run: melos exec -c 1 --depends-on="build_runner" --no-flutter -- "dart run build_runner build --delete-conflicting-outputs" description: Build all generated files for Dart packages in this project. generate:flutter: run: melos exec -c 1 --depends-on="build_runner" --flutter -- "flutter pub run build_runner build --delete-conflicting-outputs" description: Build all generated files for Flutter packages in this project. generate:protobuf: run: bash packages/stream_video/generate-protobuf.sh description: Regenerate the SFU protobuf models from GetStream/protocol (requires protoc; set PROTOCOL_REF for a branch other than main). gen-l10n: > melos exec -c 1 --fail-fast --depends-on=flutter_localizations -- \ "flutter gen-l10n && dart format ." 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 test:fixes: run: melos exec -c 4 --fail-fast -- "cd test_fixes && dart fix --compare-to-golden" description: Verify dart fixes for a specific package in this project. packageFilters: flutter: true dirExists: test_fixes 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 build:example:android: run: | cd ./packages/stream_video_flutter/example && flutter build apk --release --verbose description: | Run `flutter build apk` in the example app.