docs(gazelle): Start migrating Gazelle docs to ReadTheDocs, part 1 of ~5 (#3129)
Part of #3082
First of probably 5 PRs.
+ Set up the Bazel config so that the rules_python root docs can
reference and use the gazelle/docs directory.
+ Replace the original `docs/gazelle.md` with `gazelle/docs/index.md`
+ Migrate general info from `gazelle/README.md` to
`gazelle/docs/index.md`
+ Mechanical updates:
+ Wrap at ~80 chars
+ Use MyST directives and roles.
+ Also a drive-by update to building and running docs _without_
`ibazel`.
diff --git a/docs/BUILD.bazel b/docs/BUILD.bazel
index c1009b7..fdb74f9 100644
--- a/docs/BUILD.bazel
+++ b/docs/BUILD.bazel
@@ -55,7 +55,7 @@
"_*",
"*.inv*",
],
- ),
+ ) + ["//gazelle/docs"],
config = "conf.py",
formats = [
"html",
diff --git a/docs/README.md b/docs/README.md
index 456f1cf..1316d73 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -28,6 +28,20 @@
see the changes. Using ibazel is not required; you can manually run the
equivalent bazel command if desired.
+An alternative to `ibazel` is using `inotify` on Linux systems:
+
+```
+inotifywait --event modify --monitor . --recursive --includei '^.*\.md$' |
+while read -r dir events filename; do bazel build //docs:docs; done;
+```
+
+And lastly, a poor-man's `ibazel` and `inotify` is simply `watch` with
+a reasonable interval like 10s:
+
+```
+watch --interval 10 bazel build //docs:docs
+```
+
### Installing ibazel
The `ibazel` tool can be used to automatically rebuild the docs as you
diff --git a/docs/gazelle.md b/docs/gazelle.md
deleted file mode 100644
index 60b46fa..0000000
--- a/docs/gazelle.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Gazelle plugin
-
-[Gazelle](https://github.com/bazelbuild/bazel-gazelle)
-is a build file generator for Bazel projects. It can create new `BUILD.bazel` files for a project that follows language conventions and update existing build files to include new sources, dependencies, and options.
-
-Bazel may run Gazelle using the Gazelle rule, or Gazelle may be installed and run as a command line tool.
-
-See the documentation for Gazelle with `rules_python` in the {gh-path}`gazelle`
-directory.
diff --git a/docs/index.md b/docs/index.md
index 25b423c..bdc6982 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -99,7 +99,7 @@
Toolchains <toolchains>
coverage
precompiling
-gazelle
+gazelle/docs/index
REPL <repl>
Extending <extending>
Contributing <contributing>
diff --git a/gazelle/README.md b/gazelle/README.md
index 83f341c..df3085b 100644
--- a/gazelle/README.md
+++ b/gazelle/README.md
@@ -1,19 +1,10 @@
# Python Gazelle plugin
-[Gazelle](https://github.com/bazelbuild/bazel-gazelle)
-is a build file generator for Bazel projects. It can create new BUILD.bazel files for a project that follows language conventions, and it can update existing build files to include new sources, dependencies, and options.
+:::{note}
+The gazelle plugin docs are being migrated to our primary documentation on
+ReadTheDocs. Please see https://rules-python.readthedocs.io/gazelle/docs/index.html.
+:::
-Gazelle may be run by Bazel using the gazelle rule, or it may be installed and run as a command line tool.
-
-This directory contains a plugin for
-[Gazelle](https://github.com/bazelbuild/bazel-gazelle)
-that generates BUILD files content for Python code. When Gazelle is run as a command line tool with this plugin, it embeds a Python interpreter resolved during the plugin build.
-The behavior of the plugin is slightly different with different version of the interpreter as the Python `stdlib` changes with every minor version release.
-Distributors of Gazelle binaries should, therefore, build a Gazelle binary for each OS+CPU architecture+Minor Python version combination they are targeting.
-
-The following instructions are for when you use [bzlmod](https://docs.bazel.build/versions/5.0.0/bzlmod.html).
-Please refer to older documentation that includes instructions on how to use Gazelle
-without using bzlmod as your dependency manager.
## Example
@@ -153,18 +144,6 @@
That's it, now you can finally run `bazel run //:gazelle` anytime
you edit Python code, and it should update your `BUILD` files correctly.
-## Usage
-
-Gazelle is non-destructive.
-It will try to leave your edits to BUILD files alone, only making updates to `py_*` targets.
-However it will remove dependencies that appear to be unused, so it's a
-good idea to check in your work before running Gazelle so you can easily
-revert any changes it made.
-
-The rules_python extension assumes some conventions about your Python code.
-These are noted below, and might require changes to your existing code.
-
-Note that the `gazelle` program has multiple commands. At present, only the `update` command (the default) does anything for Python code.
### Directives
diff --git a/gazelle/docs/BUILD.bazel b/gazelle/docs/BUILD.bazel
new file mode 100644
index 0000000..7c6b6fd
--- /dev/null
+++ b/gazelle/docs/BUILD.bazel
@@ -0,0 +1,5 @@
+filegroup(
+ name = "docs",
+ srcs = glob(["*.md"]),
+ visibility = ["//visibility:public"],
+)
diff --git a/gazelle/docs/index.md b/gazelle/docs/index.md
new file mode 100644
index 0000000..ea20e9c
--- /dev/null
+++ b/gazelle/docs/index.md
@@ -0,0 +1,45 @@
+# Gazelle Plugin
+
+[Gazelle][gazelle] is a build file generator for Bazel projects. It can
+create new `BUILD` or `BUILD.bazel` files for a project that
+follows language conventions and update existing build files to include new
+sources, dependencies, and options.
+
+[gazelle]: https://github.com/bazel-contrib/bazel-gazelle
+
+Bazel may run Gazelle using the Gazelle rule, or Gazelle may be installed and run
+as a command line tool.
+
+The {gh-path}`gazelle` directory contains a plugin for Gazelle
+that generates `BUILD` files content for Python code. When Gazelle is
+run as a command line tool with this plugin, it embeds a Python interpreter
+resolved during the plugin build. The behavior of the plugin is slightly
+different with different version of the interpreter as the Python
+`stdlib` changes with every minor version release. Distributors of Gazelle
+binaries should, therefore, build a Gazelle binary for each OS+CPU
+architecture+Minor Python version combination they are targeting.
+
+:::{note}
+These instructions are for when you use [bzlmod][bzlmod]. Please refer to
+older documentation that includes instructions on how to use Gazelle
+without using bzlmod as your dependency manager.
+:::
+
+[bzlmod]: https://bazel.build/external/module
+
+Gazelle is non-destructive. It will try to leave your edits to `BUILD`
+files alone, only making updates to `py_*` targets. However it **will
+remove** dependencies that appear to be unused, so it's a good idea to check
+in your work before running Gazelle so you can easily revert any changes it made.
+
+The `rules_python` extension assumes some conventions about your Python code.
+These are noted in the subsequent documents, and might require changes to your
+existing code.
+
+Note that the `gazelle` program has multiple commands. At present, only
+the `update` command (the default) does anything for Python code.
+
+
+```{toctree}
+:maxdepth: 1
+```