# The `recipes` attribute controls which additional files are included in the
# recipes bundle when running the `//recipes/recipes.py bundle` command. These
# files will also be available to other repos' recipes when they pull in
# depot_tools as a recipe dependency.

# Tools
/*.bat recipes
/*.exe recipes
/*.py  recipes
/*.sh  recipes

# vpython specs
/gsutil.vpython recipes

# Extensionless tools we want and support scripts.
/clang*                       recipes
/depot-tools-auth             recipes
/download_from_google_storage recipes
/fetch                        recipes
/gclient                      recipes
/git*                         recipes
/gn                           recipes
/ninja*                       recipes
/pylint*                      recipes
/repo                         recipes
/roll-dep*                    recipes
/yapf*                        recipes

# Symlinks
/cbuildbot      recipes
/chrome_set_ver recipes
/cros*          recipes

/support/* recipes

# TODO: There are some really junky dependencies in here that we should probably
# move to vpython/cipd.
/third_party/**                     recipes
/third_party/pymox/**              -recipes

/win_toolchain/** recipes

/fetch_configs/*.py recipes

# Some things we never need to include in the bundle
*.diff         -recipes
*LICENSE*      -recipes
*README*       -recipes
.gitattributes -recipes
.gitignore     -recipes
COPYING        -recipes
MANIFEST.in    -recipes
OWNERS         -recipes
PKG-INFO       -recipes
