# 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.
/autoninja*                   recipes
/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
