This is a set of utilities used in the flutter/plugins and flutter/packages repositories. It is no longer explictily maintained as a general-purpose tool for multi-package repositories, so your mileage may vary if using it in other repositories.
Note: The commands in tools are designed to run at the root of the repository or <repository-root>/packages/
.
In flutter/plugins, the tool is run from source. In flutter/packages, the published version is used instead. (It is marked as Discontinued since it is no longer maintained as a general-purpose tool, but updates are still published for use in flutter/packages.)
Set up:
cd ./script/tool && dart pub get && cd ../../
Run:
dart run ./script/tool/bin/flutter_plugin_tools.dart <args>
Set up:
dart pub global activate flutter_plugin_tools
Run:
dart pub global run flutter_plugin_tools <args>
Run with --help
for a full list of commands and arguments, but the following shows a number of common commands being run for a specific plugin.
All examples assume running from source; see above for running the published version instead.
Note that the plugins
argument, despite the name, applies to any package. (It will likely be renamed packages
in the future.)
cd <repository root> dart run ./script/tool/bin/flutter_plugin_tools.dart format --packages plugin_name
cd <repository root> dart run ./script/tool/bin/flutter_plugin_tools.dart analyze --packages plugin_name
cd <repository root> dart run ./script/tool/bin/flutter_plugin_tools.dart test --packages plugin_name
cd <repository root> # For iOS: dart run ./script/tool/bin/flutter_plugin_tools.dart xctest --ios --packages plugin_name # For macOS: dart run ./script/tool/bin/flutter_plugin_tools.dart xctest --macos --packages plugin_name
sh cd <path_to_plugins> git checkout <commit_hash_to_publish> dart run ./script/tool/bin/flutter_plugin_tools.dart publish-plugin --package <package>
By default the tool tries to push tags to the upstream
remote, but some additional settings can be configured. Run dart run ./script/tool/bin/flutter_plugin_tools.dart publish-plugin --help
for more usage information.
The tool wraps pub publish
for pushing the package to pub, and then will automatically use git to try to create and push tags. It has some additional safety checking around pub publish
too. By default pub publish
publishes everything, including untracked or uncommitted files in version control. publish-plugin
will first check the status of the local directory and refuse to publish if there are any mismatched files with version control present.
Automated publishing is under development. Follow flutter/flutter#27258 for updates.
For flutter/plugins, just changing the source here is all that's needed.
For changes that are relevant to flutter/packages, you will also need to: