Shorebird 🐦
Home of the Shorebird Tools
Getting Started
Visit https://docs.shorebird.dev to get started.
Packages
This repository is a monorepo containing the following packages:
Package | Description |
---|---|
shorebird_cli | Command-line which allows developers to interact with various Shorebird services |
shorebird_code_push_client | Dart library which allows Dart applications to interact with the ShoreBird CodePush API |
shorebird_code_push_protocol | Dart library which contains common interfaces used by Shorebird CodePush |
cutler | A tool for managing Flutter forks |
discord_gcp_alerts | Dart server which forwards GCP alerts to Discord |
jwt | Dart library for verifying Json Web Tokens |
redis_client | Dart library for interacting with Redis |
scoped | A simple dependency injection library built on Zones |
For more information, please refer to the documentation for each package.
Contributing
If you're interested in contributing, please join us on Discord.
Environment setup
Working on Shorebird requires Dart and Rust.
Once both are installed, ./scripts/bootstrap.sh
will run pub get
all
packages in the repository.
Running tests
We don't yet have a script to run tests locally. For now, we recommend using
very_good test -r
in the packages directory to run all shorebird tests.
(If you run it in the root, it will find packages in bin/cache/flutter and try to run tests there, some of which will fail.)
To generate a coverage report install lcov
:
brew install lcov
Then run tests with the --coverage
flag:
very_good test -r --coverage
genhtml coverage/lcov.info -o coverage
You can view the generated coverage report via:
open coverage/index.html
Tracking coverage
The following command will generate a coverage report for the Dart packages:
dart test --coverage=coverage && dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --check-ignore
Coverage reports are uploaded to Codecov.
License
Shorebird projects are licensed for use under either Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0) MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.
See our license philosophy for more information on why we license files this way: https://github.com/shorebirdtech/handbook/blob/main/engineering.md#licensing-philosophy