Clarify naming of external command files

It was not clear (to me, at least) that non-ruby external commands should not contain a file suffix. Homebrew will ignore a file `cmd/brew-extcmd.sh` instead of printing a warning or registering it as `brew extcmd.sh`
This commit is contained in:
Clay Jensen-Reimann 2019-04-01 09:55:12 -05:00 committed by GitHub
parent db02f93bb3
commit bd593aace2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -18,8 +18,8 @@ An external command `extcmd` implemented as a Ruby command should be named `brew
The command may `Kernel.exit` with a status code if it needs to; if it doesn't explicitly exit then Homebrew will return `0`. The command may `Kernel.exit` with a status code if it needs to; if it doesn't explicitly exit then Homebrew will return `0`.
### Shell scripts ### Other executable scripts
A shell script for a command named `extcmd` should be named `brew-extcmd`. This file will be run via `exec` with some Homebrew variables set as environment variables, and passed any additional command-line arguments. An execuatable script for a command named `extcmd` should be named `brew-extcmd`. The script itself can use any suitable shebang (`#!`) line, so an external script can be written in sh, bash, Ruby, or anything else. Unlike the ruby commands this file must not end with a language-specific suffix (`.sh`, or `.py`). This file will be run via `exec` with some Homebrew variables set as environment variables, and passed any additional command-line arguments.
| Variable | Description | | Variable | Description |
|------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
@ -29,8 +29,6 @@ A shell script for a command named `extcmd` should be named `brew-extcmd`. This
| `HOMEBREW_PREFIX` | Where Homebrew installs software. This is always the grandparent directory of the `brew` executable, `/usr/local` by default. | | `HOMEBREW_PREFIX` | Where Homebrew installs software. This is always the grandparent directory of the `brew` executable, `/usr/local` by default. |
| `HOMEBREW_REPOSITORY` | If installed from a Git clone, the repository directory (i.e. where Homebrews `.git` directory lives). | | `HOMEBREW_REPOSITORY` | If installed from a Git clone, the repository directory (i.e. where Homebrews `.git` directory lives). |
Note that the script itself can use any suitable shebang (`#!`) line, so an external “shell script” can be written for sh, bash, Ruby, or anything else.
## Providing `--help` ## Providing `--help`
All internal and external Homebrew commands can provide styled `--help` output by using lines starting with `#:` (a comment then `:` character in both Bash and Ruby) which are then output by `--help`. All internal and external Homebrew commands can provide styled `--help` output by using lines starting with `#:` (a comment then `:` character in both Bash and Ruby) which are then output by `--help`.