flutter/dev/tools/gen_defaults
Michael Goderbauer 5491c8c146
Auto-format Framework (#160545)
This auto-formats all *.dart files in the repository outside of the
`engine` subdirectory and enforces that these files stay formatted with
a presubmit check.

**Reviewers:** Please carefully review all the commits except for the
one titled "formatted". The "formatted" commit was auto-generated by
running `dev/tools/format.sh -a -f`. The other commits were hand-crafted
to prepare the repo for the formatting change. I recommend reviewing the
commits one-by-one via the "Commits" tab and avoiding Github's "Files
changed" tab as it will likely slow down your browser because of the
size of this PR.

---------

Co-authored-by: Kate Lovett <katelovett@google.com>
Co-authored-by: LongCatIsLooong <31859944+LongCatIsLooong@users.noreply.github.com>
2024-12-19 20:06:21 +00:00
..
bin Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
data Update tokens to v6.1 (#153722) 2024-09-04 00:20:16 +00:00
generated Introduce new Material 3 Slider shapes (#152237) 2024-11-19 19:10:44 +00:00
lib Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
test Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
dart_test.yaml Really disable shuffling for gen_defaults tests (#142721) 2024-02-01 10:09:07 -08:00
pubspec.yaml Manual pub roll with flutter_tools patch (#160174) 2024-12-16 21:41:54 +00:00
README.md Added missing code block language in docs (#147481) 2024-05-01 14:44:27 +00:00
test.json Improve defaults generation with logging, stats, and token validation (#128244) 2023-06-09 11:28:18 +00:00

Token Defaults Generator

Script that generates component theme data defaults based on token data.

Usage

Run this program from the root of the git repository:

dart dev/tools/gen_defaults/bin/gen_defaults.dart [-v]

This updates generated/used_tokens.csv and the various component theme files.

Templates

There is a template file for every component that needs defaults from the token database. These templates are implemented as subclasses of TokenTemplate. This base class provides some utilities and a structure for adding a new block of generated code to the bottom of a given file.

Templates need to override the generate method to provide the generated code block as a string.

See lib/fab_template.dart for an example that generates defaults for the Floating Action Button.

Tokens

Tokens are stored in JSON files in data/, and are sourced from an internal Google database.

template.dart should provide nearly all useful token resolvers (e.g. color, shape, etc.). For special cases in which one shouldn't be defined, use getToken to get the raw token value. The script, through the various revolvers and getToken, validates tokens, keeps track of which tokens are used, and generates generated/used_tokens.csv.