# This file consists of rules determining which labels the
# `github-actions` bot should automatically label an issue/PR with.
# The CI that actually applies labels is in `.github/workflows/labeler.yml`.
#
# The main one used is the "if a file changed" rule.
# The format for this rule is:
#
# ```
# $LABEL_NAME:
# - changed-files:
#   - any-glob-to-any-file: $PATH
# ```
#
# where $PATH can be:
#   $DIRECTORY/*
# which means any file changed 1 level deep inside that directory or:
#   $DIRECTORY/**
# which means any file changed within that directory or:
#   $DIRECTORY/$FILE_NAME
# which means a specific file path or:
#   $DIRECTORY/*.$FILE_EXTENSION
# which means any file 1 level deep in that directory with a certain file extension.
#
# For a detailed guide, see: <https://github.com/actions/labeler>.
#
# For a real example:
A-consensus: # This is the tag name
- changed-files: # Any changed file...
  - any-glob-to-any-file: consensus/** # ...within the `consensus/` directory
                                       # will cause the `github-actions` bot
                                       # to add the `A-consensus` tag.

# Cuprate's books.
A-books:
- changed-files:
  - any-glob-to-any-file: books/**

A-book-architecture:
- changed-files:
  - any-glob-to-any-file: books/architecture/**

A-book-protocol:
- changed-files:
  - any-glob-to-any-file: books/protocol/**

A-book-user:
- changed-files:
  - any-glob-to-any-file: books/user/**

# Crate (sub-)directories.
A-binaries:
- changed-files:
  - any-glob-to-any-file: binaries/**

A-cryptonight:
- changed-files:
  - any-glob-to-any-file: cryptonight/**

A-constants:
- changed-files:
  - any-glob-to-any-file: constants/**

A-storage:
- changed-files:
  - any-glob-to-any-file: storage/**

A-helper:
- changed-files:
  - any-glob-to-any-file: helper/**

A-net:
- changed-files:
  - any-glob-to-any-file: net/**

A-p2p:
- changed-files:
  - any-glob-to-any-file: p2p/**

A-pruning:
- changed-files:
  - any-glob-to-any-file: pruning/**

A-test-utils:
- changed-files:
  - any-glob-to-any-file: test-utils/**

A-types:
- changed-files:
  - any-glob-to-any-file: types/**

A-rpc:
- changed-files:
  - any-glob-to-any-file: rpc/**

A-zmq:
- changed-files:
  - any-glob-to-any-file: zmq/**

# CI files.
A-ci:
- changed-files:
  - any-glob-to-any-file: .github/**

# Misc
A-benches:
- changed-files:
  - any-glob-to-any-file: benches/** # Benchmarks

A-dependency:
- changed-files:
  - any-glob-to-any-file: '**/Cargo.toml' # Any Cargo file in the entire repo
  - any-glob-to-any-file: '**/Cargo.lock'

A-workspace:
- changed-files:
  - any-glob-to-any-file: '*' # Any root file change
  - any-glob-to-any-file: misc/**

A-docs:
- changed-files:
  - any-glob-to-any-file: '**/*.md' # Any file in the entire repo ending in `.md`
  # `A-books` label is used for book documentation.