bazel__book/p18_20/cli.md

64 lines
1.5 KiB
Markdown

# Bazel CLI
## Build
Will generate entries in `bazel-bin`, `bazel-out`, `bazel-<module>` and `bazel-testlogs`.
In the p18_20 example: the `good_read.txt` is generated in `bazel-bin`:
it mirrors how a compilation chain would create a binary,
not how to run it.
## Mod
Interacts with the module dependency resolver.
- `bazel mod tidy`: like `go mod tidy`
- `bazel mod explain`: like `go mod why`
- `--verbose_explanations` mode details for `--explain`
```
bazel mod explain gazelle
<root> (modern_build_systems@1.0)
├───gazelle@0.40.0 #
├───rules_go@0.51.0-rc2 In MODULE.bazel
│ └───gazelle@0.40.0 # In MODULE.bazel
└───rules_jvm_external@6.10
└───rules_android@0.6.6
└───gazelle@0.40.0 #
```
## Query
List targets. Like in Go, "..." means "everything". Example:
```
bazel query //...
Starting local Bazel server (9.0.0) and connecting to it...
//sandbox_demo:bad_read
//sandbox_demo:good_read
```
## Run
Executes a generated binary.
For the p18_20 example, it does not work because there is nothing to run.
## Test
It's just a special case of `bazel run`:
- runs tests in sandbox,
- captures the output to logs,
- enforces timeouts,
- runs tests in parallel.
- designed for reproducibility and CI
- caches results
Tests can also be run with `bazel run`:
- directly in the shell, not sandboxed
- has access to envvars
- streams output to terminal
- run non-paralle
- always re-runs
- interactive, can use stdin and debuggers