First of all, thank you for taking the time to contribute! 🎉👍 Before you do, please carefully read this guide.
Very Good CLI allows you to generate scalable templates and use helpful commands. These functionalities have been decomposed into different repositories and packages.
Templates have their own repositories, if you want to contribute to them please refer to their repositories:
- Dart CLI
- Dart Package
- Docs Site
- Flame Game
- Flutter Starter App (Very Good Core)
- Flutter Package
- Flutter Plugin
- Flutter Wear OS App
If there are additional templates you'd like to see, open an issue and tell us!
💡 Note: Very Good CLI's completion functionality is powered by CLI Completion and its test command optimization is powered by test optimizer. If you want to contribute to either of those, please refer to their respective CONTRIBUTING files.
We highly recommend creating an issue if you have found a bug, want to suggest a feature, or recommend a change. Please do not immediately open a pull request. Opening an issue first allows us to reach an agreement on a fix before you put significant effort into a pull request.
When reporting a bug, please use the built-in Bug Report template and provide as much information as possible including detailed reproduction steps. Once one of the package maintainers has reviewed the issue and we reach an agreement on the fix, open a pull request.
To develop for Very Good CLI you will need to become familiar with Very Good Ventures processes and conventions:
-
Install a valid Flutter SDK in your local environment. Compatible Flutter SDK versions with Very Good CLI can be found here, ensure it has a Dart version compatible with Very Good CLI's Dart version constraint.
-
Install all Very Good CLI's dependencies:
# 📂 Get project dependencies recursively with Very Good CLI
very_good packages get -r
# Or get project dependencies manually
dart pub get && cd bricks/test_optimizer && dart pub get && cd ../../
- Run all Very Good CLI tests:
# 🧪 Run Very Good CLI's unit test (from project root)
flutter test -x pull-request-only
If some tests do not pass out of the box, please submit an issue.
- Install your own version of Very Good CLI in your local environment:
# 🚀 Activate your own local version of Very Good CLI
dart pub global activate --source path .
Before creating a Pull Request please:
- Fork the GitHub repository and create your branch from
main
:
# 🪵 Branch from `main`
git branch <branch-name>
git checkout <branch-name>
Where <branch-name>
is an appropriate name describing your change.
- Install dependencies:
# 📂 Get project dependencies recursively with Very Good CLI
very_good packages get -r
# Or get project dependencies manually
dart pub get && cd bricks/test_optimizer && dart pub get && cd ../../
-
Ensure you have a meaningful semantic commit message.
-
Add tests! Pull Requests without 100% test coverage will not be merged. If you're unsure on how to do so watch our Testing Fundamentals Course.
-
Ensure the existing test suite passes locally:
# 🧪 Run Very Good CLI's unit test (from project root)
flutter test -x pull-request-only
- Format your code:
# 🧼 Run Dart's formatter
dart format lib test
- Analyze your code:
# 🔍 Run Dart's analyzer
dart analyze --fatal-infos --fatal-warnings .
Some analysis issues may be fixed automatically with:
# Automatically fix analysis issues that have associated automated fixes
dart fix --apply
💡 Note: Our repositories use Very Good Analysis.
-
Create the Pull Request with a meaningful description, linking to the original issue where possible.
-
Verify that all status checks are passing for your Pull Request once they have been approved to run by a maintainer.
💡 Note: While the prerequisites above must be satisfied prior to having your pull request reviewed, the reviewer(s) may ask you to complete additional work, tests, or other changes before your pull request can be accepted.