standardize graph output indentation with 2 spaces

Currently, when outputting graphs from Bazel with `bazel query --output=graph`, the indentations for different types of lines are inconsistent:

- `node` is indented with 2 spaces
- edges and vertices are not indented
- labels are indented with 1 space

Example using [rules_go](https://github.com/bazelbuild/rules_go):

```
$ bazel query "deps(//gg/platform:darwin)" --output=graph
digraph mygraph {
  node [shape=box];
"//gg/platform:darwin"
"//gg/platform:darwin" -> "//gg/toolchain:darwin"
"//gg/toolchain:darwin"
"//gg/toolchain:darwin" -> "@bazel_tools//platforms:osx"
"@bazel_tools//platforms:osx"
"@bazel_tools//platforms:osx" -> "@bazel_tools//platforms:os"
"@bazel_tools//platforms:os"
}
Loading: 0 packages loaded
```

It would be nice for the indentations to be present (for edges and vertices), and consistent.

As for the indentation scheme, it seems inconclusive as to which type the language prefers:

- the [DOT Language Spec](https://www.graphviz.org/doc/info/lang.html) does not really specify tabs or spaces, but the examples used either contained no indentation (!) or one with 2 spaces
- the official [examples](https://www.graphviz.org/gallery/) contain samples of no indentation, tabs, or 2 spaces, with tabs being most popular
- the [Wikipedia page](https://en.wikipedia.org/wiki/DOT_(graph_description_language)) uses tabs

I'm using 2 spaces to conform with skylark. This is the result from the same query with this PR:

```plaintext
$ /Users/ricky/workspace/bazel/bazel-bin/src/bazel query "deps(//gg/platform:darwin)" --output=graph
Starting local Bazel server and connecting to it...
DEBUG: /private/var/tmp/_bazel_ricky/5c63e3be3c60ec773878bdf16f25adcc/external/bazel_toolchains/rules/version_check.bzl:45:9:
Current running Bazel is not a release version and one was not defined explicitly in rbe_autoconfig target. Falling back to '0.23.0'
digraph mygraph {
  node [shape=box];
  "//gg/platform:darwin"
  "//gg/platform:darwin" -> "//gg/toolchain:darwin"
  "//gg/toolchain:darwin"
  "//gg/toolchain:darwin" -> "@bazel_tools//platforms:osx"
  "@bazel_tools//platforms:osx"
  "@bazel_tools//platforms:osx" -> "@bazel_tools//platforms:os"
  "@bazel_tools//platforms:os"
}
Loading: 3 packages loaded
```

Closes #8007.

PiperOrigin-RevId: 251296052
2 files changed
tree: b1a4c523ba4fc82fb66156a535379765e3928fa8
  1. .bazelci/
  2. examples/
  3. scripts/
  4. site/
  5. src/
  6. third_party/
  7. tools/
  8. .bazelrc
  9. .gitattributes
  10. .gitignore
  11. AUTHORS
  12. BUILD
  13. CHANGELOG.md
  14. CODEOWNERS
  15. combine_distfiles.py
  16. combine_distfiles_to_tar.sh
  17. compile.sh
  18. CONTRIBUTING.md
  19. CONTRIBUTORS
  20. distdir.bzl
  21. ISSUE_TEMPLATE.md
  22. LICENSE
  23. README.md
  24. WORKSPACE
README.md

Bazel

{Fast, Correct} - Choose two

Build and test software of any size, quickly and reliably.

  • Speed up your builds and tests: Bazel only rebuilds what is necessary. With advanced local and distributed caching, optimized dependency analysis and parallel execution, you get fast and incremental builds.

  • One tool, multiple languages: Build and test Java, C++, Android, iOS, Go, and a wide variety of other language platforms. Bazel runs on Windows, macOS, and Linux.

  • Scalable: Bazel helps you scale your organization, codebase, and continuous integration solution. It handles codebases of any size, in multiple repositories or a huge monorepo.

  • Extensible to your needs: Easily add support for new languages and platforms with Bazel's familiar extension language. Share and re-use language rules written by the growing Bazel community.

Getting Started

Documentation

Contributing to Bazel

See CONTRIBUTING.md

Build status

Bazel is released in ‘Beta’. See the product roadmap to learn about the path toward a stable 1.0 release.