diff --git a/README.md b/README.md index 1d6250d4f1a53..6327ca2cfc12d 100644 --- a/README.md +++ b/README.md @@ -53,12 +53,12 @@ This article is out of date, but it includes more detailed descriptions and scre Click to see Current Windows Setup Requirements #### Option 1: Automatic Installation from Scratch -This script will ensure a complete ready to execute developer environment. -(nothing is installed or set that is already present unless otherwise prompted) +This script will ensure a complete ready to execute developer environment. +(nothing is installed or set that is already present unless otherwise prompted) 1. Open Powershell as an Administrator 2. Execute: `Set-ExecutionPolicy Bypass -Scope Process -Force` to allow running the script in the process -3. Navigate to the directory you want to clone Selenium in, or the parent directory of an already cloned Selenium repo +3. Navigate to the directory you want to clone Selenium in, or the parent directory of an already cloned Selenium repo 4. Download and execute this script in the powershell terminal: [scripts/dev-environment-setup.ps1]` #### Option 2: Manual Installation @@ -110,7 +110,7 @@ for building and testing Selenium using the Dockerfile in the ## Building -Selenium is built using a common build tool called [Bazel](https://bazel.build/), to +Selenium is built using a common build tool called [Bazel](https://bazel.build/), to allow us to easily manage dependency downloads, generate required binaries, build and release packages, and execute tests; all in a fast, efficient manner. For a more detailed discussion, read Simon Stewart's article on [Building Selenium](https://www.selenium.dev/blog/2023/building-selenium/) @@ -119,12 +119,12 @@ Often we wrap Bazel commands with our custom [Rake](http://rake.rubyforge.org/) The common Bazel commands are: * `bazel build` — evaluates dependencies, compiles source files and generates output files for the specified target. It's used to create executable binaries, libraries, or other artifacts. -* `bazel run` — builds the target and then executes it. +* `bazel run` — builds the target and then executes it. It's typically used for targets that produce executable binaries. * `bazel test` — builds and runs the target in a context with additional testing functionality * `bazel query` — identifies available targets for the provided path. -Each module that can be built is defined in a `BUILD.bazel` file. To execute the module you refer to it starting with a +Each module that can be built is defined in a `BUILD.bazel` file. To execute the module you refer to it starting with a `//`, then include the relative path to the file that defines it, then `:`, then the name of the target. For example, the target to build the Grid is named `executable-grid` and it is defined in the `'selenium/java/src/org/openqa/selenium/grid/BAZEL.build'` file. @@ -164,7 +164,7 @@ view file from the [scripts](scripts) directory. `ij.bazelproject` for Mac/Linux #### Linting We also use Google Java Format for linting, so using the Google Java Formatter Plugin is useful; -there are a few steps to get it working, so read their [configuration documentation](https://github.com/google/google-java-format/blob/master/README.md#intellij-jre-config). +there are a few steps to get it working, so read their [configuration documentation](https://github.com/google/google-java-format/blob/master/README.md#intellij-jre-config). There is also an auto-formatting script that can be run: `./scripts/format.sh` #### Local Installation @@ -208,7 +208,7 @@ If you want to debug code, you can do it via [`debug`](https://github.com/ruby/d bazel-selenium/external/bundle/bin/rdbg -A ``` -If you want to use [RubyMine](https://www.jetbrains.com/ruby/) for development, +If you want to use [RubyMine](https://www.jetbrains.com/ruby/) for development, you can configure it use Bazel artifacts: 1. Open `rb/` as a main project directory. @@ -451,9 +451,9 @@ API documentation can be found here: * [Python](https://seleniumhq.github.io/selenium/docs/api/py/) * [Ruby](https://seleniumhq.github.io/selenium/docs/api/rb/) -To update API documentation for a specific language: `./generate_api_docs.sh ` +To update API documentation for a specific language: `./go :docs` -To update all documentation: `./generate_api_docs.sh all` +To update all documentation: `./go all:docs` Note that JavaScript generation is [currently broken](https://github.com/SeleniumHQ/selenium/issues/10185). @@ -463,7 +463,7 @@ Note that JavaScript generation is [currently broken](https://github.com/Seleniu The full process for doing a release can be found in [the wiki](https://github.com/SeleniumHQ/selenium/wiki/Releasing-Selenium) Releasing is a combination of building and publishing, which often requires coordination of multiple executions -and additional processing. +and additional processing. As discussed in the [Building](#building) section, we use Rake tasks with the `./go` command for these things. These `./go` commands include the `--stamp` argument to provide necessary information about the constructed asset. diff --git a/Rakefile b/Rakefile index 1c23f8acb9316..c439e57f95313 100644 --- a/Rakefile +++ b/Rakefile @@ -711,6 +711,7 @@ namespace :rb do task :docs, [:skip_update] do |_task, arguments| FileUtils.rm_rf('build/docs/api/rb/') Bazel.execute('run', [], '//rb:docs') + FileUtils.mkdir_p('build/docs/api') FileUtils.cp_r('bazel-bin/rb/docs.rb.sh.runfiles/selenium/docs/api/rb/.', 'build/docs/api/rb') unless arguments[:skip_update]